C#操作数据库.ppt_第1页
C#操作数据库.ppt_第2页
C#操作数据库.ppt_第3页
C#操作数据库.ppt_第4页
C#操作数据库.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、work,ADO .NET,System.Data 命名空间,以 ActiveX 数据对象 (ADO) 为基础 以 XML(扩展标记语言)为格式传送和接收数据,ADO.NET 对数据库的访问(1),将数据传递到用户界面时, ADO.NET 采用 XML 格式,数据已缓存,断开式数据结构,ADO.NET 对数据库的访问(2),对于Insert,Update,Delete 等单向操作,应用程序,数据库,1、用Connection.Open打开数据库,2、用DataAdaptor.Command或者 Command.Execute 执行命令,3、关闭数据库,Insert用InsertCommand

3、Delete 用DeleteCommand Update用UpdateCommand,ADO.NET 对数据库的访问(3),应用程序,数据库,关闭数据库,1、用Connection .Open建立连接,2、用DataAdaptor.SelectCommand 执行命令,DataAdaptor.Fill,对于Select的双向操作,DataSet,.NET 数据提供程序 1,ADO.NET,DataSet,.NET Framework 数据提供程序,1、SQLClient 2、OLEDB 3、Oracle 4、ODBC,由以下各项组成的集合:,.NET 数据提供程序 2,客户端,服务器,数据集,

4、2、将数据发送到数据集,A、客户端修改数据集,3、数据集传递给客户端,B、将修改后的数据集传递给服务器,1、客户端从服务器请求数据,1,2,3是从服务器检索数据的过程 A、B是对数据库修改的过程,.NET 数据提供程序 3,用于 SQL Server 的 .NET Framework 数据提供程序,System.Data.SqlClient 命名空间,仅限于连接 SQL Server 数据库 7.0 或更高版本,每种 .NET 数据提供程序都是由以下四个对象组成: Connection Command DataAdapter DataReader,C#操作SQLServer数据库的对象,C#操

5、作SQLServer数据库的步骤,引入命名空间using System.Data.SqlClient。 定义连接串。 定义SqlConnection对象,并使用Open()方法打开对数据库的连接。 定义SqlCommand对象,并指定使用哪个连接对象连接到数据库。 定义SqlCommand 对象的命令类型。 定义SqlCommand对象使用何种SQL命令。 使用SQLCommand对象的方法获得数据库中的数据并放入结果集中。 使用SqlDataReader对象的方法将结果集中的数据读取出来加以操作。 关闭数据库连接,即调用SqlConnection 的Close()方法。,1、为什么使用 Co

6、nnection,应用程序,数据源,请求数据,Connection,Connection 主要成员,必须显式关闭连接,连接数据库步骤,连接数据库的步骤: 1、定义连接字符串,2、创建 Connection 对象,3、打开与数据库的连接,Data Source=服务器名;Initial Catalog=数据库名; User ID=用户名;Pwd=密码,SqlConnection connection = new SqlConnection(connString);,连接字符串,connection.Open( );,没有用户名和密码,可省略,示例1 代码分析,/ 数据库连接字符串 string

7、connString = Data Source= . ;Initial Catalog=MySchool;User ID=sa; / 创建 Connection 对象 SqlConnection connection = new SqlConnection(connString); / 打开数据库连接 connection.Open(); MessageBox.Show(打开数据库连接成功); / 关闭数据库连接 connection.Close(); MessageBox.Show(关闭数据库连接成功);,表示本机,2、为什么使用 Command,应用程序 打开数据库 处理数据 ,数据源,

8、Connection,Command,执行命令并从数据源中返回结果,Command 的主要成员,使用 Command 步骤,使用Command步骤: 1、创建数据库连接 2、定义 SQL 语句 3、创建 Command 对象 4、执行命令,SqlConnection connection = new SqlConnection(connString); string sql = SELECT COUNT(*) FROM Student; connection.Open();/ 打开数据库连接 SqlCommand command = new SqlCommand(sql, connection

9、); int num = (int)command.ExecuteScalar();,执行命令前,必须打开数据库连接!,要进行类型转换!,3、 为什么使用 DataSet 对象,应用程序 大量的数据 来自多个数据源,大批量的查询、修改数据怎么办? 想在断开数据库连接的情况下操所数据怎么办?,使用 DataSet 对象,DataSet,数 据 库,什么是 DataSet 对象,DataSet 数据集 简单理解为一个临时数据库 将数据源的数据保存在内存中 独立于任何数据库,工厂的仓库,车间的 临时仓库,生产线,数据源,DataSet,应用程序,驻留于内存, 临时存储数据,类似,DataSet 的基

10、本结构1,DataSet,DataTable,DataColumn,DataRow,数据集,数据表的集合,数据表,数据列的集合,数据行的集合,数据列,数据行,DataSet 的基本结构2,GradeTable,ClassTable,StudentTable,DataTableCollection 数据表集合,DataTable 数据表,DataRowCollection 数据行集合,DataRow 数据行,DataColumnCollection 数据列集合,DataColumn 数据列,数据集的工作原理,数据集,发送数据,修改数据集,传递数据,提交修改后的数据,请求数据,客户端,如何创建 D

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

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

13、 stuDS.Tables.Add(Student);,创建 DataTable 的实例,然后将其添加到数据集的 Tables 集合中,DataTable、DataColumn和DataRow4,DataColumn 对象定义 DataTable 的列 DataTable 的 Columns 属性含有对 DataColumn 对象的引用,DataTable objStuTable = new DataTable(Student); DataColumn objStuNumber = objStuTable.Columns.Add ( StuNo ,typeof(Int32); objStuNu

14、mber.AllowDBNull = false; objStuNumber.DefaultValue = 12; objStuTable.Columns.Add(StuName,typeof(string); objStuTable.Columns.Add(StuMarks,typeof(Double);,使用多个 DataColumn 对象创建 DataTable,DataTable、DataColumn和DataRow5,DataRow 对象表示 DataTable 中的实际数据,/定义表结构,为Student表添加学号、姓名、分数三列 DataTable objStuTable = n

15、ew 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(string); objStuTable.Columns.Add(StuMarks,typeof(Double

16、); /向表中填充数据 DataRow objStuRow; objStuRow= objStuTable.NewRow(); objStuRowStuNo=99; objStuRow“StuName”=“王鹰; objStuRowStuMarks=95; objStuTable.Rows.Add(objStuRow);,在 DataTable 对象中新建 DataRow,定义主键,表中的主键用于对记录进行唯一标识 DataTable 的 PrimaryKey 属性接受含有一个或多个 DataColumn 对象的数组,objStuTable.PrimaryKey = new DataColum

17、nobjStuTable.ColumnsStuNo;,设置单个列为 DataTable 的主键,objStuTable.PrimaryKey = new DataColumn objStuTable.ColumnsStuNo, objStuTable.ColumnsStuName ;,为 DataTable 对象设置复合主键,DataTable 的约束,Constraint,是对表中数据施加的限制或规则集,决定表中可以存储的数据,用于维护数据的正确性和有效性,约束的类型,ForeignKeyConstraint,UniqueConstraint,DataView,DataView,用作 Dat

18、aTable 中存储的数据的表示层,提供对 DataTable 进行排序、筛选和搜索的自定义视图,允许 WinForms 控件进行数据绑定,可用于查看 DataTable 中存储的数据的子集,数据绑定,是为了在控件上显示数据库表中存储的数据,而将应用程序的控件与数据表的行进行绑定的过程,DataView objStuView = new DataView(objStuTable); objStuView.RowFilter = StuMarks 60; for(int i =0; i objStuView.Count; i+) MessageBox.Show(objStuViewiStuNo.

19、ToString(); ,创建 DataView 并对该视图应用某种筛选器,4、为什么使用 DataAdapter,如何将数据库的数据放在 DataSet 中?,DataSet 数据集,DataAdapter,数据库,DataSet 数据集,Connection 数据库连接,DataAdapter 数据适配器,数 据 库,如何填充数据集,使用 DataAdapter 对象填充数据集,DataSet 数据集,使用 Fill() 方法填充 DataSet 中的表,使用 Connection 连接数据源,Connection,数 据 库,DataAdapter 的 Fill() 方法,填充数据集,S

20、qlDataAdapter 对象名 = new SqlDataAdapter(查询用sql语句, 数据库连接);,创建 SqlDataAdapter 对象,1,DataAdapter对象. Fill(数据集对象, 数据表名称字符串);,填充 DataSet,2,如何保存 DataSet 中的数据,把数据集中修改过的数据提交到数据源,DataSet 数据集,数 据 库,dataAdapter.Update(dataSet,Teacher);,DataAdapter 的 Update() 方法,调用前,要先设置更新需要的相关命令 可以使用 SqlCommandBuilder 对象,Connecti

21、on,DataAdapter 对象小结,DataAdapter 的主要属性和方法,SQLDataAdapter,它设计为使用 Microsoft SQL Server 7 或更高版本提供最佳通信 该适配器在数据集和 Microsoft SQL Server 之间起桥梁作用,提供用于保存和检索数据的接口 与 SqlConnection 和 SqlCommand 相互配合使用,SqlConnection objSqlConn = new SqlConnection (SERVER=MYSERVER;database=Students;uid=sa; password=playware); SqlD

22、ataAdapter objSqlAdapter = new SqlDataAdapter(SELECT * from Student,objSqlConn); objSqlConn.Open(); DataSet objDS = new DataSet(); objSqlAdapter.Fill(objDS,Student);,创建与 SQL Server 数据库的连接, 并用相应的值填充数据集,5、为什么使用 DataReader,应用程序,毛毛,浙江水专,优秀,毛毛,姓名:,学校:,浙江水专,成绩:,优秀,DataReader,怎样读取数据库的数据?,使用 DataReader 对象,每

23、次读取一行数据,数 据 库,示例1 代码分析,关键代码回顾:,/ 执行查询 SqlDataReader dataReader = command.ExecuteReader(); string gradeName = ; / 年级名称 / 循环读出所有的年级名,并添加到年级列表框中 while (dataReader.Read() gradeName = (string)dataReader0; cboGrade.Items.Add(gradeName); dataReader.Close();,循环读取数据行 添加到组合框中,DataReader 的主要成员,DataReader 的主要成员

24、:,DataReader 使用步骤小结,使用 DataReader 检索数据的步骤: 1、创建 Command 对象 2、调用 ExecuteReader() 创建 DataReader 对象 3、使用 DataReader 的 Read() 方法逐行读取数据 4、读取某列的数据,(type)dataReader 5、关闭 DataReader 对象,获取某列的值: 方法一:指定列的索引,从0开始 方法二:指定列名,注意:DataReader 使用后必须关闭,小结,编写控制台程序,从Student表中,读取出所有姓“李”学员的姓名,string sql = SELECT StudentName

25、 FROM Student WHERE StudentName LIKE 李%; SqlCommand command = new SqlCommand(sql, connection); connection.Open(); SqlDataReader dataReader = command.ExecuteReader(); Console.WriteLine(查询结果:); while (dataReader.Read() Console.WriteLine(string)dataReaderStudentName); dataReader.Close();,操作数据,应用程序,毛毛,浙

26、江水专,良好,毛毛,姓名:,学校:,浙江水专,成绩:,良好,ExecuteNonQuery,如何对数据库的数据进行增删改?,使用 ExecuteNonQuery() 方法,数 据 库,示例 2 代码分析,关键代码回顾:,/ 创建command对象 SqlCommand command = new SqlCommand(sql, DBHelper.connection); / 打开数据库连接 DBHelper.connection.Open(); / 执行命令 int result = command.ExecuteNonQuery(); ,返回受影响记录的行数,ExecuteNonQuery()方法小结,该方法执行指定的 sql 语句 返回受影响的行数,使用 ExecuteNonQuery() 的步骤小结: 1、创建 Connection 对象 2、定义sql 语句 3、创建 Command 对象 4、执行 ExecuteNonQuery() 方法 5、根据返回的结果进行处理,private void btnAdd_Click(object sender, EventArgs e) string connStr = ; SqlConnection connection = new SqlCo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论