C#操作数据库课件.ppt

上传人:rrsccc 文档编号:10273389 上传时间:2021-05-04 格式:PPT 页数:53 大小:2.66MB
返回 下载 相关 举报
C#操作数据库课件.ppt_第1页
第1页 / 共53页
C#操作数据库课件.ppt_第2页
第2页 / 共53页
C#操作数据库课件.ppt_第3页
第3页 / 共53页
C#操作数据库课件.ppt_第4页
第4页 / 共53页
C#操作数据库课件.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《C#操作数据库课件.ppt》由会员分享,可在线阅读,更多相关《C#操作数据库课件.ppt(53页珍藏版)》请在三一文库上搜索。

1、C#操作数据库,1,数据库设计与开发,江门职业技术学院,C#操作数据库,2,使用C#访问数据库,典型的信息系统包含两部分: 1,用户界面(前台) 2,数据库(后台),如何建立用户界面与数据库的链接,来形成一个简单的信息系统框架?,C#操作数据库,3,ADO.NET 简介,以流的形式从文件中读写数据,少量数据,不适用于,大量数据,C#操作数据库,4,ADO.NET 简介,以流的形式从文件中读写数据,少量数据,不适用于,大量数据,中央数据库,要管理数据库,需要专门的软件应用程序,RDBMS,C#操作数据库,5,ADO.NET 简介,中央数据库,用户需要时,可以随时访问数据,用户计算机向数据库服务器

2、发送请求,客户端,不同的访问方法和技术,ADO .NET,C#操作数据库,6,ADO.NET 简介,.NET Framework,ADO .NET,System.Data 命名空间,以 ActiveX 数据对象 (ADO) 为基础 以 XML(扩展标记语言)为格式传送和接收数据,C#操作数据库,7,ADO.NET 对数据库的访问(1),将数据传递到用户界面时, ADO.NET 采用 XML 格式,数据已缓存,断开式数据结构,C#操作数据库,8,ADO.NET 对数据库的访问(2),对于Insert,Update,Delete 等单向操作,应用程序,数据库,1、用Connection.Open打

3、开数据库,2、用DataAdaptor.Command或者 Command.Execute 执行命令,3、关闭数据库,Insert用InsertCommand Delete 用DeleteCommand Update用UpdateCommand,C#操作数据库,9,ADO.NET 对数据库的访问(3),应用程序,数据库,关闭数据库,1、用Connection .Open建立连接,2、用DataAdaptor.SelectCommand 执行命令,DataAdaptor.Fill,对于Select的双向操作,DataSet,C#操作数据库,10,.NET 数据提供程序 1,ADO.NET,Dat

4、aSet,.NET Framework 数据提供程序,1、SQLClient 2、OLEDB 3、Oracle 4、ODBC,由以下各项组成的集合:,C#操作数据库,11,.NET 数据提供程序 2,客户端,服务器,数据集,2、将数据发送到数据集,A、客户端修改数据集,3、数据集传递给客户端,B、将修改后的数据集传递给服务器,1、客户端从服务器请求数据,1,2,3是从服务器检索数据的过程 A、B是对数据库修改的过程,C#操作数据库,12,.NET 数据提供程序 3,用于 SQL Server 的 .NET Framework 数据提供程序,System.Data.SqlClient 命名空间,

5、仅限于连接 SQL Server 数据库 7.0 或更高版本,C#操作数据库,13,每种 .NET 数据提供程序都是由以下四个对象组成: Connection Command DataAdapter DataReader,C#操作SQLServer数据库的对象,C#操作数据库,14,C#操作SQLServer数据库的步骤,引入命名空间using System.Data.SqlClient。 定义连接串。 定义SqlConnection对象,并使用Open()方法打开对数据库的连接。 定义SqlCommand对象,并指定使用哪个连接对象连接到数据库。 定义SqlCommand 对象的命令类型。

6、定义SqlCommand对象使用何种SQL命令。 使用SQLCommand对象的方法获得数据库中的数据并放入结果集中。 使用SqlDataReader对象的方法将结果集中的数据读取出来加以操作。 关闭数据库连接,即调用SqlConnection 的Close()方法。,C#操作数据库,15,1、为什么使用 Connection,应用程序,数据源,请求数据,Connection,C#操作数据库,16,Connection 主要成员,必须显式关闭连接,C#操作数据库,17,连接数据库步骤,连接数据库的步骤: 1、定义连接字符串,2、创建 Connection 对象,3、打开与数据库的连接,Data

7、 Source=服务器名;Initial Catalog=数据库名; User ID=用户名;Pwd=密码,SqlConnection connection = new SqlConnection(connString);,连接字符串,connection.Open( );,没有用户名和密码,可省略,C#操作数据库,18,示例1 代码分析,/ 数据库连接字符串 string connString = Data Source= . ;Initial Catalog=MySchool;User ID=sa; / 创建 Connection 对象 SqlConnection connection =

8、 new SqlConnection(connString); / 打开数据库连接 connection.Open(); MessageBox.Show(打开数据库连接成功); / 关闭数据库连接 connection.Close(); MessageBox.Show(关闭数据库连接成功);,表示本机,C#操作数据库,19,2、为什么使用 Command,应用程序 打开数据库 处理数据 ,数据源,Connection,Command,执行命令并从数据源中返回结果,C#操作数据库,20,Command 的主要成员,C#操作数据库,21,使用 Command 步骤,使用Command步骤: 1、创

9、建数据库连接 2、定义 SQL 语句 3、创建 Command 对象 4、执行命令,SqlConnection connection = new SqlConnection(connString); string sql = SELECT COUNT(*) FROM Student; connection.Open();/ 打开数据库连接 SqlCommand command = new SqlCommand(sql, connection); int num = (int)command.ExecuteScalar();,执行命令前,必须打开数据库连接!,要进行类型转换!,C#操作数据库,2

10、2,3、 为什么使用 DataSet 对象,应用程序 大量的数据 来自多个数据源,大批量的查询、修改数据怎么办? 想在断开数据库连接的情况下操所数据怎么办?,使用 DataSet 对象,DataSet,数 据 库,C#操作数据库,23,什么是 DataSet 对象,DataSet 数据集 简单理解为一个临时数据库 将数据源的数据保存在内存中 独立于任何数据库,工厂的仓库,车间的 临时仓库,生产线,数据源,DataSet,应用程序,驻留于内存, 临时存储数据,类似,C#操作数据库,24,DataSet 的基本结构1,DataSet,DataTable,DataColumn,DataRow,数据集

11、,数据表的集合,数据表,数据列的集合,数据行的集合,数据列,数据行,C#操作数据库,25,DataSet 的基本结构2,GradeTable,ClassTable,StudentTable,DataTableCollection 数据表集合,DataTable 数据表,DataRowCollection 数据行集合,DataRow 数据行,DataColumnCollection 数据列集合,DataColumn 数据列,C#操作数据库,26,数据集的工作原理,数据集,发送数据,修改数据集,传递数据,提交修改后的数据,请求数据,客户端,C#操作数据库,27,如何创建 DataSet 对象,创建

12、一个 DataSet 可以指定一个数据集的名称 如果不指定名称,则默认被设为NewDataSet,DataSet dataSet = new DataSet();,DataSet dataSet = new DataSet(“MySchool”); /MySchool为数据集名称,DataSet 数据集对象 = new DataSet(数据集的名称字符串);,可选的,C#操作数据库,28,使用 C# 代码创建数据集,数据集实例是由 DataSet 构造函数创建的 数据集的名称是可选的,不需要指定 如果没有指定名称,则以默认名称 NewDataSet 创建数据集,DataSet stuDS =

13、new DataSet(“StudentDetails);,C#操作数据库,29,DataTable、DataColumn和DataRow1,数据集中的数据以 DataTable 对象的形式存储 DataTable 类属于 System.Data 命名空间,C#操作数据库,30,DataTable、DataColumn和DataRow2,C#操作数据库,31,DataTable、DataColumn和DataRow3,DataTable objStuTable = new DataTable(Student);,创建 DataTable 对象的实例,DataSet stuDS = new Da

14、taSet(); DataTable objStuTable = stuDS.Tables.Add(Student);,创建 DataTable 的实例,然后将其添加到数据集的 Tables 集合中,C#操作数据库,32,DataTable、DataColumn和DataRow4,DataColumn 对象定义 DataTable 的列 DataTable 的 Columns 属性含有对 DataColumn 对象的引用,DataTable objStuTable = new DataTable(Student); DataColumn objStuNumber = objStuTable.C

15、olumns.Add ( StuNo ,typeof(Int32); objStuNumber.AllowDBNull = false; objStuNumber.DefaultValue = 12; objStuTable.Columns.Add(StuName,typeof(string); objStuTable.Columns.Add(StuMarks,typeof(Double);,使用多个 DataColumn 对象创建 DataTable,C#操作数据库,33,DataTable、DataColumn和DataRow5,DataRow 对象表示 DataTable 中的实际数据,

16、/定义表结构,为Student表添加学号、姓名、分数三列 DataTable objStuTable = new DataTable(Student); DataColumn objStuNumber = new DataColumn(); objStuNumber.DataType = objStuTable.Columns.Add ( StuNo ,typeof(string); objStuNumber.AllowDBNull = false; objStuNumber.DefaultValue = 12; objStuTable.Columns.Add(StuName,typeof(s

17、tring); objStuTable.Columns.Add(StuMarks,typeof(Double); /向表中填充数据 DataRow objStuRow; objStuRow= objStuTable.NewRow(); objStuRowStuNo=99; objStuRow“StuName”=“王鹰; objStuRowStuMarks=95; objStuTable.Rows.Add(objStuRow);,在 DataTable 对象中新建 DataRow,C#操作数据库,34,定义主键,表中的主键用于对记录进行唯一标识 DataTable 的 PrimaryKey 属性

18、接受含有一个或多个 DataColumn 对象的数组,objStuTable.PrimaryKey = new DataColumnobjStuTable.ColumnsStuNo;,设置单个列为 DataTable 的主键,objStuTable.PrimaryKey = new DataColumn objStuTable.ColumnsStuNo, objStuTable.ColumnsStuName ;,为 DataTable 对象设置复合主键,C#操作数据库,35,DataTable 的约束,Constraint,是对表中数据施加的限制或规则集,决定表中可以存储的数据,用于维护数据的

19、正确性和有效性,约束的类型,ForeignKeyConstraint,UniqueConstraint,C#操作数据库,36,DataView,DataView,用作 DataTable 中存储的数据的表示层,提供对 DataTable 进行排序、筛选和搜索的自定义视图,允许 WinForms 控件进行数据绑定,可用于查看 DataTable 中存储的数据的子集,数据绑定,是为了在控件上显示数据库表中存储的数据,而将应用程序的控件与数据表的行进行绑定的过程,DataView objStuView = new DataView(objStuTable); objStuView.RowFilter

20、 = StuMarks 60; for(int i =0; i objStuView.Count; i+) MessageBox.Show(objStuViewiStuNo.ToString(); ,创建 DataView 并对该视图应用某种筛选器,C#操作数据库,37,4、为什么使用 DataAdapter,如何将数据库的数据放在 DataSet 中?,DataSet 数据集,DataAdapter,数据库,DataSet 数据集,Connection 数据库连接,DataAdapter 数据适配器,数 据 库,C#操作数据库,38,如何填充数据集,使用 DataAdapter 对象填充数据

21、集,DataSet 数据集,使用 Fill() 方法填充 DataSet 中的表,使用 Connection 连接数据源,Connection,数 据 库,DataAdapter 的 Fill() 方法,C#操作数据库,39,填充数据集,SqlDataAdapter 对象名 = new SqlDataAdapter(查询用sql语句, 数据库连接);,创建 SqlDataAdapter 对象,1,DataAdapter对象. Fill(数据集对象, 数据表名称字符串);,填充 DataSet,2,C#操作数据库,40,如何保存 DataSet 中的数据,把数据集中修改过的数据提交到数据源,Da

22、taSet 数据集,数 据 库,dataAdapter.Update(dataSet,Teacher);,DataAdapter 的 Update() 方法,调用前,要先设置更新需要的相关命令 可以使用 SqlCommandBuilder 对象,Connection,C#操作数据库,41,DataAdapter 对象小结,DataAdapter 的主要属性和方法,C#操作数据库,42,SQLDataAdapter,它设计为使用 Microsoft SQL Server 7 或更高版本提供最佳通信 该适配器在数据集和 Microsoft SQL Server 之间起桥梁作用,提供用于保存和检索数

23、据的接口 与 SqlConnection 和 SqlCommand 相互配合使用,SqlConnection objSqlConn = new SqlConnection (SERVER=MYSERVER;database=Students;uid=sa; password=playware); SqlDataAdapter objSqlAdapter = new SqlDataAdapter(SELECT * from Student,objSqlConn); objSqlConn.Open(); DataSet objDS = new DataSet(); objSqlAdapter.Fi

24、ll(objDS,Student);,创建与 SQL Server 数据库的连接, 并用相应的值填充数据集,C#操作数据库,43,5、为什么使用 DataReader,应用程序,毛毛,浙江水专,优秀,毛毛,姓名:,学校:,浙江水专,成绩:,优秀,DataReader,怎样读取数据库的数据?,使用 DataReader 对象,每次读取一行数据,数 据 库,C#操作数据库,44,示例1 代码分析,关键代码回顾:,/ 执行查询 SqlDataReader dataReader = command.ExecuteReader(); string gradeName = ; / 年级名称 / 循环读出所

25、有的年级名,并添加到年级列表框中 while (dataReader.Read() gradeName = (string)dataReader0; cboGrade.Items.Add(gradeName); dataReader.Close();,循环读取数据行 添加到组合框中,C#操作数据库,45,DataReader 的主要成员,DataReader 的主要成员:,C#操作数据库,46,DataReader 使用步骤小结,使用 DataReader 检索数据的步骤: 1、创建 Command 对象 2、调用 ExecuteReader() 创建 DataReader 对象 3、使用 D

26、ataReader 的 Read() 方法逐行读取数据 4、读取某列的数据,(type)dataReader 5、关闭 DataReader 对象,获取某列的值: 方法一:指定列的索引,从0开始 方法二:指定列名,注意:DataReader 使用后必须关闭,C#操作数据库,47,小结,编写控制台程序,从Student表中,读取出所有姓“李”学员的姓名,string sql = SELECT StudentName FROM Student WHERE StudentName LIKE 李%; SqlCommand command = new SqlCommand(sql, connection

27、); connection.Open(); SqlDataReader dataReader = command.ExecuteReader(); Console.WriteLine(查询结果:); while (dataReader.Read() Console.WriteLine(string)dataReaderStudentName); dataReader.Close();,C#操作数据库,48,操作数据,应用程序,毛毛,浙江水专,良好,毛毛,姓名:,学校:,浙江水专,成绩:,良好,ExecuteNonQuery,如何对数据库的数据进行增删改?,使用 ExecuteNonQuery(

28、) 方法,数 据 库,C#操作数据库,49,示例 2 代码分析,关键代码回顾:,/ 创建command对象 SqlCommand command = new SqlCommand(sql, DBHelper.connection); / 打开数据库连接 DBHelper.connection.Open(); / 执行命令 int result = command.ExecuteNonQuery(); ,返回受影响记录的行数,C#操作数据库,50,ExecuteNonQuery()方法小结,该方法执行指定的 sql 语句 返回受影响的行数,使用 ExecuteNonQuery() 的步骤小结:

29、1、创建 Connection 对象 2、定义sql 语句 3、创建 Command 对象 4、执行 ExecuteNonQuery() 方法 5、根据返回的结果进行处理,C#操作数据库,51,private void btnAdd_Click(object sender, EventArgs e) string connStr = ; SqlConnection connection = new SqlConnection(connStr); / 向数据库中添加年级名称的代码 ,小结,向数据库中添加年级 假设数据库连接字符串已知为 connStr 将添加年级名称部分的代码补充完整,strin

30、g connStr = ; SqlConnection connection = new SqlConnection(connStr); / 插入记录用的 SQL 语句 string sql = string.Format( INSERT INTO Grade (GradeName) VALUES (0), txtGradeName.Text); / 创建 Command 对象 SqlCommand command = new SqlCommand(sql, connection); / 打开数据库连接 connection.Open(); / 执行插入命令 int result = comm

31、and.ExecuteNonQuery(); connection.Close(); / 关闭数据库连接,C#操作数据库,52,ADO.NET 小结,数 据 库,.NET 数据提供程序,Connection 对象,Command 对象,DataReader 对象,DataAdapter 对象,内存,DataSet,ExecuteReader(),Read(),Fill(),Update(),ExecuteScalar(),ExecuteNonQuery(),C#操作数据库,53,总结,Connection 对象用于在应用程序和数据库之间建立连接 Command 对象允许向数据库传递请求、检索和操纵数据库中的数据 在 DataSet 对象内表示的数据是数据库的部分或全部的断开式内存副本 DataAdapter 对象用来填充数据集和用更新集到数据库,这样方便了数据库和数据集之间的交互 DataTable 表示一个内存数据表,而 DataColumn 表示 DataTable 中列的结构 DataView 是 DataTable 中存储的数据的表示层 DataReader 对象提供只进、只读和连接式数据访问,并要求使用专用的数据连接,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1