资源预览内容
第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
第9页 / 共41页
第10页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第十章第十章 数据库访问技术数据库访问技术 10.3 ADO.NET模型 nVB.NET自身并不具备对数据库进行操作的功能,它对数据库的处理是通过.NET FrameWork SDK中面向数据库编程的类库和微软的MDAC(数据访问组件)来实现的。 nMicrosoft .NET Framework SDK 就是.NET软件开发工具包,包括开发人员编写、生成、测试和部署 .NET Framework 应用程序时所需要的一切,如文档、示例以及命令行工具和编译器等,是进行.Net开发的最基本工具。 知识点1 ADO.NET简介 n要了解VB.NET的数据库编程,首先要明白ADO.NET的工作原理以及相关的对象、方法、属性。n数据访问技术是任何实际应用程序的核心部分。 ODBC OLE DB ADO.NET nADO.NET是一个功能强大的数据接口程序。通过ADO.NET所提供的对象,再配合SQL语句就可以访问数据库内的数据,而且凡是ODBC或OLE DB接口访问的数据库(如Dbase、FoxPro、Excel、Access、SQL Server、Oracle等),也可以通过ADO.NET来访问。 知识点2 ADO.NET体系结构 nADO.NET模型主要希望在处理数据的同时,不要一直和数据库联机,而发生一直占用系统资源的现象。为解决此问题,ADO.NET将访问数据和数据处理的部分分开,以达到离线访问的目的。nADO.NET有两个核心组件,他们是.NET Framework数据提供程序和DataSet(数据集) n.NET Framework数据提供程序是一组包括Connection、Command、DataReader和DataAdapter对象在内的组件,负责与物理数据源的连接。 n表10.6 .NET数据提供程序(P211)。nConnection对象提供与数据源的连接;Command对象提供运行访问数据库的命令,传送数据或修改数据的功能;DataReader对象通过Command对象运行SQL查询命令获取数据流;DataAdapter提供连接DataSet和数据源的桥梁。nDataSet是ADO.NET离线数据访问模型中的核心对象,它设计的目的主要是为了实现独立于任何数据源的访问。它其实就是一个存放在内存中的数据暂存区,这些数据必须通过DataAdapter对象与数据库做数据交换。 n在DataSet内部允许同时存放一个或多个不同的数据表对象。可以说DataSet的作用就像内存中的数据库管理系统,离线时,它也能独自完成数据的新建、修改、删除和查询等操作,而不必一直局限在和数据库联机时才能做数据维护的工作。知识点知识点3 ADO.NET数据库访问步骤数据库访问步骤 实现数据库访问的基本步骤如下:n用Connection建立与数据库的连接 通过设置Connection的ConnectionString属性可以连接各种数据源,该属性值是字符串类型。n用Command对象执行SQL命令 连接数据库后,通过Command对象或DataAdapter对象执行Select、Insert、Update等SQL命令,对数据库进行查询、插入、更新等操作。Command对象要执行的SQL命令是通过它的CommandText属性定义的,CommandText属性值也是字符串类型。n创建DataAdapter对象 若不用Command对象执行SQL命令,也可以用DataAdapter对象对数据库进行操作。DataAdapter对象可用于在数据源和DataSet数据集之间交换数据,主要是通过DataReaders快速读取流数据,保存数据到DataSets对象。交换数据包括向DataSet填充数据或把DataSet数据更新回原始数据源。n关闭数据库任务2 数据库访问简单实例 n在窗体上添加一个命令按钮,Text属性值为“显示信息”;再添加一个DataGridView控件 。10.4 OLE DB数据提供程序 n在ADO.NET中,数据提供程序的表现是以类的形式给出,不同的数据提供程序具有不同的类,因此在使用数据提供程序前还要引用相关的命名空间,本节主要介绍OLE DB数据提供程序,它的命名空间是System.Data.OleDb。知识点1 OleDbConnection对象 1OleDbConnection类常用属性类常用属性(1)ConnectionString 该属性获取或设置用于打开数据库的字符串,返回一个字符串,例如已创建一个OleDbConnection对象conn,要设置其ConnectionString属性为连接E盘下的Access数据库db1.mdb: Conn.ConnectionString=(provider=microsoft.jet.oledb.4.0;data source=E:db1.mdmb”)(2)ConnectionTimeout 该属性获取在尝试建立连接时终止尝试并生成错误之前所等待的时间,该属性为只读属性,返回一个Integer类型的值。如以下语句中m_time获取连接数据库错误而终止的时间: Dim m_time As Integer= conn.ConnectionTimeout(3)DataBase 该属性获取当前数据库或连接打开后要使用的数据库的名称,该属性为只读属性,返回一个String类型的值。(4)DataSource 该属性获取数据源的服务器名或文件名,该属性为只读属性,返回一个String类型的值。(5)Provider 该属性获取在连接字符串的“Provider=”子句中指定的OLE DB提供程序的全称。(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;data source=Access 数据库;UserId=用户名;Password=密码; 其中Provider和data source是必选项,如果该数据库没有密码,UserId和Password可以省略。 最后用Open方法打开连接。(2)在属性窗口中建立连接)在属性窗口中建立连接任务任务3设计一个窗体,说明直接建设计一个窗体,说明直接建立连接字符串的连接过程立连接字符串的连接过程 n在窗体上添加一个命令按钮,Text属性值为“连接”;其他属性采用默认值 知识点2 OleDbCommand对象 n当链接到数据库之后,可以使用Command对象对数据库进行操作,可以被概括为CRUD-Create、Read、Update、Delete。一个命令(Command)可以用典型的SQL语句来表达,包括执行选择查询(Select Query)来返回记录集,执行行动查询(Action Query)来更新(增加、编辑或删除)数据库的记录,或者创建并修改数据库的表结构。当然命令(Command)也可以传递参数并返回值。 n创建一个OleDbCommand对象例如mycmd用如下格式: Dim mycmd As OleDb. OleDbCommand=New OleDb. OleDbCommandn也可以通过OleDbCommand的构造函数创建对象,用SQL语句作为参数,格式如下: Dim mycmd As OleDb. OleDbCommand=New OleDb. OleDbCommand(“Select * from student_score”)1. OleDbCommand常用属性常用属性(1)CommandText 该属性获取或设置要对数据源执行的SQL语句或存储过程。(2)CommandTimeout 该属性和OleDbConnection对象的属性相同。(3)CommandType 该属性获取或设置一个指示如何解释CommandText属性,可取值如下:nCommandType.StoredProcedure,指定存储过程nCommandType.TableDirect,指定表nCommandType.Text,指定文本SQL命令例如指定SQL文本命令操作数据源:Mycmd. CommandType = CommandType.Text(4)Connection 该属性获取或设置OleDbCommand需要使用的OleDbConnection对象。如以下语句: Mycmd.connection=conn。(5)Parameters OleDb.NET数据提供程序支持执行命令中包含参数的情况,也就是说,可以使用包含参数的数据命令或存储过程执行数学局筛选操作和数据更新操作。 例如在Student_kc表中查找指定KCH(课程号)的KCM(课程名)、XS(学时)、XF(学分)等信息,需要给KCH赋值,KCH作为参数添加在数据命令中。 给参数赋值就是调用Parameters的Add方法将SQL语句中的参数添加到参数集中,每个参数就是一个Parameters对象,其常用属性及说明见表10.8。n例如查询指定KCH的相关信息的SQL命令:nSelect * From Student_kc where KCH=MKCHnMKCH为参数,需要在执行该语句前赋值,假定mycmd为OleDbCommand对象,利用文本框TextBox赋值:nMycmd.Parameters.Add(“MKCH”,OleDbType.VarChar,10).Value=TextBox1.Textn上面语句中,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,它表示到一个数据库的连接。例如:Dim conn As New OleDbConnectionstr1 = provider=microsoft.jet.oledb.4.0;data source=e:student.mdbconn.ConnectionString=str1conn.open()dim mycmd As New OleDbCommand( “Select * From Student_info,conn)任务任务4 解析解析n在窗体上添加一个命令按钮,Text属性值为“求平均分”;添加两个标签,Text属性为“学分”和“平均分”,再加两个文本框,其他属性采用默认值。 知识点知识点3 OleDbDataReader对象对象 n当执行返回结果集的命令时,需要一个方法从结果集中提取数据。处理结果集的方法有两个:1.使用OleDbDataReader对象(数据阅读器);2.同时使用OleDbDataAdapter对象和DataSet。n使用OleDbDataReader对象只能从数据库中得到只读的,只能向前的数据。 1. OleDbDataReader类常用属性和方法类常用属性和方法 见P220 表10-9和表10-10.2创建OleDbDataReader对象 在ADO.NET中从来不会显式地使用OleDbDataReader对象的构造函数创建OleDbDataReader对象。事实上,OleDbDataReader类没有提供公有的构造函数。一般调用Command类的ExecuteReader方法,例如:Dim mycmd As OleDbCommand(CommandText,connection)Dim myreader as OleDbDataReader =mycmd.ExecuteReader()OleDbDataReader对象最常见的用法就是检索SQL查询或存储过程返回记录。另外OleDbDataReader对象是一个连接的、只向前的和只读的结果集n3遍历OleDbDataReader对象的记录n当ExecuteReader方法返回OleDbDataReader对象时,当前光标的位置是第一条记录的前面,必须调用OleDbDataReader对象的Read方法将光标移到第一条记录,如果要移动到下一条记录,仍然调用Read方法,直到Read方法返回False。因此OleDbDataReader对象遍历记录是顺序读取的,要想遍历整个数据集,需要使用While循环来完成,如:nWhile myReader.Reader() n 读取记录nEnd Whilen4访问字段的值nADO.NET提供了两种方法访问记录中的字段。第一种是Item属性,此属性返回由字段索引或字段名指定的字段值;第二种是Get方法,返回由字段索引指定的字段值。n(1)Item属性nItem属性总是基于0开始编号的,而且在使用时由用户负责类型的转换。例如在Student_info数据表中返回当前记录的第1、2、5个字段,名字分别为XH、XM、ZXF的代码是:nDim mxh as string=cstr(myreader(0)nDim mxm as string=cstr(myreader(1)nDim mzxf as integer=cint(myreader(4)n或nDim mxh as string=cstr(myreader(XH)nDim mxm as string=cstr(myreader(XM)nDim mzxf as integer=cint(myreader(ZXF)n(2)Get方法n每一个OleDbDataReader对象都定义了一组Get方法,那些方法都返回了适当类型的值,如上面的例子用Get方法:nDim mxh as string= myreader.GetString(0)nDim mxm as string=myreader.GetString(1)nDim mzxf as integer= myreader.GetInt32(4)n任务5设计一个窗体,通过OleDbDataReader对象输出Student_info所有学生记录 10.5 数据集数据集DataSet nDataSet是ADO.NET的核心。DataSet是一个存在于内存中的数据库,也就是说它是离线的,并没有同数据库建立即时的连线。可以使用相同的方式来操作从不同数据来源取得的数据。 n在DataSet中可以包含任意数量的DataTable(数据表),且每个DataTable对应一个数据库的数据表(Table)或视图 (View)。一般来说,一个对应DataTable对象的数据表就是一堆数据行(DataRow)与列(DataColumn)的集合。 DataTable会负责维护每一笔数据行保留它的初始状态(Original State)和当前的状态(Current State),以解决多人同时修改数据时引发的冲突问题。 nDataSet是XML与ADO结合的产物,它的一个重要的特点是与数据库或SQL无关。它只是简单地对数据表进行操作,交换数据或是将数据绑定到用户界面上。n知识点知识点1 DataSet对象的创建及常用属性和方法对象的创建及常用属性和方法nDataSet对象包括3个常用的集合:DataTableCollection(数据表集合,包括多个DataTable对象),DataRowCollection(行集合,包含多个DataRow对象),DataColumnCollection(列集合,包含多个DataColumn对象)。DataSet对象必须要在创建后才能使用,创建的格式如下:nDim 对象名 As New DataSetnDim 对象名 As New DataSet(数据集名)n第一种格式未指出数据集名,可以在创建DataSet对象后用DataSetName属性来设置。例如以下代码:nDim conn As String=provider=microsoft.jet.oledb.4.0;data source=e:student.mdbnDim myadpt As New OleDbDataAdapter(“Select * From Student_kc”,conn)nDim Ds As New DataSetnMyadpt.fill(DS, “S_KC”) P226nDataSet对象常用的属性和方法分别见表10.13和表10.14。n知识点知识点2 Tables集合和集合和DataTable对象对象nDataSet对象的Tables属性由表组成,每个表是一个DataTable对象。实际上DataTable对象代表了数据库中的一个表,每个表都有相应的行和列组成。通过索引引用Tables集合中的一个表。1. Tables集合的属性和方法nTables集合的属性和方法如表10.15和10.16所示。P2272. DataTable对象的常用属性和方法nDataTable对象的常用属性和方法见表10.17和表10.18。P227n一个DataTable对象包含一个Columns属性即列集合和一个Rows属性即行集合。3. 建立DataSet中的表n建立包含在数据集中的表的方法有两种。利用OleDbDataAdapter的Fill方法自动建立DataSet中的DataTable对象。将建立的DataTable对象添加到DataSet中。知识点知识点3 Columns集合和集合和DataColumn对象对象 DataTable对象的Columns属性是由列组成的,每个列是一个DataColumn对象。DataColumn对象描述数据表列的结构。 1Columns集合的常用属性和方法 Columns集合的常用属性和方法见表10.19和表10.20。P2282. DataColumn对象 DataColumns对象的常用属性见表10.21,其方法很少用。3创建DataColumn对象知识点知识点4 Rows集合和集合和DataRow对象对象nDataTable对象的Rows属性是由行组成的,每个行是一个DataRow对象。DataRow对象用来表示DataTable中单独的一条记录。每一条记录都包含多个字段,DataRow对象用Items属性表示这些字段。1Rows集合的常用属性和方法nRows集合的常用属性和方法见表10.22和表10.23。2DataRow对象 DataRow对象的常用属性和方法见表10.24和表10.25。3DataRow对象的创建 DataRow对象在使用前必须创建,一般方法是创建DataRow之后,设置DataRow的值,然后调用Add方法添加到DataTable中,最后还可以调用DataTable的AcceptChanges方法以确认是否已添加。 n任务任务6离线离线DataSet的应用的应用-新建及编辑数据新建及编辑数据表表n创建离线DataSet,不需要任何数据源,也没有数据连接对象,数据集存在内存中,本例利用DataTable、 DataRow、 DataColumn等对象的方法创建一个DataTable表,并添加、删除和修改其中数据。n任务任务7 利用利用DataSet及及OleDbDataAdapter查询及更新数据库查询及更新数据库10.6 ADO.NET数据库绑定操作数据库绑定操作 n数据库绑定就是把数据连接到窗体的过程,通过数据绑定可以通过窗体界面直接操作数据库中的数据。n任务任务8 设计一个窗体,利用数据绑定功设计一个窗体,利用数据绑定功能实现对表所有记录的浏览、添加、删能实现对表所有记录的浏览、添加、删除和修改操作除和修改操作n知识点知识点1数据绑定数据绑定1数据绑定和Windows窗体基础知识n数据绑定指的是一个过程,即在运行时自动为包含数据的结构中的一个或多个窗体控件设置属性的过程。nWindows窗体使用户可以轻松绑定到几乎所有包含数据的结构。 nWindows窗体可以进行两种类型的数据绑定:简单数据绑定允许将控件绑定到单个数据元素;复杂数据绑定允许将多个数据元素绑定到一个控件。n知识点知识点2 简单数据绑定和复杂数据绑定简单数据绑定和复杂数据绑定 1通过属性窗口完成 2代码实现n知识点知识点3 数据浏览、添加、删除和修改数据浏览、添加、删除和修改
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号