《C程序设计课件.pptx》由会员分享,可在线阅读,更多相关《C程序设计课件.pptx(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ADO.NET 概述概述ADO.NET 对象模型记录集和数据集使用命名空间16.1 ADO.NET 概述概述第1页/共35页ADO.NET 对象模型对象模型DataAdapter连接连接数据库数据库数据库数据库Command.ASPX 页面页面列表绑定列表绑定控件控件DataReader公司:公司:Northwind Traders.ASPX 页面页面DataViewDataSet16.1.1 ADO.NET对象模型对象模型第2页/共35页多媒体演示多媒体演示 使用使用ADO.NET访问数据访问数据第3页/共35页记录集和数据集记录集和数据集 特点特点RecordSetDataSet表数量单表
2、多表关系基于连接包括关系数据间移动逐行移动通过使用关系导航数据连接连接的或断开的断开的传输数据COM封送处理传输XML文件16.1.2 记录集和数据集记录集和数据集第4页/共35页使用命名空间使用命名空间ADO.NET使用的命名空间包括命名空间命名空间 包含内容包含内容System.Data为 ADO.NET提供基础的对象和类型System.Data.OleDb提供托管 OLE DB 数据访问对象System.Data.SqlClient专为SQL Server 实现的 ADO.NET 对象System.Data.Common被所有.NET 数据提供程序共享的类System.Data.SqlT
3、ypesSQL 数据类型16.1.3 使用命名空间使用命名空间第5页/共35页第第16章章 使用使用Microsoft ADO.NET 访问数访问数据据ADO.NET 概述连接数据源使用数据集访问数据使用存储过程使用数据阅读器访问数据绑定到 XML 数据第6页/共35页连接数据源连接数据源使用 SqlConnection使用 OleDbConnection16.2 连接数据源连接数据源SqlConnection mySqlConnection=new SqlConnection(server=(local)NetSDK;Trusted_Connection=yes;database=north
4、wind);OleDbConnection myOleDbConnection=new OleDbConnection(server=(local)NetSDK;Trusted_Connection=yes;database=northwind;provider=sqloledb);第7页/共35页连接数据源(续)连接数据源(续)选择数据源连接方式数据提供程序数据提供程序解释解释SQLServer.NET数据提供程序适用于使用SQLServer7.0或更高版本中间层应用程序适用于使用SQLServer7.0或更高版本的单层应用程序适用于使用SQLOLEDB做为数据提供程序的应用程序使用SQLS
5、erver6.5或更低版本版本的应用程序必须使用OleDb数据提供程序OLEDB.NET数据提供程序适用于使用SQLServer6.5或更低版本版本的应用程序,或者任何实现了OLEDB接口的OLEDB数据提供程序使用SQLServer7.0或更高版本的,推荐使用SQLServer.NET数据提供程序适用于使用MicrosoftAccess数据库的单层应用程序.不推荐在中间层使用Access数据库为了连接ODBC数据源,可从MSDN在线下载站点上下载单独的ODBC.NET数据提供程序16.2 连接数据源连接数据源第8页/共35页ADO.NET 概述连接数据源使用数据集访问数据使用存储过程使用数据
6、阅读器访问数据绑定到 XML 数据第第16章章 使用使用Microsoft ADO.NET 访问数据访问数据第9页/共35页使用数据集访问数据使用数据集访问数据使用数据集读取数据在DataSet中保存多个表使用数据视图使用DataSet更新数据库在DataGrid控件中显示数据16.3 使用数据集访问数据使用数据集访问数据第10页/共35页使用使用数据集数据集读取数据读取数据创建数据连接用 SqlDataAdapter对象保存查询创建数据集并用DataTable来填充16.3.1 使用使用数据集数据集读取数据读取数据SqlDataAdapter mySqlDataAdapter=new Sql
7、DataAdapter(select*from customers,mySqlConnection);DataSet myDataSet=new DataSet();mySqlDataAdapter.Fill(myDataSet,Customers);第11页/共35页使用使用数据集数据集读取数据(续)读取数据(续)使用foreach来遍历数据集中的数据使用类型化的数据集类型化的数据集是从数据集派生的类 类型化的数据集提供强类型的方法、事件和属性。这意味着可以按名称(而不是使用基于集合的方法)访问表和列 将在编译代码时(而不是在运行时)捕获类型不匹配错误foreach(DataRow myDa
8、taRow inmyDataSet.TablesCustomers.Rows)Console.WriteLine(CustomerID:0,myDataRowCustomerID.ToString);16.3.1 使用使用数据集数据集读取数据读取数据第12页/共35页在在DataSet中保存多个表中保存多个表添加第一张表添加随后的表OrdersCustomersDataSet:Data Tables16.3.2 在在DataSet中保存多个表中保存多个表SqlDataAdapter mySqlDataAdapter=new SqlDataAdapter(select*from customer
9、s,mySqlConnection);DataSet myDataSet=new DataSet();mySqlDataAdapter.Fill(myDataSet,Customers);mySqlDataAdapter.SelectCommand.CommandText=select*from orders;mySqlDataAdapter.Fill(myDataSet,Orders);第13页/共35页使用数据视图使用数据视图能够呈现DataTable中数据的子集DefaultView 属性返回表的默认视图设置不同的视图16.3.3 使用数据视图使用数据视图myDataView.Sort=
10、Country;myDataView.RowFilter=Country=Argentina;DataView myDataView=myDataSet.TablesCustomers.DefaultView;第14页/共35页使用使用DataSet更新数据库更新数据库使用 SQLCommandBuilder设置 MissingSchemaAction 属性使用 NewRow 方法添加新行使用 Update 方法提交数据16.3.4 使用使用DataSet更新数据库更新数据库mySqlDataAdapter.MissingSchemaAction=MissingSchemaAction.Add
11、WithKey;SqlCommandBuilder mySqlCommandBuilder=new SqlCommandBuilder(mySqlDataAdapter);DataRow myDataRow=myDataSet.TablesCustomers.NewRow();myDataRowCustomerId=NewID;/.myDataSet.TablesCustomers.Rows.Add(myDataRow);mySqlDataAdapter.Update(myDataSet,Customers);第15页/共35页在在DataGrid控件中显示数据控件中显示数据 创建 Windo
12、ws 窗体 DataGrid 控件绑定到DataSet 使用自定义视图16.3.5 在在DataGrid控件中显示数据控件中显示数据dataGrid1=new System.Windows.Forms.DataGrid();dataGrid1.DataSource=myDataSet;dataGrid1.DataMember=Regions;DataView myDataView=myDataSet.TablesCustomers.DefaultView;myDataView.RowFilter=Country=Argentina;dataGrid2.DataSource=myDataView
13、;第16页/共35页ADO.NET 概述连接数据源使用数据集访问数据使用存储过程使用数据阅读器访问数据绑定到 XML 数据第第16章章 使用使用Microsoft ADO.NET 访问数访问数据据第17页/共35页使用存储过程使用存储过程调用存储过程传递参数调用行为存储过程16.4 使用存储过程使用存储过程第18页/共35页调用存储过程调用存储过程设置 DataAdapter运行存储过程并保存返回的记录16.4.1 调用存储过程调用存储过程SqlDataAdapter mySqlDataAdapter=newSqlDataAdapter();mySqlDataAdapter.SelectCom
14、mand=new SqlCommand();mySqlDataAdapter.SelectCommand.Connection=mySqlConnection;mySqlDataAdapter.SelectCommand.CommandText=GetProducts;mySqlDataAdapter.SelectCommand.CommandType=CommandType.StoredProcedure;mySqlDataAdapter.Fill(myDataSet,Products);第19页/共35页传递参数传递参数创建 SqlParameter,设置 Direction 和 Valu
15、e 属性,并添加到 Parameters 集合运行存储过程16.4.2 传递参数传递参数SqlParameter workParam=new SqlParameter(ProductName,SqlDbType.NChar,40);workParam.Direction=ParameterDirection.Input;/Input is defaultworkParam.Value=textBox1.Text;mySqlDataAdapter.SelectCommand.Parameters.Add(workParam);DataSet myDataSet=new DataSet();myS
16、qlDataAdapter.Fill(myDataSet,ProductData);第20页/共35页调用行为存储过程调用行为存储过程使用 SQLCommand 类调用 ExecuteNonQuery 方法取得输出参数的值16.4.3 调用行为存储过程调用行为存储过程textBox2.Text=mySqlCommand.ParametersProductCount.Value.ToString();SqlCommand mySqlCommand=new SqlCommand(GetProductCount,mySqlConnection);mySqlCommand.CommandType=Co
17、mmandType.StoredProcedure;SqlParameter workParam=new SqlParameter(ProductCount,SqlDbType.Int);workParam.Direction=ParameterDirection.Output;mySqlCommand.Parameters.Add(workParam);mySqlCommand.ExecuteNonQuery();第21页/共35页实验实验 使用使用 ADO.NET 访问数据访问数据练习练习1 创建中间层业务对象创建中间层业务对象练习练习2 创建创建Windows用户界面用户界面 第22页/
18、共35页ADO.NET 概述连接数据源使用数据集访问数据使用存储过程使用数据阅读器访问数据绑定到 XML 数据第第16章章 使用使用Microsoft ADO.NET 访问数访问数据据第23页/共35页使用数据阅读器访问数据使用数据阅读器访问数据在DataReader和DataSet间选择创建 DataReader从 DataReader 中读取数据使用数据集和数据阅读器16.5 使用数据阅读器访问数据使用数据阅读器访问数据第24页/共35页创建创建 DataReader创建并打开数据库连接从Command对象创建DataReader关闭 DataReader 和数据库连接16.5.2 创建创
19、建DataReaderSqlCommand mySqlCommand=new SqlCommand(select*from customers,mySqlConnection);SqlDataReader myReader=mySqlCommand.ExecuteReader();If(myReader!=null)myReader.Close();if(mySqlConnection.State=ConnectionState.Open)mySqlConnection.Close();SqlConnection mySqlConnection=new SqlConnection(server
20、=(local)NetSDK;Trusted_Connection=yes;database=northwind);mySqlConnection.Open();第25页/共35页创建创建 DataReader(续)(续)在使用DataReader时,注意使用结构化异常处理,当发生异常时,确保数据库连接被关闭.trymySqlConnection.Open();myReader=mySqlCommand.ExecuteReader();/catch(Exception e)Console.WriteLine(e.ToString();finallyif(myReader!=null)myRea
21、der.Close();if(mySqlConnection.State=ConnectionState.Open)mySqlConnection.Close();16.5.2 创建创建DataReader第26页/共35页从从 DataReader中读取数据中读取数据调用 Read方法移动记录指针读取每条记录当没有下一条记录时,返回 false取得字段值参数是字段在表中的顺序位置或者字段的名字调用Close方法来关闭DataReader和数据库连接16.5.3 从从DataReader中读取数据中读取数据while(myReader.Read()Console.Write(myReaderC
22、ustomerID.ToString()+);Console.WriteLine(myReaderCompanyName.ToString();第27页/共35页使用数据集和数据阅读器使用数据集和数据阅读器 DataSet1.创建数据库连接2.在DataAdapter中保存查询3.使用Fill方法填充DataSet4.创建数据视图5.把数据视图绑定到列表绑定控件DataReader1.创建数据库连接2.打开数据库连接3.在SqlCommand中保存查询4.使用ExecuteReader方法填充 DataReader5.为每条记录调用 Read 方法,调用Get方法取得字段6.手工显示数据7.关
23、闭 DataReader 和连接16.5.4 使用数据集和数据阅读器使用数据集和数据阅读器 第28页/共35页使用数据集和数据阅读器使用数据集和数据阅读器(续)(续)当确定应用程序应使用 DataReader还是应使用 DataSet时,应考虑应用程序所需的功能类型。DataSet 用于执行以下功能在层间或从 XML Web 服务 对数据进行远程处理 与数据进行动态交互,例如绑定到 Windows 窗体控件或组合并关联来自多个源的数据在应用程序本地缓存数据 提供关系数据的分层 XML 视图并使用 XSL 转换或 XML 路径语言(XPath)查询等工具来处理数据对数据执行大量的处理,而不需要与
24、数据源保持打开的连接,从而将该连接释放给其他客户端使用 如果不需要 DataSet 所提供的功能,则可以使用 DataReader 以只进只读方式返回数据,从而提高应用程序的性能16.5.4 使用数据集和数据阅读器使用数据集和数据阅读器 第29页/共35页ADO.NET 概述连接数据源使用数据集访问数据使用存储过程使用数据阅读器访问数据绑定到 XML 数据第第16章章 使用使用Microsoft ADO.NET 访问数访问数据据第30页/共35页绑定到绑定到 XML 数据数据XML概述 将XML 数据读入DataSet 16.6 绑定到绑定到 XML 数据数据第31页/共35页XML 概述概述
25、对于计算机和用户,数据都必须是易读的定义数据内容和结构数据的结构与数据的表示相分离允许自定义标签和属性 Jake 25000 Ohio 16.6.1 XML 概述概述第32页/共35页将将XML 数据读入数据读入DataSet 创建一个准备读取的XML文件把文件内容读到数据集中把DataSet绑定到DataGrid16.6.2 将将XML 数据读入数据读入DataSet FileStream fs =File.OpenRead(myFile.xml);StreamReader myStreamReader=new StreamReader(fs);DataSet myDataSet=new DataSet();myDataSet.ReadXml(myStreamReader);dataGrid1.DataSource=myDataSet.Tables0;第33页/共35页回顾回顾描述 ADO.NET 对象模型使用ADO.NET 连接数据源使用DataSet和DataReader从数据库取得数据使用DataGrid控件显示从数据库取得的数据使用存储过程从数据库读取数据把XML文件中的数据读入到数据集学习完本章后,将能够:学习完本章后,将能够:第34页/共35页感谢您的欣赏!第35页/共35页
限制150内