




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十章数据库访问技术,10.3ADO.NET模型,VB.NET自身并不具备对数据库进行操作的功能,它对数据库的处理是通过.NETFrameWorkSDK中面向数据库编程的类库和微软的MDAC(数据访问组件)来实现的。Microsoft.NETFrameworkSDK就是.NET软件开发工具包,包括开发人员编写、生成、测试和部署.NETFramework应用程序时所需要的一切,如文档、示例以及命令行工具和编译器等,是进行.Net开发的最基本工具。,知识点1ADO.NET简介,要了解VB.NET的数据库编程,首先要明白ADO.NET的工作原理以及相关的对象、方法、属性。数据访问技术是任何实际应用程序的核心部分。ODBCOLEDBADO.NETADO.NET是一个功能强大的数据接口程序。通过ADO.NET所提供的对象,再配合SQL语句就可以访问数据库内的数据,而且凡是ODBC或OLEDB接口访问的数据库(如Dbase、FoxPro、Excel、Access、SQLServer、Oracle等),也可以通过ADO.NET来访问。,知识点2ADO.NET体系结构,ADO.NET模型主要希望在处理数据的同时,不要一直和数据库联机,而发生一直占用系统资源的现象。为解决此问题,ADO.NET将访问数据和数据处理的部分分开,以达到离线访问的目的。ADO.NET有两个核心组件,他们是.NETFramework数据提供程序和DataSet(数据集),.NETFramework数据提供程序是一组包括Connection、Command、DataReader和DataAdapter对象在内的组件,负责与物理数据源的连接。表10.6.NET数据提供程序(P211)。Connection对象提供与数据源的连接;Command对象提供运行访问数据库的命令,传送数据或修改数据的功能;DataReader对象通过Command对象运行SQL查询命令获取数据流;DataAdapter提供连接DataSet和数据源的桥梁。,DataSet是ADO.NET离线数据访问模型中的核心对象,它设计的目的主要是为了实现独立于任何数据源的访问。它其实就是一个存放在内存中的数据暂存区,这些数据必须通过DataAdapter对象与数据库做数据交换。在DataSet内部允许同时存放一个或多个不同的数据表对象。可以说DataSet的作用就像内存中的数据库管理系统,离线时,它也能独自完成数据的新建、修改、删除和查询等操作,而不必一直局限在和数据库联机时才能做数据维护的工作。,知识点3ADO.NET数据库访问步骤,实现数据库访问的基本步骤如下:用Connection建立与数据库的连接通过设置Connection的ConnectionString属性可以连接各种数据源,该属性值是字符串类型。用Command对象执行SQL命令连接数据库后,通过Command对象或DataAdapter对象执行Select、Insert、Update等SQL命令,对数据库进行查询、插入、更新等操作。Command对象要执行的SQL命令是通过它的CommandText属性定义的,CommandText属性值也是字符串类型。,创建DataAdapter对象若不用Command对象执行SQL命令,也可以用DataAdapter对象对数据库进行操作。DataAdapter对象可用于在数据源和DataSet数据集之间交换数据,主要是通过DataReaders快速读取流数据,保存数据到DataSets对象。交换数据包括向DataSet填充数据或把DataSet数据更新回原始数据源。关闭数据库,任务2数据库访问简单实例,在窗体上添加一个命令按钮,Text属性值为“显示信息”;再添加一个DataGridView控件。,10.4OLEDB数据提供程序,在ADO.NET中,数据提供程序的表现是以类的形式给出,不同的数据提供程序具有不同的类,因此在使用数据提供程序前还要引用相关的命名空间,本节主要介绍OLEDB数据提供程序,它的命名空间是System.Data.OleDb。,知识点1OleDbConnection对象,1OleDbConnection类常用属性(1)ConnectionString该属性获取或设置用于打开数据库的字符串,返回一个字符串,例如已创建一个OleDbConnection对象conn,要设置其ConnectionString属性为连接E盘下的Access数据库db1.mdb:Conn.ConnectionString=(provider=microsoft.jet.oledb.4.0;datasource=E:db1.mdmb”)(2)ConnectionTimeout该属性获取在尝试建立连接时终止尝试并生成错误之前所等待的时间,该属性为只读属性,返回一个Integer类型的值。如以下语句中m_time获取连接数据库错误而终止的时间:Dimm_timeAsInteger=conn.ConnectionTimeout,(3)DataBase该属性获取当前数据库或连接打开后要使用的数据库的名称,该属性为只读属性,返回一个String类型的值。(4)DataSource该属性获取数据源的服务器名或文件名,该属性为只读属性,返回一个String类型的值。(5)Provider该属性获取在连接字符串的“Provider=”子句中指定的OLEDB提供程序的全称。(6)State该属性获取当前的数据库连接状态。,2常用方法(1)Close该方法关闭与数据库的连接,这时关闭任何打开连接的首选方法,例如关闭Conn对象的连接:Conn.Close()(2)Open该方法打开OleDbConnection对象使用ConnectionString属性所指定的打开数据库连接,例如:Conn.Open()(3)CreateCommand该方法创建并返回一个与该Connection关联的Command对象。(4)Dispose该方法释放System.ComponentModel.Component使用的所有资源。(5)ChangeDatabase该方法为打开的Connection更改当前数据库。,3.建立连接字符串(1)直接建立直接建立字符串的方式是先创建一个OleDbConnection对象,将其ConnectionString属性设置如下的值:provider=microsoft.jet.oledb.4.0;datasource=Access数据库;UserId=用户名;Password=密码;其中Provider和datasource是必选项,如果该数据库没有密码,UserId和Password可以省略。最后用Open方法打开连接。(2)在属性窗口中建立连接,任务3设计一个窗体,说明直接建立连接字符串的连接过程,在窗体上添加一个命令按钮,Text属性值为“连接”;其他属性采用默认值,知识点2OleDbCommand对象,当链接到数据库之后,可以使用Command对象对数据库进行操作,可以被概括为CRUD-Create、Read、Update、Delete。一个命令(Command)可以用典型的SQL语句来表达,包括执行选择查询(SelectQuery)来返回记录集,执行行动查询(ActionQuery)来更新(增加、编辑或删除)数据库的记录,或者创建并修改数据库的表结构。当然命令(Command)也可以传递参数并返回值。,创建一个OleDbCommand对象例如mycmd用如下格式:DimmycmdAsOleDb.OleDbCommand=NewOleDb.OleDbCommand也可以通过OleDbCommand的构造函数创建对象,用SQL语句作为参数,格式如下:DimmycmdAsOleDb.OleDbCommand=NewOleDb.OleDbCommand(“Select*fromstudent_score”),1.OleDbCommand常用属性(1)CommandText该属性获取或设置要对数据源执行的SQL语句或存储过程。(2)CommandTimeout该属性和OleDbConnection对象的属性相同。(3)CommandType该属性获取或设置一个指示如何解释CommandText属性,可取值如下:CommandType.StoredProcedure,指定存储过程CommandType.TableDirect,指定表CommandType.Text,指定文本SQL命令例如指定SQL文本命令操作数据源:Mycmd.CommandType=CommandType.Text,(4)Connection该属性获取或设置OleDbCommand需要使用的OleDbConnection对象。如以下语句:Mycmd.connection=conn。(5)ParametersOleDb.NET数据提供程序支持执行命令中包含参数的情况,也就是说,可以使用包含参数的数据命令或存储过程执行数学局筛选操作和数据更新操作。例如在Student_kc表中查找指定KCH(课程号)的KCM(课程名)、XS(学时)、XF(学分)等信息,需要给KCH赋值,KCH作为参数添加在数据命令中。给参数赋值就是调用Parameters的Add方法将SQL语句中的参数添加到参数集中,每个参数就是一个Parameters对象,其常用属性及说明见表10.8。,例如查询指定KCH的相关信息的SQL命令:Select*FromStudent_kcwhereKCH=MKCHMKCH为参数,需要在执行该语句前赋值,假定mycmd为OleDbCommand对象,利用文本框TextBox赋值:Mycmd.Parameters.Add(“MKCH”,OleDbType.VarChar,10).Value=TextBox1.Text上面语句中,MKCH为参数名(ParameterName),SqlDbType.VarChar指定参数类型为字符型,10为数据的最大长度(size)。,2.OleDbCommand常用方法(1)Cancel该方法取消执行OleDbCommand命令。(2)Dispose该方法同OleDbConnection对象的Dispose方法一样。(3)ExecuteNonQuery该方法执行SQL语句并返回受影响的行。(4)ExecuteReader该方法将CommandText发送到OleDbCommand.Connection,并生成一个OleDbDataReader。(5)ExecuteScalar该方法执行查询,并返回查询所返回的结果集中第一行的第一列。(6)CreateParameter该方法创建OleDbParameter对象的实例。,3创建OleDbCommand对象OleDbCommand类的主要构造函数如下:OleDbCommand()OleDbCommand(CmdText)OleDbCommand(CmdText,connection)其中,CmdText参数指定查询的文本,Connection参数是一个OleDbConnection,它表示到一个数据库的连接。例如:DimconnAsNewOleDbConnectionstr1=provider=microsoft.jet.oledb.4.0;datasource=e:student.mdbconn.ConnectionString=str1conn.open()dimmycmdAsNewOleDbCommand(“Select*FromStudent_info,conn),任务4解析,在窗体上添加一个命令按钮,Text属性值为“求平均分”;添加两个标签,Text属性为“学分”和“平均分”,再加两个文本框,其他属性采用默认值。,知识点3OleDbDataReader对象,当执行返回结果集的命令时,需要一个方法从结果集中提取数据。处理结果集的方法有两个:使用OleDbDataReader对象(数据阅读器);同时使用OleDbDataAdapter对象和DataSet。使用OleDbDataReader对象只能从数据库中得到只读的,只能向前的数据。,1.OleDbDataReader类常用属性和方法见P220表10-9和表10-10.2创建OleDbDataReader对象在ADO.NET中从来不会显式地使用OleDbDataReader对象的构造函数创建OleDbDataReader对象。事实上,OleDbDataReader类没有提供公有的构造函数。一般调用Command类的ExecuteReader方法,例如:DimmycmdAsOleDbCommand(CommandText,connection)DimmyreaderasOleDbDataReader=mycmd.ExecuteReader()OleDbDataReader对象最常见的用法就是检索SQL查询或存储过程返回记录。另外OleDbDataReader对象是一个连接的、只向前的和只读的结果集,3遍历OleDbDataReader对象的记录当ExecuteReader方法返回OleDbDataReader对象时,当前光标的位置是第一条记录的前面,必须调用OleDbDataReader对象的Read方法将光标移到第一条记录,如果要移动到下一条记录,仍然调用Read方法,直到Read方法返回False。因此OleDbDataReader对象遍历记录是顺序读取的,要想遍历整个数据集,需要使用While循环来完成,如:WhilemyReader.Reader()读取记录EndWhile,4访问字段的值ADO.NET提供了两种方法访问记录中的字段。第一种是Item属性,此属性返回由字段索引或字段名指定的字段值;第二种是Get方法,返回由字段索引指定的字段值。(1)Item属性Item属性总是基于0开始编号的,而且在使用时由用户负责类型的转换。例如在Student_info数据表中返回当前记录的第1、2、5个字段,名字分别为XH、XM、ZXF的代码是:Dimmxhasstring=cstr(myreader(0)Dimmxmasstring=cstr(myreader(1)Dimmzxfasinteger=cint(myreader(4)或Dimmxhasstring=cstr(myreader(XH)Dimmxmasstring=cstr(myreader(XM)Dimmzxfasinteger=cint(myreader(ZXF),(2)Get方法每一个OleDbDataReader对象都定义了一组Get方法,那些方法都返回了适当类型的值,如上面的例子用Get方法:Dimmxhasstring=myreader.GetString(0)Dimmxmasstring=myreader.GetString(1)Dimmzxfasinteger=myreader.GetInt32(4),任务5设计一个窗体,通过OleDbDataReader对象输出Student_info所有学生记录,10.5数据集DataSet,DataSet是ADO.NET的核心。DataSet是一个存在于内存中的数据库,也就是说它是离线的,并没有同数据库建立即时的连线。可以使用相同的方式来操作从不同数据来源取得的数据。在DataSet中可以包含任意数量的DataTable(数据表),且每个DataTable对应一个数据库的数据表(Table)或视图(View)。一般来说,一个对应DataTable对象的数据表就是一堆数据行(DataRow)与列(DataColumn)的集合。DataTable会负责维护每一笔数据行保留它的初始状态(OriginalState)和当前的状态(CurrentState),以解决多人同时修改数据时引发的冲突问题。DataSet是XML与ADO结合的产物,它的一个重要的特点是与数据库或SQL无关。它只是简单地对数据表进行操作,交换数据或是将数据绑定到用户界面上。,知识点1DataSet对象的创建及常用属性和方法DataSet对象包括3个常用的集合:DataTableCollection(数据表集合,包括多个DataTable对象),DataRowCollection(行集合,包含多个DataRow对象),DataColumnCollection(列集合,包含多个DataColumn对象)。DataSet对象必须要在创建后才能使用,创建的格式如下:Dim对象名AsNewDataSetDim对象名AsNewDataSet(数据集名)第一种格式未指出数据集名,可以在创建DataSet对象后用DataSetName属性来设置。例如以下代码:DimconnAsString=provider=microsoft.jet.oledb.4.0;datasource=e:student.mdbDimmyadptAsNewOleDbDataAdapter(“Select*FromStudent_kc”,conn)DimDsAsNewDataSetMyadpt.fill(DS,“S_KC”)P226DataSet对象常用的属性和方法分别见表10.13和表10.14。,知识点2Tables集合和DataTable对象DataSet对象的Tables属性由表组成,每个表是一个DataTable对象。实际上DataTable对象代表了数据库中的一个表,每个表都有相应的行和列组成。通过索引引用Tables集合中的一个表。1.Tables集合的属性和方法Tables集合的属性和方法如表10.15和10.16所示。P227,2.DataTable对象的常用属性和方法DataTable对象的常用属性和方法见表10.17和表10.18。P227一个DataTable对象包含一个Columns属性即列集合和一个Rows属性即行集合。3.建立DataSet中的表建立包含在数据集中的表的方法有两种。利用OleDbDataAdapter的Fill方法自动建立DataSet中的DataTable对象。将建立的DataTable对象添加到DataSet中。,知识点3Columns集合和DataColumn对象DataTable对象的Columns属性是由列组成的,每个列是一个DataColumn对象。DataColumn对象描述数据表列的结构。1Columns集合的常用属性和方法Columns集合的常用属性和方法见表10.19和表10.20。P2282.DataColumn对象DataColumns对象的常用属性见表10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南宁房产继承协议书样本
- 双方变更离婚协议书范本
- 合伙人做抖音合同协议书
- 2025拆迁补贴协议书
- bot项目合作合同范本
- 合同企业退伙协议书范本
- 合资建房合同协议书范本
- 卖房协议买方留哪份合同
- 产品投资合同协议书范本
- 协议期内停止或终止合同
- 2025-2026学年济南版(2024)初中生物八年级上册教学计划及进度表
- 2025山西运城市临猗县招聘社区工作者32人(一)考试备考试题及答案解析
- 2025年鞍山市铁西区教育局面向师范类院校应届毕业生校园招聘45人笔试参考题库附答案解析
- 空调与制冷操作考试试题(含答案)
- (2025年)河南省信阳市辅警协警笔试笔试真题(含答案)
- 网络直播带货讲解
- 2025江西九江都昌县公安局招聘警务辅助人员14人笔试备考题库及答案解析
- 肿瘤药物配制注意事项
- GB/T 22126-2025物流中心作业通用规范
- 工管人才面试宝典:高级管理面试题目及答案解析
- 宿舍用水管理办法
评论
0/150
提交评论