




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章ADO.NET数据访问接口,4,第2部分VB.NET数据库开发进阶,本部分包括5章:第4章ADO.NET数据访问接口第5章数据绑定与数据控件第6章水晶数据报表设计第7章数据图表系统开发第8章XML与数据Web服务,大纲,ADO.NET的结构与ADO.NET的核心组件Connection、Command、DataReader、DataAdapter和DataSet对象的定义与使用使用VB.NET和ADO.NET操作数据库,4.1数据访问接口技术概述,数据访问接口定义了应用程序访问数据库的方式,方式的不同决定了不同的访问效率以及程序的编写方式。微软数据访问方式的技术包括如下的6种。1.ODBC(OpenDatabaseConnectivity,开放数据库互联)技术,是第一个使用SQL访问不同关系数据库的数据访问技术。使用ODBC应用程序能够通过单一的命令操纵不同的数据库,而开发人员需要做的仅仅只是针对不同的应用加入相应的ODBC驱动。2.DAO(DataAccessObjects,数据访问对象)技术,不像ODBC面向C/C+程序员,它是微软提供给VisualBasic开发人员的一种简单的数据访问方法,用于操纵Access数据库。3.RDO(RemoteDataObject,远程数据对象)技术。在使用DAO访问不同的关系型数据库的时候,数据引擎要在DAO和ODBC之间进行命令的转化,导致了性能的下降,RDO可以有效的防止性能下降。4.OLEDB(ObjectLinkingandEmbeddingDatabase,对象连接嵌入数据)技术。随着越来越多的数据以非关系型格式存储,需要一种新的架构来提供这种应用和数据源之间的无缝连接,基于COM(ComponentObjectModel,组件对象模型)的OLEDB实现了这种需求。5.ADO(ActiveXDataObjects,活动组件数据对象)技术。基于OLEDB之上的ADO更简单、更高级、更适合程序员,同时消除了OLEDB的多种弊端。6.ADO.NET是.NET中新出现的数据访问技术,也可是认为是ADO的高版本。ADO.NET不像以前的ADO版本是站在为了存取数据库的观点而设计的,ADO.NET是为更广泛的数据控制而设计,所以使用起来比以前的ADO更灵活有弹性,也提供了更多的功能。ADO.NET的出现并不是要来取代ADO,而是要提供更有效率的数据存取。,4.1.1ADO与ADO.NET的关系,ADO.NET基于XML和离线计算模型。两者的区别主要有:ADO以Recordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接,而DataSet可以是多个表的集合。ADO必须以在线方式运行,这意味着不论是浏览或更新数据都必须是实时的。ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本,ADO.NET只需要在读取和操作数据库的时候在线。ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范,而ADO.NET基于XML格式,数据类型更为丰富,并且不需要因为COM规范而进行数据类型转换,从而提高了整体性能。ADO.NET为.NET构架提供了优化的数据访问模型,和基于COM的ADO是完全两样的数据访问方式。,4.1.2ADO.NET的基本结构,ADO.NET支持对MicrosoftSQLServer等数据源的一致访问。使用者可以使用ADO.NET来连接到数据源并检索、操作和更新数据。ADO.NET结构如图4-1所示。,4.2ADO.NET核心组件,ADO.NET包括2个核心组件:DataSet和数据提供程序,涉及的5个核心对象分别是:Connection、Command、DataReader、DataAdapter和DataSet对象,,4.2.1DataSet,ADO.NET的核心组件是DataSet,内部用XML描述数据,具有平台无关性。DataSet中常用的对象是DataTable和DataRow等。DataSet通过DataAdapter对象从数据源得到数据,DataAdapter是连接DataSet和数据库的一个桥梁,因此DataAdapter命名为“数据适配器”。DataSet是开发基于.NET平台数据库应用程序最常用的类。DataSet类在ADO.NET中具有特殊的地位,因为DataSet在ADO.NET实现从数据库抽取数据中起到关键作用,在从数据库完成数据读取后,DataSet是数据存放地方,它把各种数据源中的数据在计算机内存中映射成缓存。DataSet有三个特性:1.独立性。2.离线连接。3.XML描述。,4.2.2数据提供程序,每种.NET数据提供程序都包括4个核心对象,分别是表4-1中类的派生类。,4.2.2数据提供程序,1.SQLServer.NET数据提供程序2.OleDb.NET数据提供程序3.OracleDb.NET数据提供程序4.ODBC.NET数据提供程序,4.3ADO.NET五个核心对象详解,ADO.NET对象模型中包括5个数据库访问和操作对象,其中,Connection对象主要负责连接数据库,Command对象主要负责生成并执行SQL语句,DataReader对象主要负责读取数据库中的数据,DataAdapter对象主要负责在Command对象执行完SQL语句后生成并填充DataSet和DataTable,而DataSet对象主要负责存取和更新数据。,4.3.1Connection对象,Connection对象的方法,查看数据库连接状态,案例名称:查看数据库连接状态工程名称:Proj4-1ImportsSystem.Data.OleDbPublicClassForm1声明Connection,DataAdapter和DataSet对象。DimConnAsOleDbConnectionDimdaAsOleDbDataAdapterDimdsAsDataSetPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickTry连接C盘根目录下的persons.mdb数据库文件Conn=NewOleDbConnection()Conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;InitialCatalog=Sales;Password=sa123Conn.Open()DimCommAsNewSqlCommand(TextBox1.Text,Conn)DimdrAsSqlDataReaderdr=Comm.ExecuteReader()DimdtAsDataTabledt=NewDataTable()dt.Load(dr)DataGridView1.DataSource=dtConn.Close()CatchMessageBox.Show(数据库连接有错误!)EndTryEndSubEndClass,使用BingdingSource实现数据绑定,案例名称:使用BingdingSource实现数据绑定工程名称:Proj4-5(节选)Try连接本地SQLServer数据库Conn=NewSqlConnection()Conn.ConnectionString=DataSource=(local);InitialCatalog=Sales;Password=sa123Conn.Open()DimCommAsNewSqlCommand(TextBox1.Text,Conn)DimdrAsSqlDataReaderdr=Comm.ExecuteReader()DimbsAsNewBindingSource()bs.DataSource=drDataGridView1.DataSource=bsConn.Close()CatchMessageBox.Show(数据库连接有错误!)EndTry,3.ExecuteScalar方法,案例名称:使用ExecuteScalar方法工程名称:Proj4-6(节选)Try连接本地SQLServer数据库Conn=NewSqlConnection()Conn.ConnectionString=DataSource=(local);InitialCatalog=Sales;Password=sa123Conn.Open()DimCommAsSqlCommandComm=NewSqlCommand(selectavg(数学)fromgrade,Conn)DimstrAsStringstr=Comm.ExecuteScalar().ToString()Label1.Text=所有人数学的平均成绩为+str+分Conn.Close()CatchMessageBox.Show(数据库连接有错误!)EndTryEndSub,4.ExecuteNonQuery方法,案例名称:使用ExecuteNonQuery方法工程名称:Proj4-7ImportsSystem.Data.SqlClientPublicClassForm1声明Connection,DataAdapter和DataSet对象。DimConnAsSqlConnectionDimdaAsSqlDataAdapterDimdsAsDataSetPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickTry连接本地SQLServer数据库Conn=NewSqlConnection()Conn.ConnectionString=DataSource=(local);InitialCatalog=Sales;Password=sa123Conn.Open()DimStrSQLAsStringStrSQL=insertintograde(学号,姓名,语文,数学,英语)InitialCatalog=Sales;Password=sa123Conn.Open()DimCommAsNewSqlCommand()DimTransAsSqlTransactionTrans=Conn.BeginTransaction()Comm.Connection=ConnComm.Transaction=TransTryComm.CommandText=UPDATEgradeSET数学=100WHERE姓名LIKE%周%Comm.ExecuteNonQuery()Comm.CommandText=UPDATEgradeSET数学=60WHERE姓名LIKE%张%Comm.ExecuteNonQuery()Trans.Commit()Label1.Text=事务运行成功CatchTrans.Rollback()Label1.Text=出现错误,事务已经回滚!FinallyConn.Close()EndTryEndSubEndClass,4.3.3DataReader对象,DataReader对象提供单向只读数据,只能依次读取数据,DataSet中的数据可以任意读取和修改。DataReader对象有一个很重要的方法Read,它是个布尔值,作用是读取下一条数据,当布尔值为真时执行,为假时退出。DataReader从数据库当中检索只读的数据流,存储在客户端的网络缓冲区当中。在内存当中只存储一行,具有开销小,速度快的特点。由于数据不在内存中缓存,所以在检索大量数据时,DataReader是一种较好的选择。DataReader只能通过Command对象ExecuteReader()来创建,不能实例化。DataReader具有独占性,如果在已经打开DataReader的情况下,将不能对Connection进行任何操作,必须在用完时关闭它,调用Close()方法。通过Command对象返回多个结果集,并且通过DataReader对象NextResult()方法来使用。,DataReader对象,案例名称:DataReader对象工程名称:Proj4-9ImportsSystem.Data.SqlClientPublicClassForm1声明Connection,DataAdapter和DataSet对象。DimConnAsSqlConnectionDimdaAsSqlDataAdapterDimdsAsDataSetPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click连接本地SQLServer数据库Conn=NewSqlConnection()Conn.ConnectionString=DataSource=(local);InitialCatalog=Sales;Password=sa123Conn.Open()DimCommAsNewSqlCommand(TextBox1.Text,Conn)DimdrAsSqlDataReaderdr=Comm.ExecuteReader()DimstrOutputAsStringstrOutput=TryWhiledr.Read()strOutput+=dr(学号).ToString()+Space(10)strOutput+=dr(姓名).ToString()+Space(10)strOutput+=dr(语文).ToString()+Space(10)strOutput+=dr(数学).ToString()+Space(10)strOutput+=dr(英语).ToString()+Space(10)strOutput+=Chr(13)+Chr(10)EndWhileCatchMessageBox.Show(出现异常!)Finallydr.Close()Conn.Close()EndTryLabel1.Text=strOutputEndSubEndClass,4.3.4DataAdapter对象,通过DataAdapter对象初始化DataTable,和DataSet对象结合起来在内存存放数据表副本,实现离线式数据库操作。DataAdapter对象允许将DataSet对象中的数据保存到数据源中,可以从数据源中读取数据,并可以进行数据的添加、删除、更新等操作。DataAdapter对象是一个双向通道,用来把数据从数据源中读到一个内存表中,也可以把内存中的数据写更新到一个数据源中。两种情况下使用的数据源可以相同,也可以不相同。这两种操作分别称作填充(Fill)和更新(Update)。DataAdapter对象的常用属性如表4-6所示。,DataAdapter对象的常用属性及说明,DataAdapter对象的方法,1.DataAdapter对象的构造函数,2.DataAdapter对象的Fill方法,当调用Fill方法时,它将向数据存储区传输一条SELECT语句,主要用来填充或刷新DataSet,返回值是影响DataSet的行数。该方法的常用定义如表4-9所示。,使用Fill方法,案例名称:使用Fill方法工程名称:Proj4-10ImportsSystem.Data.SqlClientPublicClassForm1声明Connection,DataAdapter和DataSet对象。DimConnAsSqlConnectionDimdaAsSqlDataAdapterDimdsAsDataSetPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickTry连接本地SQLServer数据库Conn=NewSqlConnection()Conn.ConnectionString=DataSource=(local);InitialCatalog=Sales;Password=sa123Conn.Open()da=NewSqlDataAdapter(TextBox1.Text,Conn)ds=NewDataSet()da.Fill(ds,mytb1)DataGridView1.DataSource=ds.Tables(mytb1)Conn.Close()CatchMessageBox.Show(数据库连接有错误!)EndTryEndSubEndClass,3.DataAdapter对象的Update方法,当调用Update方法时,DataAdapter将检查参数DataSet每一行的RowState属性,根据RowState属性来检查DataSet里的每行是否改变和改变的类型,并依次执行所需的INSERT、UPDATE或DELETE语句,将改变提交到数据库中,同时返回影响DataSet的行数。使用工程Proj4-11演示Update方法的使用,这个工程是一个比较综合的例子,4.DataAdapter对象的Command属性,DataAdapter对象还可以通过4个属性传递数据,给4个属性赋值的对象必须是Command对象。如果Command对象执行的是Select语句,必须将对象传递给SelectCommand属性;如果是Update语句,则传递给UpdateCommand属性;如果是Insert语句,则传递给InsertCommand属性;如果是Delete语句,则传递给DeleteCommand对象。,4.3.5DataSet对象,DateSet对象是实现离线访问技术的核心,DataSet不依赖于数据源,独立存在于内存中。可以把DataSet想象成内存中的数据库,DateSet对象中数据采用XML格式表示,借助XML可以描述具有复杂关系的数据,这使得采用DataSet对象能够容纳相互之间具有复杂关系的数据;因此一个DataSet除了可以包含任意数目的表,每个表一般对应于一个数据库表或视图之外,一个DataSet还可以包含表间关系、数据约束等,所有这些和关系数据库模型基本一致,所以无论它包含的数据来自什么数据源,都会提供一致的关系编程模型。DataSet中的重要对象包括:1.TablesCollection对象。DataSet里的表用DataTable来表示,一个DataSet里面可以包含多个DataTable,这些DataTable就构成了TablesCollection对象。每个DataTable中都包含一个ColumnsColleciton和一个RowsCollection对象。2.RelationsCollection对象。各个DataTable之间的关系通过DataRelation来表达,这些DataRelation构成的集合就是RelationsCollection对象。3.ExtendedProperties对象。用来定义特定的信息,比如密码、更新时间等。,程序创建DataSet对象,案例名称:程序创建DataSet对象工程名称:Proj4-14PublicClassForm1PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadDimmydsAsNewDataSet()DimmydtAsNewDataTable(Squares)DimmydrAsDataRowDimiAsIntegermydt.Columns.Add(NewDataColumn(数字,GetType(Integer)mydt.Columns.Add(NewDataColumn(平方,GetType(Integer)Fori=0To10mydr=mydt.NewRow()mydr(0)=imydr(1)=i*imydt.Rows.Add(mydr)Nextmyds.Tables.Add(mydt)DataGridView1.DataSource=myds.Tables(Squares)EndSubEndClass,使用DataView对象排序,案例名称:使用DataView对象排序工程名称:Proj4-15ImportsSystem.Data.SqlClientPublicClassForm1声明Connection,DataAdapter和DataSet对象。DimConnAsSqlConnectionDimdaAsSqlDataAdapterDimdsAsDataSetPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickTry连接本地SQLServer数据库Conn=NewSqlConnection()Conn.ConnectionString=DataSource=(local);InitialCatalog=Sales;Password=sa12
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夏季防汛考试题及答案
- 北京知识产权培训课程课件
- 食品理化检验检测理论知识考核试题题库及答案
- 2025年金融市场机构基础知识考试题库与解析附含答案
- 2025年疟疾知识培训考试试题(含答案)
- 2024山东省社区《网格员》点睛提分卷(含答案)
- 2024年安全员之A证考试题库及参考答案【夺分金卷】
- 标准日本语课件-第7课
- 呼吸机相关知识试题及答案
- 标准化授课课件
- 硕博论文选题和文献研究方法
- 螃蟹销售合同范本
- 电解质分析仪徐文鑫课件
- 2025年新辅警招聘考试题题库及参考答案
- 《膝关节体格检查》课件
- 2023泛血管疾病危险因素的管理
- 2024CSCO免疫检查点抑制剂相关的毒性管理指南
- 净菜加工行业标准化实施方案
- 2025年上半年内蒙古检察系统招聘用制书记员1428人过渡易考易错模拟试题(共500题)试卷后附参考答案
- 规范办学行为培训
- 数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案
评论
0/150
提交评论