版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、回顾 .NET framework 中的 ADO.NET 是一组允许应用程序与数据库交互,以便检索和更新信息的类 DataSet 和 .NET 数据提供程序是 ADO.NET 的两个主要组件 每种 .NET 数据提供程序都是由以下四个对象组成: Connection Command DataAdapter DataReader Connection 对象用于建立应用程序与数据库之间的连接 Command 对象允许向数据库传递请求,检索和操纵数据库中的数据 事务处理是一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性第1页/共28页问题 ADO.NET的两个主要
2、组成部分是? ADO.NET中数据提供程序包含哪几个对象? Command返回值有哪几种? 对数据库的操作一般分成哪几个步骤? 事务处理一般分成哪几步骤?举例说明在什么情况下采用事务处理?第2页/共28页目标 理解并使用数据集对象 理解 DataAdapter 对象 理解 DataReader对象第3页/共28页DataSetDataSet是存储从数据库检索到的数据的对象是零个或多个表对象的集合,这些表对象由数据行和列、约束和有关表中数据关系的信息组成不直接与数据库交互既可容纳数据库的数据,也可以容纳非数据库的数据源DataSet 类的层次结构DataSetDataColumnCollecti
3、onDataRowCollectionDataColumnDataRowDataTableCollectionDataTable第4页/共28页DataSetDataTableCollection 包含特定数据集的所有 DataTable 对象DataTable 表示数据集中的一个表DataColumnCollection 表示 DataTable 对象的结构DataRowCollection 表示 DataTable 对象中的实际数据行DataColumn 表示 DataTable 对象中列的结构DataRow 表示 DataTable 对象中的一个数据行DataSet 层次结构中的类第5页
4、/共28页数据集的工作原理客户端服务器将数据发送到数据集客户端修改数据集将数据集传递给客户端将修改后的数据集传递给服务器客户端向服务器请求数据第6页/共28页 数据集的类型数据集的类型类型化数据集非类型化数据集它是一个生成类,继承了基类 DataSet 的所有方法、事件和属性表和列只能以集合的形式公开,而不能用于借助 XML 结构文件派生新类使用类型化数据集访问列string employeeName;employeeName = dsEmployees.Emp0.EmpName;从 dsEmployees 数据集的 Emp 表中第一个记录返回 EmpName 列,然后将其存储在 employ
5、eeName 字符串变量中使用非类型化数据集访问列 string employeeName;employeeName = dsEmployees.TablesEmp.Rows0EmpName;使用 Tables 集合返回 EmpName 列第7页/共28页使用 C# 代码创建数据集 数据集实例是由 DataSet 构造函数创建的 数据集的名称是可选的,不需要指定 如果没有指定名称,则以默认名称 NewDataSet 创建数据集属性说明DataSetName 用于获取或设置当前数据集的名称Tables 用于检索数据集中包含的表集合方法说明Clear清除数据集中包含的所有表的所有行HasChang
6、es 返回一个布尔值,指示数据集是否更改了DataSet empDS = new DataSet(EmployeeDetails);第8页/共28页DataTable、DataColumn和DataRow 数据集中的数据以 DataTable 对象的形式存储 DataTable 类属于 System.Data 命名空间属性说明Columns 表示列的集合或 DataTable 包含的 DataColumnConstraints 表示特定 DataTable 的约束集合DataSet 表示 DataTable 所属的数据集PrimaryKey 表示作为 DataTable 主键的字段或 Data
7、ColumnRows表示行的集合或 DataTable 包含的 DataRowHasChanges 返回一个布尔值,指示数据集是否更改了方法说明AcceptChanges提交对该表所做的所有修改NewRow 添加新的 DataRow事件说明ColumnChanged 修改该列中的值时激发该事件RowChanged 成功编辑行后激发该事件RowDeleted 成功删除行时激发该事件DataTable objStudentTable = new DataTable(Students);创建 DataTable 对象的实例DataSet studentDS = new DataSet();DataT
8、able objStudentTable = studentDS.Tables.Add(Students);创建 DataTable 的实例,然后将其添加到数据集的 Tables 集合中第9页/共28页DataTable、DataColumn和DataRow DataColumn 对象定义 DataTable 的列 DataTable 的 Columns 属性含有对 DataColumn 对象的引用属性属性说明说明AllowDBNull 表示一个值,指示对于该表中的行,此列是否允许表示一个值,指示对于该表中的行,此列是否允许 null 值值ColumnName表示指定表示指定 DataColu
9、mn 的名称的名称DataType 表示指定表示指定 DataColumn 对象中存储的数据类型对象中存储的数据类型DefaultValue 表示新建行时该列的默认值表示新建行时该列的默认值Table表示表示 DataColumn 所属的所属的 DataTable 的名称的名称Unique 表示表示 DataColumn 的值是否必须是唯一的的值是否必须是唯一的DataTable objStudentTable = new DataTable(Students);DataColumn objStudentNumber = objStudentTable.Columns.Add ( Studen
10、tNo ,typeof(Int32);objStudentNumber.AllowDBNull = false; objStudentNumber.DefaultValue = 25; objStudentTable.Columns.Add(StudentName,typeof(Int32);objStudentTable.Columns.Add(StudentMarks,typeof(Double);使用多个 DataColumn 对象创建 DataTable第10页/共28页DataTable、DataColumn和DataRow DataRow 对象表示 DataTable 中的实际数据
11、属性属性说明说明Item表示表示 DataRow 的指定列中存储的值的指定列中存储的值RowState 表示行的当前状态表示行的当前状态Table表示用于创建表示用于创建 DataRow 的的 DataTable 的名称的名称方法方法说明说明AcceptChanges 用于提交自上次调用了用于提交自上次调用了 AcceptChanges 之后对该行所做的所有修改之后对该行所做的所有修改Delete Deletes the DataRow 用于删除用于删除 DataRowRejectChanges 用于拒绝自上次调用了用于拒绝自上次调用了 AcceptChanges 之后对之后对 DataRow
12、 所做的所有修改所做的所有修改/定义表结构,为Students表添加学号、姓名、分数三列DataTable objStudentTable = new DataTable(Students);DataColumn objStudentNumber = new DataColumn(); objStudentNumber.DataType = objStudentTable.Columns.Add ( StudentNo ,typeof(string);objStudentNumber.AllowDBNull = false; objStudentNumber.DefaultValue = 25
13、; objStudentTable.Columns.Add(StudentName,typeof(string);objStudentTable.Columns.Add(StudentMarks,typeof(Double);/向表中填充数据DataRow objStudentRow;objStudentRow= objStudentTable.NewRow();objStudentRowStudentNo=101;objStudentRow“StudentName”=“张三;objStudentRowStudentMarks=55;objStudentTable.Rows.Add(objSt
14、udentRow);在 DataTable 对象中新建 DataRow第11页/共28页定义主键 表中的主键用于对记录进行唯一标识 DataTable 的 PrimaryKey 属性接受含有一个或多个 DataColumn 对象的数组objStudentTable.PrimaryKey = new DataColumnobjStudentTable.ColumnsStudentNo; 设置单个列为 DataTable 的主键objStudentTable.PrimaryKey = new DataColumn objStudentTable.ColumnsStudentNo, objStude
15、ntTable.ColumnsStudentName ; 为 DataTable 对象设置复合主键第12页/共28页DataTable 的约束Constraint是对表中数据施加的限制或规则集决定表中可以存储的数据用于维护数据的正确性和有效性约束的类型ForeignKeyConstraint UniqueConstraint 第13页/共28页DataViewDataView用作 DataTable 中存储的数据的表示层提供对 DataTable 进行排序、筛选和搜索的自定义视图允许 WinForms 控件进行数据绑定可用于查看 DataTable 中存储的数据的子集数据绑定是为了在控件上显示
16、数据库表中存储的数据,而将应用程序的控件与数据表的行进行绑定的过程属性说明Item用于从指定的表中获取一行数据RowFilter 用于获取或设置表达式,该表达式用于筛选可以在 DataView 中查看的行RowStateFilter 用于获取 DataView 的行状态筛选器Table用于表示源 DataTable方法说明AddNew 向 DataView 添加新行Delete用于删除指定索引处的行DataView objStudentView = new DataView(objStudentTable);objStudentView.RowFilter = StudentMarks 60;
17、for(int ctr =0; ctr objStudentView.Count; ctr+)MessageBox.Show(objStudentViewctrStudentNo.ToString();创建 DataView 并对该视图应用某种筛选器第14页/共28页知识点小结 使用DataSet的优点及使用场合 DataSet的层次结构 操纵DataSet中指定行中特定列的值 在程序中向DataSet中动态添加表、字段、值、约束 利用DataView筛选数据第15页/共28页数据命令DataAdapterDataAdapter 对象DataSetDataTable DataRow 集合Dat
18、aColumn 集合Constraint 集合填充脱机数据库非永久连接第16页/共28页DataAdapter 对象SQL 数据提供程序SqlDataAdapter OLE DB 数据提供程序OleDbDataAdapter Oracle 数据提供程序OracleDataAdapter ODBC 数据提供程序OdbcDataAdapter .NET 提供程序及其 DataAdapter 类DataAdapter 类的属性和方法属性说明AcceptChangesDuringFill 决定在把行复制到 DataTable 中时对行所做的修改是否可以接受TableMappings 容纳一个集合,该集
19、合提供返回行和数据集之间的主映射方法说明Fill用于添加或刷新数据集,以便使数据集与数据源匹配FillSchema 用于在数据集中添加 DataTable,以便与数据源的结构匹配Update 将DataSet里面的数值存储到数据库服务器上第17页/共28页OLEDBDataAdapter 用于访问任何由 OleDb 提供程序公开的数据源 用作数据集和数据源之间的桥梁,以便检索和存储数据 与 OleDbConnection 和 OleDbCommand 一起使用以提高性能DataAdapter 类的属性和方法属性说明InsertCommand 表示用于在数据库中插入新记录的 SQL 语句或存储过
20、程UpdateCommand 表示用于在数据库中更新记录的 SQL 语句或存储过程DeleteCommand 表示用于从数据库中删除记录的 SQL 语句或存储过程SelectCommand 表示用于从数据库中选择记录的 SQL 语句或存储过程事件说明RowUpdated 在对数据源执行更新命令之后的过程中激发该事件RowUpdating 在对数据源执行命令更新之前的过程中激发该事件OleDbConnection objOleConnection = new OleDbConnection();objOleConnection.ConnectionString = Provider=Micros
21、oft.Jet.OLEDB.4.0;Data Source = + D:Students.mdb;objOleConnection.Open();string query =SELECT * from Student;DataSet objDataSet = new DataSet();OleDbDataAdapter objOleAdapter = new OleDbDataAdapter();objOleAdapter.SelectCommand = new OleDbCommand(query,objOleConnection);objOleAdapter.Fill(objDataSet
22、,Students);传递给 OleDbAdapter 对象将数据填充到数据集中第18页/共28页SQLDataAdapter 它设计为使用 Microsoft SQL Server 7 或更高版本提供最佳通信 该适配器在数据集和 Microsoft SQL Server 之间起桥梁作用,提供用于保存和检索数据的接口 与 SqlConnection 和 SqlCommand 相互配合使用SqlConnection objSqlConnection = new SqlConnection (SERVER=MYSERVER;database=Students;uid=sa; password=pl
23、ayware);SqlDataAdapter objSqlAdapter = new SqlDataAdapter(SELECT * from Student,objSqlConnection);objSqlConnection.Open();DataSet objDataSet = new DataSet();objSqlAdapter.Fill(objDataSet,Students);创建与 SQL Server 数据库的连接,并用相应的值填充数据集第19页/共28页知识点小结DataAdapter的作用DataAdapter的组成DataAdapter的属性、方法使用DataAdapt
24、er对数据的选择、添加、删除和修改第20页/共28页DataReaderDataReader只读只进记录集查询只读和只进访问 需要永久连接.NET 数据提供程序及其 DataReader 类.NET Framework 数据提数据提供程序供程序DataReader 类类SQL 数据提供程序SqlDataReader OLE DB 数据提供程序OleDbDataReader Oracle 数据提供程序OracleDataReader ODBC 数据提供程序OdbcDataReader 第21页/共28页DataReader属性说明FieldCount 返回当前行中的列数HasRows 容纳一个指
25、示读取器是否含有一行或多行的值IsClosed 表示 DataReader 是否关闭RecordsAffected 表示执行 SQL 语句之后修改、插入或删除的行数方法说明Close 用于关闭 DataReader 对象GetBoolean 用于获取特定列的布尔值GetInt32 用于返回列的整型值DataReader 对象的属性和方法方法说明GetString 用于获取特定列的 String 值GetValue 用于返回本机格式的特定列的值Read使 DataReader 前移到下一个记录SqlConnection objSqlConnection = new SqlConnection(S
26、ERVER=MYSERVER;database=Students; uid=sa;password=playware);string query = SELECT * from Student;SqlCommand objSqlCommand = new SqlCommand(query,objSqlConnection);objSqlConnection.Open();SqlDataReader objSqlReader = objSqlCommand.ExecuteReader();while(objSqlReader.Read() MessageBox.Show(“学号: +objSql
27、Reader.GetValue(0);执行给定查询、从数据流中检索行,并将结果集绑定到 DataReader 类的给定实例中 第22页/共28页用于查询和检索数据的示例演示: 创建 Windows 应用程序示例的步骤“乘客详细信息”窗体 u创建一个名为“Example 1”的 Windows 应用程序u将 Form1.cs 更改为 frmPassenger.csu设计窗体,如图 2.3 所示u命名控件u将以下命名空间包含在项目中u在类声明部分声明以下变量using System.Data;using System.Data.SqlClient;private SqlConnection obj
28、SqlConnection;private SqlDataAdapter objDataAdapter; 第23页/共28页用于查询和检索数据的示例将以下代码添加到 frmPassenger 的 Load 事件中。在 btnAdd 按钮的 Click 事件中添加以下代码。private void frmPassenger_Load(object sender, System.EventArgs e)this.cboSex.Items.Add(“男);this.cboSex.Items.Add(“女);objSqlConnection = new SqlConnection(server=MYS
29、ERVER;database=Flights; uid=sa; pwd = playware;);向组合框中添加值创建 Sql 连接private void btnAdd_Click(object sender, System.EventArgs e) try objSqlConnection.Open();DataSet objDataSet = new DataSet();objDataAdapter = new SqlDataAdapter(Select * from Passenger,objSqlConnection);objDataAdapter.Fill(objDataSet,P
30、assenger); objDataAdapter.InsertCommand = objSqlConnection.CreateCommand();打开 Sql 连接新建数据集填充数据集objDataAdapter.InsertCommand.CommandText =INSERT INTO Passenger(FlightCode,PassportNo”+”,Name,SeatNo, Sex,Age) +VALUES(+this.txtFlightCode.Text+,“ +this.txtPassport.Text+, +this.txtName.Text+,“ +this.txtSea
31、tNo.Text+,“ +this.cboSex.SelectedItem.ToString()+,“ +this.txtAge.Text+); DataTable objDataTable = new DataTable(); objDataSet.Tables.Add(objDataTable); DataRow objDataRow = objDataSet.Tables0.NewRow();创建显式、可重用的 INSERT 命令objDataRowFlightCode=this.txtFlightCode.Text;objDataRowPassportNo=this.txtPasspo
32、rt.Text;objDataRowName=this.txtName.Text; objDataRowSeatNo=Convert.ToInt32(this.txtSeatNo.Text);objDataRowSex=this.cboSex.SelectedText;objDataRowAge=Convert.ToInt32(this.txtAge.Text);objDataSet.Tables0.Rows.Add(objDataRow);/ objDataAdapter.Update(objDataSet,Passenger); Application.DoEvents(); Messag
33、eBox.Show(“已插入行);this.ClearFields(); catch(SqlException ex) . . .第24页/共28页用于查询和检索数据的示例在 btnDelete 按钮的 Click 事件中添加下列代码。private void btnDelete_Click(object sender, System.EventArgs e) try objSqlConnection.Open(); DataSet objDataSet = new DataSet(); objDataAdapter = new SqlDataAdapter(Select * from Pas
34、senger,objSqlConnection); objDataAdapter.Fill(objDataSet,Passenger); objDataAdapter.DeleteCommand = objSqlConnection.CreateCommand(); objDataAdapter.DeleteCommand.CommandText = DELETE from Passenger where FlightCode=+ this.txtFlightCode.Text+; DataTable objDataTable = new DataTable(); objDataSet.Tables.Add(objDataTable);打开连接创建显式、可重用的 DELETE 命令。 foreach(DataRow dr in objDataSet.Tables0.Rows) if(drFlightCode.Equals(this.txtFlightCode.Text) DataRow objDataRow = dr;t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公关员岗前理论综合考核试卷含答案
- 车库停车合同协议
- 抖音转让协议合同
- 车队保底合同范本
- 钢材合同补充协议
- 承包工费合同范本
- 钢筋预埋合同范本
- 加油经营合同范本
- 劳务代发合同范本
- 施工合同质量协议
- 防护围栏安装工程施工方案方案
- 多角度解读华为LTC流程
- GB/T 5755-2021钢丝绳芯输送带绳与包覆胶粘合试验原始状态下和热老化后试验
- 西北工业大学2023年807电工技术与电子技术考研真题(回忆版)
- 融资担保业务基础知识测试(含答案)
- 招银大学培训发展的探索与实践
- 加油站火灾事故应急专项预案
- 轻松带你学习ANP法SD软件
- DB3401∕T 244-2022 肢体(脑瘫)残疾儿童康复服务规范
- 轧道施工方案
- 精品资料(2021-2022年收藏的)棒材表面划伤验收材料之5结题报告
评论
0/150
提交评论