




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ADO.NET连接数据库西源软件培训中心回顾u .NET framework 中的 ADO.NET 是一组允许应用程序与数据库交互,以便检索和更新信息的类u DataSet 和 .NET 数据提供程序是 ADO.NET 的两个主要组件u 每种 .NET 数据提供程序都是由以下四个对象组成:u Connectionu Commandu DataAdapteru DataReaderu Connection 对象用于建立应用程序与数据库之间的连接u Command 对象允许向数据库传递请求,检索和操纵数据库中的数据u 事务处理是一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性问题u ADO.NET的两个主要组成部分是?u ADO.NET中数据提供程序包含哪几个对象?u Command返回值有哪几种?u 对数据库的操作一般分成哪几个步骤?u 事务处理一般分成哪几步骤?举例说明在什么情况下采用事务处理?目标u 理解并使用数据集对象u 理解 DataAdapter 对象u 理解 DataReader对象DataSetDataSet是存储从数据库检索到的数据的对象是零个或多个表对象的集合,这些表对象由数据行和列、约束和有关表中数据关系的信息组成不直接与数据库交互既可容纳数据库的数据,也可以容纳非数据库的数据源DataSet 类的层次结构DataSetDataColumnCollection DataRowCollectionDataColumn DataRowDataTableCollectionDataTableDataSet类类 说说 明明DataTableCollection 包含特定数据集的所有 DataTable 对 象DataTable 表示数据集中的一个表DataColumnCollection 表示 DataTable 对 象的 结 构DataRowCollection 表示 DataTable 对 象中的 实际 数据行DataColumn 表示 DataTable 对 象中列的 结 构DataRow 表示 DataTable 对 象中的一个数据行DataSet 层次结构中的类数据集的工作原理客户端 服务器数据集数据集将数据发送到数据集客户端修改数据集将数据集传递给客户端将修改后的数据集传递给服务器客户端向服务器请求数据数据集的类型数据集的类型类型化数据集 非类型化数据集它是一个生成类,继承了基类 DataSet 的所有方法、事件和属性表和列只能以集合的形式公开,而不能用于借助 XML 结构文件派生新类使用类型化数据集访问列string employeeName;employeeName = dsEmployees.Emp0.EmpName;从 dsEmployees 数据集的 Emp 表中第一个记录返回 EmpName 列,然后将其存储在 employeeName 字符串变量中使用非类型化数据集访问列 string employeeName;employeeName = dsEmployees.Tables“Emp“.Rows0“EmpName“;使用 Tables 集合返回 EmpName 列使用 C# 代码创建数据集u 数据集实例是由 DataSet 构造函数 创建的u 数据集的名称是可选的,不需要指定u 如果没有指定名称,则以默认名称 NewDataSet 创建数据集 属性 说 明DataSetName 用于 获 取或 设 置当前数据集的名称Tables 用于 检 索数据集中包含的表集合方法 说 明Clear 清除数据集中包含的所有表的所有行HasChanges 返回一个布 尔 值 ,指示数据集是否更改 了DataSet empDS = new DataSet(“EmployeeDetails“);DataTable、 DataColumn和 DataRowu 数据集中的数据以 DataTable 对象的形式存储u DataTable 类属于 System.Data 命名空间属性 说 明Columns 表示列的集合或 DataTable 包含的 DataColumnConstraints 表示特定 DataTable 的 约 束集合DataSet 表示 DataTable 所属的数据集PrimaryKey 表示作 为 DataTable 主 键 的字段或 DataColumnRows 表示行的集合或 DataTable 包含的 DataRowHasChanges 返回一个布 尔 值 ,指示数据集是否更改了方法 说 明AcceptChanges 提交 对该 表所做的所有修改NewRow 添加新的 DataRow事件 说 明ColumnChanged 修改 该 列中的 值时 激 发该 事件RowChanged 成功 编辑 行后激 发该 事件RowDeleted 成功 删 除行 时 激 发该 事件DataTable objStudentTable = new DataTable(“Students“);创建 DataTable 对象的实例DataSet studentDS = new DataSet();DataTable objStudentTable = studentDS.Tables.Add(“Students“);创建 DataTable 的实例,然后将其添加到数据集的 Tables 集合中DataTable、 DataColumn和 DataRowu DataColumn 对象定义 DataTable 的列u DataTable 的 Columns 属性含有对 DataColumn 对象的引用属性 说 明AllowDBNull 表示一个 值 ,指示 对 于 该 表中的行,此列是否允 许 null 值ColumnName 表示指定 DataColumn 的名称DataType 表示指定 DataColumn 对 象中存 储 的数据 类 型DefaultValue 表示新建行 时该 列的默 认值Table 表示 DataColumn 所属的 DataTable 的名称Unique 表示 DataColumn 的 值 是否必 须 是唯一的DataTable objStudentTable = new DataTable(“Students“);DataColumn objStudentNumber = objStudentTable.Columns.Add(“ StudentNo “,typeof(Int32);objStudentNumber.AllowDBNull = false; objStudentNumber.DefaultValue = 25; objStudentTable.Columns.Add(“StudentName“,typeof(Int32);objStudentTable.Columns.Add(“StudentMarks“,typeof(Double);使用多个 DataColumn 对象创建 DataTableDataTable、 DataColumn和 DataRowu DataRow 对象表示 DataTable 中的实际数据属性 说 明Item 表示 DataRow 的指定列中存 储 的 值RowState 表示行的当前状 态Table 表示用于 创 建 DataRow 的 DataTable 的名称方法 说 明AcceptChanges 用于提交自上次 调 用了 AcceptChanges 之后 对该 行所做的所有修改Delete Deletes the DataRow 用于 删 除 DataRowRejectChanges 用于拒 绝 自上次 调 用了 AcceptChanges 之后 对 DataRow 所做的所有修改/定义表结构,为 Students表添加学号、姓名、分数三列DataTable objStudentTable = new DataTable(“Students“);DataColumn objStudentNumber = new DataColumn(); objStudentNumber.DataType = objStudentTable.Columns.Add(“ StudentNo “,typeof(string);objStudentNumber.AllowDBNull = false; objStudentNumber.DefaultValue = 25; objStudentTable.Columns.Add(“StudentName“,typeof(string);objStudentTable.Columns.Add(“StudentMarks“,typeof(Double);/向表中填充数据DataRow objStudentRow;objStudentRow= objStudentTable.NewRow();objStudentRow“StudentNo“=101;objStudentRow“StudentName”=“张三 “;objStudentRow“StudentMarks“=55;objStudentTable.Rows.Add(objStudentRow);在 DataTable 对象中新建 DataRow定义主键u 表中的主键用于对记录进行唯一标识u DataTable 的 PrimaryKey 属性接受含有一个或多个 DataColumn 对象的数组objStudentTable.PrimaryKey = new DataColumnobjStudentTable.Columns“StudentNo“; 设置单个列为 DataTable 的主键objStudentTable.PrimaryKey = new DataColumn objStudentTable.Columns“StudentNo“, objStudentTable.Columns“StudentName“; 为 DataTable 对象设置复合主键DataTable 的约束Constraint是对表中数据施加的限制或规则集决定表中可以存储的数据用于维护数据的正确性和有效性约束的类型ForeignKeyConstraint UniqueConstraint DataViewDataView用作 DataTable 中存储的数据的表示层提供对 DataTable 进行排序、筛选和搜索的自定义视图允许 WinForms 控件进行数据绑定可用于查看 DataTable 中存储的数据的子集数据绑定是为了在控件上显示数据库表中存储的数据,而将应用程序的控件与数据表的行进行绑定的过程属性 说 明Item 用于从指定的表中 获 取一行数据RowFilter 用于 获 取或 设 置表达式, 该 表达式用于筛选 可以在 DataView 中 查 看的行RowStateFilter 用于 获 取 DataView 的行状 态筛选 器Table 用于表示源 DataTable方法 说 明AddNew 向 DataView 添加新行Delete 用于 删 除指定索引 处 的行DataView objStudentView = new DataView(objStudentTable);objStudentView.RowFilter = “StudentMarks 60“;for(int ctr =0; ctr objStudentView.Count; ctr+)MessageBox.Show(objStudentViewctr“StudentNo“.ToString();创建 DataView 并对该视图应用某种筛选器知识点小结u 使用 DataSet的优点及使用场合u DataSet的层次结构u 操纵 DataSet中指定行中特定列的值u 在程序中向 DataSet中动态添加表、字段、值、约束u 利用 DataView筛选数据数据命令DataAdapterDataAdapter 对象DataSetDataTable DataRow 集合DataColumn 集合Constraint 集合数据源数据源填充脱机数据库非永久连接DataAdapter 对象.NET Framework 数据提数据提供程序供程序 Connection 类类SQL 数据提供程序 SqlDataAdapter OLE DB 数据提供程序 OleDbDataAdapter Oracle 数据提供程序 OracleDataAdapter ODBC 数据提供程序 OdbcDataAdapter .NET 提供程序及其 DataAdapter 类DataAdapter 类的属性和方法属性 说 明AcceptChangesDuringFill 决定在把行复制到 DataTable 中 时对 行所做的修改是否可以接受TableMappings 容 纳 一个集合, 该 集合提供返回行和数据集之间 的主映射方法 说 明Fill 用于添加或刷新数据集,以便使数据集与数据源匹配FillSchema 用于在数据集中添加 DataTable,以便与数据源的 结 构匹配Update 将 DataSet里面的数 值 存 储 到数据 库 服 务 器上OLEDBDataAdapteru 用于访问任何由 OleDb 提供程序公开的数据源u 用作数据集和数据源之间的桥梁,以便检索和存储数据u 与 OleDbConnection 和 OleDbCommand 一起使用以提高性能DataAdapter 类的属性和方法属性 说 明InsertCommand 表示用于在数据 库 中插入新 记录 的 SQL 语 句或存 储过 程UpdateCommand 表示用于在数据 库 中更新 记录 的 SQL 语 句或存 储过程DeleteCommand 表示用于从数据 库 中 删 除 记录 的 SQL 语 句或存 储过程SelectCommand 表示用于从数据 库 中 选择记录 的 SQL 语 句或存 储过程事件 说 明RowUpdated 在 对 数据源 执 行更新命令之后的 过 程中激 发该 事件RowUpdating 在 对 数据源 执 行命令更新之前的 过 程中激 发该 事件OleDbConnection objOleConnection = new OleDbConnection();objOleConnection.ConnectionString = “Provider=Microsoft.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 = newOleDbCommand(query,objOleConnection);objOleAdapter.Fill(objDataSet,“Students“);传递给 OleDbAdapter 对象将数据填充到数据集中SQLDataAdapteru 它设计为使用 Microsoft SQL Server 7 或更高版本提供最佳通信u 该适配器在数据集和 Microsoft SQL Server 之间起桥梁作用,提供用于保存和检索数据的接口u 与 SqlConnection 和 SqlCommand 相互配合使用SqlConnection objSqlConnection = new SqlConnection (“SERVER=MYSERVER;database=Students;uid=sa;password=playware“);SqlDataAdapter objSqlAdapter = new SqlDataAdapter(“SELECT * from Student“,objSqlConnection);objSqlConnection.Open();DataSet objDataSet = new DataSet();objSqlAdapter.Fill(objDataSet,“Students“);创建与 SQL Server 数据库的连接,并用相应的值填充数据集知识点小结u DataAdapter的作用u DataAdapter的组成u DataAdapter的属性、方法u 使用 DataAdapter对数据的选择、添加、删除和修改DataReaderDataReader只读只进记录集数据源数据源查询只读和只进访问 需要永久连接.NET 数据提供程序及其 DataReader 类.NET Framework 数据提供程序 DataReader 类SQL 数据提供程序 SqlDataReader OLE DB 数据提供程序 OleDbDataReader Oracle 数据提供程序 OracleDataReader ODBC 数据提供程序 OdbcDataReader DataReader属性 说 明FieldCount 返回当前行中的列数HasRows 容 纳 一个指示 读 取器是否含有一行或多行的 值IsClosed 表示 DataReader 是否关 闭RecordsAffected 表示 执 行 SQL 语 句之后修改、插入或 删 除的行数方法 说 明Close 用于关 闭 DataReader 对 象GetBoolean 用于 获 取特定列的布 尔 值GetInt32 用于返回列的整型 值DataReader 对象的属性和方法方法 说 明GetString 用于 获 取特定列的 String 值GetValue 用于返回本机格式的特定列的 值Read 使 DataReader 前移到下一个 记录SqlConnection objSqlConnection = new SqlConnection(“SERVER=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(“学号 : “+objSqlReader.GetValue(0);执行给定查询、从数据流中检索行,并将结果集绑定到 DataReader 类的给定实例中 用于查询和检索数据的示例演示: 创建 Windows 应用程序示例的步骤“乘客详细信息 ”窗体 u 创建一个名为 “Example 1”的 Windows 应用程序u 将 Form1.cs 更改为 frmPassenger.csu 设计窗体,如图 2.3 所示u 命名控件u 将以下命名空间包含在项目中u 在类声明部分声明以下变量using System.Data;using System.Data.SqlClient;private SqlConnection objSqlConnection;private SqlDataAdapter objDataAdapter; 用于查询和检索数据的示例u 将以下代码添加到 frmPassenger 的 Load 事件中。u 在 btnAdd 按钮的 Click 事件中添加以下代码。private void frmPassenger_Load(object sender, System.EventArgs e)this.cboSex.Items.Add(“男 “);this.cboSex.Items.Add(“女 “);objSqlConnection = new SqlConnection(“server=MYSERVER;database=Flights; uid=sa; pwd = playware;“);向组合框中添加值创建 Sql 连接private void btnAdd_Click(object sender, System.EventArgs e)tryobjSqlConnection.Open();DataSet objDataSet = new DataSet();objDataAdapter = new SqlDataAdapter(“Select * fromPassenger“,objSqlConnection);objDataAdapter.Fill(objDataSet,“Passenger“); 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.txtSeatNo.Text+“,“+this.cboSex.SelectedItem.ToString()+“,“+this.txtAge.Text+“)“;DataTable objDataTable = new DataTable();objDataSet.Tables.Add(objDataTable);DataRow objDataRow = objDataSet.Tables0.NewRow();创建显式、可重用的 INSERT 命令objDataRow“FlightCode“=this.txtFlightCode.Text;objDataRow“PassportNo“=this.txtPassport.Text;objDataRow“Name“=this.txtName.Text;objDataRow“SeatNo“=Convert.ToInt32(this.txtSeatNo.Text);objDataRow“Sex“=this.cboSex.SelectedText;objDataRow“Age“=Convert.ToInt32(this.txtAge.Text);objDataSet.Tables0.Rows.Add(objDataRow);/ objDataAdapter.Update(objDataSet,“Passenger“);Application.DoEvents();MessageBox.Show(“已插入行 “);this.ClearFields();catch(SqlException ex). . .用于查询和检索数据的示例u 在 btnDelete 按钮的 Click 事件中添加下列代码。private void btnDelete_Click(object sender, System.EventArgs e)tryobjSqlConnection.Open();DataSet objDataSet = new DataSet();objDataAdapter = new SqlDataAdapter(“Select * fromPassenger“,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(dr“FlightCode“.Equals(this.txtFlightCode.Text)D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025物联网智能家居系统集成效果实证分析与鉴定报告
- 2025年交通设备制造业数字化转型与智能交通服务模式创新报告
- 2025年直播平台内容监管政策与行业自律实践案例报告
- 机场停机坪租用协议合同
- 门面漏水退租协议书范本
- 汽车代卖废铁协议书范本
- 羊肉烩面店转让合同范本
- 签就业协议不填劳动合同
- 特种车玻璃采购合同范本
- 腻子清包工工程合同范本
- 《公路建设项目文件管理规程》
- 国家职业技术技能标准 6-30-99-00 工业机器人系统操作员 人社厅发2020108号
- 盲人医疗按摩从业备案申请表(样表)
- 对赌融资协议书范文范本
- DB42∕T 2234-2024 装配型附着式升降脚手架安全技术规程
- 中等职业技术学校人工智能技术应用专业(三年制)人才培养方案
- YDT 5206-2023宽带光纤接入工程技术规范
- DL-T1474-2021交、直流系统用高压聚合物绝缘子憎水性测量及评估方法
- 2024年4月自考05424现代设计史试题
- 快速入门穿越机-让你迅速懂穿越机
- Q-GDW 12105-2021电力物联网数据中台服务接口规范
评论
0/150
提交评论