ADONET查询和检索数据.ppt_第1页
ADONET查询和检索数据.ppt_第2页
ADONET查询和检索数据.ppt_第3页
ADONET查询和检索数据.ppt_第4页
ADONET查询和检索数据.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

ADO.NET连接数据库,西源软件培训中心,回顾,.NET framework 中的 ADO.NET 是一组允许应用程序与数据库交互,以便检索和更新信息的类 DataSet 和 .NET 数据提供程序是 ADO.NET 的两个主要组件 每种 .NET 数据提供程序都是由以下四个对象组成: Connection Command DataAdapter DataReader Connection 对象用于建立应用程序与数据库之间的连接 Command 对象允许向数据库传递请求,检索和操纵数据库中的数据 事务处理是一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性,问题,ADO.NET的两个主要组成部分是? ADO.NET中数据提供程序包含哪几个对象? Command返回值有哪几种? 对数据库的操作一般分成哪几个步骤? 事务处理一般分成哪几步骤?举例说明在什么情况下采用事务处理?,目标,理解并使用数据集对象 理解 DataAdapter 对象 理解 DataReader对象,DataSet,DataSet,是存储从数据库检索到的数据的对象,是零个或多个表对象的集合,这些表对象由数据行和列、约束和有关表中数据关系的信息组成,不直接与数据库交互,既可容纳数据库的数据,也可以容纳非数据库的数据源,DataSet 类的层次结构,DataSet,DataColumn,DataRow,DataTable,DataSet,DataSet 层次结构中的类,数据集的工作原理,客户端,服务器,数据集,将数据发送到数据集,客户端修改数据集,将数据集传递给客户端,将修改后的数据集传递给服务器,客户端向服务器请求数据,数据集的类型,数据集的类型,类型化数据集,非类型化数据集,它是一个生成类,继承了基类 DataSet 的所有方法、事件和属性,表和列只能以集合的形式公开,而不能用于借助 XML 结构文件派生新类,使用类型化数据集访问列,string employeeName; employeeName = dsEmployees.Emp0.EmpName;,从 dsEmployees 数据集的 Emp 表中第一个记录返回 EmpName 列,然后将其存储在 employeeName 字符串变量中,使用非类型化数据集访问列,string employeeName; employeeName = dsEmployees.Tables“Emp“.Rows0“EmpName“;,使用 Tables 集合返回 EmpName 列,使用 C# 代码创建数据集,数据集实例是由 DataSet 构造函数创建的 数据集的名称是可选的,不需要指定 如果没有指定名称,则以默认名称 NewDataSet 创建数据集,DataSet empDS = new DataSet(“EmployeeDetails“);,DataTable、DataColumn和DataRow,数据集中的数据以 DataTable 对象的形式存储 DataTable 类属于 System.Data 命名空间,DataTable objStudentTable = new DataTable(“Students“);,创建 DataTable 对象的实例,DataSet studentDS = new DataSet(); DataTable objStudentTable = studentDS.Tables.Add(“Students“);,创建 DataTable 的实例,然后将其添加到数据集的 Tables 集合中,DataTable、DataColumn和DataRow,DataColumn 对象定义 DataTable 的列 DataTable 的 Columns 属性含有对 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 对象创建 DataTable,DataTable、DataColumn和DataRow,DataRow 对象表示 DataTable 中的实际数据,/定义表结构,为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,定义主键,表中的主键用于对记录进行唯一标识 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,DataView,DataView,用作 DataTable 中存储的数据的表示层,提供对 DataTable 进行排序、筛选和搜索的自定义视图,允许 WinForms 控件进行数据绑定,可用于查看 DataTable 中存储的数据的子集,数据绑定,是为了在控件上显示数据库表中存储的数据,而将应用程序的控件与数据表的行进行绑定的过程,DataView objStudentView = new DataView(objStudentTable); objStudentView.RowFilter = “StudentMarks 60“; for(int ctr =0; ctr objStudentView.Count; ctr+) MessageBox.Show(objStudentViewctr“StudentNo“.ToString(); ,创建 DataView 并对该视图应用某种筛选器,知识点小结,使用DataSet的优点及使用场合 DataSet的层次结构 操纵DataSet中指定行中特定列的值 在程序中向DataSet中动态添加表、字段、值、约束 利用DataView筛选数据,DataAdapter 对象,数据源,填充,脱机数据库,非永久连接,DataAdapter 对象,.NET 提供程序及其 DataAdapter 类,DataAdapter 类的属性和方法,OLEDBDataAdapter,用于访问任何由 OleDb 提供程序公开的数据源 用作数据集和数据源之间的桥梁,以便检索和存储数据 与 OleDbConnection 和 OleDbCommand 一起使用以提高性能,DataAdapter 类的属性和方法,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 = new OleDbCommand(query,objOleConnection); objOleAdapter.Fill(objDataSet,“Students“);,传递给 OleDbAdapter 对象,将数据填充到数据集中,SQLDataAdapter,它设计为使用 Microsoft SQL Server 7 或更高版本提供最佳通信 该适配器在数据集和 Microsoft SQL Server 之间起桥梁作用,提供用于保存和检索数据的接口 与 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 数据库的连接, 并用相应的值填充数据集,知识点小结,DataAdapter的作用 DataAdapter的组成 DataAdapter的属性、方法 使用DataAdapter对数据的选择、添加、删除和修改,DataReader,DataReader,只读 只进记录集,数据源,查询,只读和只进访问,需要永久连接,.NET 数据提供程序及其 DataReader 类,DataReader,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 应用程序示例的步骤,“乘客详细信息”窗体,创建一个名为“Example 1”的 Windows 应用程序 将 Form1.cs 更改为 frmPassenger.cs 设计窗体,如图 2.3 所示 命名控件 将以下命名空间包含在项目中 在类声明部分声明以下变量,using System.Data; using System.Data.SqlClient;,private SqlConnection objSqlConnection; private SqlDataAdapter objDataAdapter;,用于查询和检索数据的示例,将以下代码添加到 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=MYSERVER;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,“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) . . . ,用于查询和检索数据的示例,在 btnDelete 按钮的 Click 事件中添加下列代码。,private void btnDelete_Click(object sender, System.EventArgs e) try objSqlConnection.Open(); DataSet objDataSet = new DataSet(); objDataAdapter = new SqlDataAdapter(“Select * from Passenger“,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) DataRow objDataRow = dr; this.txtFlightCode.Text = objDataRow“FlightCode“.ToString(); this.txtPassport.Text = objDataRow“PassportNo“.ToString(); this.txtName.Text = objDataRow“Name“.ToString(); this.txtSeatNo.Text = objDataRow“SeatNo“.ToString(); this.cboSex.SelectedTe

温馨提示

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

评论

0/150

提交评论