版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库技术是计算机应用技术中最重要的组成部分,许多应用程序都离不开数据库的存取操作。VB.NET自身不具备对数据库进行操作的功能,它对数据库的处理是通过.NETFrameWorkSDK中面向数据库编程的类库实现的。9.1ADO.NET概述9.1.1认识ADO.NET对象ADO.NET是由微软MicrosoftActiveXDataObject(ADO)升级发展而来的,是.NET平台全新的数据库访问技术,提供了.NET数据库应用程序的编程接口。它可以被看作是一个介于数据源和数据使用者之间的转换器,能够让开发人员更加方便的在应用程序中使用和操作数据。在ADO.NET中,大量复杂的数据操作的代码被封装起来,所以用户只需编写少量的代码即可完成大量的数据库操作。1.ADO.NET的名称空间ADO.NET是围绕System.Data基本名称空间设计,其他名称空间都是从System.Data派生出来的。在使用中,如果要引用名称空间中的类,必须要导入相应的名称空间。导入名称空间的基本语法如下:Importsnamespace例如,要使用OleDb前缀的类,则必须导入System.Data.OleDb名称空间。具体的语法如下:ImportsSystem.Data.OleDb2.ADO.NET数据提供者在一个典型的.NET数据库应用程序中,用户通过一个.NET的数据提供者同数据库交互。ADO.NET支持两种数据提供者:SQLServer.NET数据提供者和OLEDB.NET数据提供者。类库名称空间访问数据库System.Data.SQLSystem.Data.sqlClientSQLServerSystem.Data.ADOSystem.Data.OleDbOLEDB,如Access3.ADO.NET的工作过程ADO.NET对数据的操作基本上需要四个步骤:A.使用Connection对象建立与数据源的连接。B.使用Command对象给出对数据操作的命令,如查询或者更新数据等。C.执行命令对象并显示数据结果。D.最后关闭数据库连接。9.1.2ADO.NET的常用对象其中,Command对象和DataReader对象可以进行查询,检查查询结果,用Command对象还可进行更新、插入、删除操作,进行动态查询和调用存储过程。DataAdapter对象用于脱机处理数据,可以使用DataAdapter对象的Fill方法将数据从数据库取出,放入内存中的DataSet数据集。DataAdapter对象可以对内存中的DataSet数据集进行更新、插入、删除操作,最后用Update方法将对DataSet数据集的更新、插入、删除操作的结果保存到数据库中。9.2连接和操作数据库
9.2.1使用Connection对象连接数据库数据库连接通常指的是应用程序和数据库的连接。以连接Access数据库为例。1、首先要创建数据库(略)2、连接Access数据库用Connection对象连接Access2010数据库。步骤如下:1)设置数据库连接字符串Access数据库的连接字串示例代码如下:DimstrconnasStringstrconn=”Provider=Microsoft.ACE.OLEDB.12.0;DataSource='d:\data\schedules.accdb'”注意:由于不同的Access版本间存在一些差异,所以要注意相应的OLEDB的版本问题。2)创建指定ConnectionString属性的Connection对象在声明了数据库连接字串后,就可以实例化一个OleDbConnection对象进行连接,示例代码如下:DimobjconnasOleDbConnection=NewOleDbConnection(strconn)3)调用Connection对象的Open()方法打开连接并测试可以调用Open()方法来打开连接。也可以使用Close()方法来关闭连接,示例代码如下:objconn.Open()‘打开连接if(objconn.state=ConnectionState.Open)MessageBox.Show("连接成功!")‘提示连接成功objconnClose()elseMessageBox.Show("连接失败,请检查相关参数!")‘提示连接失败Endif9.2.2Command对象的使用使用Command对象有几个重要的步骤:1)创建Command对象。2)指定对象数据库连接和该对象关联的SQL命令。3)调用对象的Execute方法。1.创建Command对象创建一个支持OLEDB数据源的Command对象的语法结构如下:DimCommand对象asOleDbCommand=newOleDbCommand(String,OleDbConnection)为了能够操纵数据库中的数据,用户可以建立一个OleDbCommand对象,并含有具有合适参数的SQL表达式和连接,示例代码如下:DimobjCmdasNewOleDbCommand(”Select*fromInstructor”,objConn)也可以写成:DimobjCmdasOleDbCommand=NewOleDbCommand()objCmd.Connection=objConnobjCmd.CommandText=”Select*fromInstructor”2.Command对象的属性指定对象数据库连接和该对象关联的SQL命令,需要通过Command对象的属性实现。3.Command对象的方法Command对象执行SQL命令有三种方法。例9.1检索教师信息表“Instructor”中的职工号为“1001”的教师的信息,并将结果显示。(见教材第220页)例9.2统计课程信息表“Course”中的课程数量,并将结果显示。(见教材第221页)例9.3从课程信息表中删除指定课程编号的记录。(见教材第222页)4.参数化查询如果要创建一个使用多次但每次使用不同值的查询,那么应在查询中使用参数,即创建参数查询。参数查询避免了在每次查询中重新建立SQL查询语句,并且可以减少SQL注入漏洞的概率,增强数据库应用程序的安全。例9.4查询教师信息表“Instructor”中指定教师所教授的课程,并显示查询结果。(见教材第223页)9.2.3DataReader对象的使用DataReader对象可以看作是一个简单的数据集,其主要用于从数据源中查询数据。DataReader类被设计为产生只读和只进的数据流,因而只能对数据源进行逐行访问,即每次只能有一行记录保存在服务器的内存中。1.创建DataReader对象使用DataReader的时候,不能直接通过构造函数实例化DataReader类,通常我们使用执行Command类的ExecuteRader方法来返回DataReader对象(如例9.1所示),语法结构如下:DimDataReader对象asOleDbDataReader=Command对象.ExecuteReader()2.使用DataReader对象读取数据DataReader类最常见的用法就是SQL查询或者存储过程返回的记录集。在使用它时,数据库连接必须保持打开状态,另外只能从前往后遍历信息,不能中途停下修改数据。1)遍历DataReader中的记录DataReader对象的Read方法可以判断DataReader对象中的数据是否还有下一行,并将游标下移到下一行,通过该方法可以遍历读取数据库中行的信息,示例代码如下:DimobjCmdasNewOleDbCommand(”Select*fromInstructor”,objConn)DimobjReaderasOleDbDataReader=objCmd.ExecuteReader()while(objReader.Reader()){‘逐行处理记录}2)DataReader访问字段的值从DataReader对象获取数据有两种方法:第一种是Item属性,此属性返回字段索引或者字段名字对应的字段的值。第二种是Get方法,此方法返回由字段索引指定的字段的值。假如现有一个objReader实例对应的SQL语句是“selectInstruName,SexfromInstructor”,则可以使用下面的示例代码取得字段的值。‘使用Item属性DimnameasString=objReader(“Instruname”)‘使用字段名DimsexasString=objReader(“sex”)‘使用字段名或者:DimnameasString=objReader(0)‘使用字段索引DimsexasString=objReader(1)‘使用字段索引‘使用Get方法DimnameasString=objReader.GetString(0)DimsexasString=objReader.GetString(1)9.3DataAdapter对象和数据集DataSet9.3.1认识DataAdapter对象DataAdapter对象主要完成以下两个功能:一是通过连接发送要处理的命令,然后检索返回的数据并且生成DataSet数据集;二是从DataSet对象中将已更改的数据写回到数据源。1.创建DataAdapter对象DataAdapter类表示一组数据命令和一个数据库连接。创建DataAdapter对象就是通过它的构造函数将其实例化,语法结构如下:DimDataAdapter对象asOleDbDataAdapterDataAdapter对象=NewOleDbDataAdapter(string,OleDbConnection)其中,String参数是一条SelectCommand命令,用于指定选取哪些数据以及如何选取数据初始化DataAdapter对象,OleDbConnection参数则是与SelectCommand命令关联的数据库连接对象。2.DataAdapter对象的属性DataAdapter对象由一些Command对象和一个确定DataAdapter和DataSet之间通讯方式的映射属性的集合组成。若要使一个使用DataAdapter对象的DataSet能够和一个数据源之间交换数据,则可以使用DataAdapter属性来指定需要执行的操作,这个属性可以是一条SQL语句或者是存储过程,3.DataAdapter对象的方法1)Fill方法Fill方法用来向DataSet对象中填充由DataAdapter对象从数据库中检索的数据,其语法结构如下:DataAdapter对象.Fill(DataSet,String)其中,DataSet参数用于指定一个有效的DataSet对象,将用数据进行填充;String参数指定了用于表映射的表名称。2)Update方法Update方法向数据库提交存储在DataSet(或DataTable、DataRows)中的更改。该方法会返回一个整数值,其中包含着在数据存储中成功更新的行数,其语法结构如下:DataAdapter对象.Update(DataSet,String)该语句将为DataSet数据集中指定的DataTable表中的每个已插入、已更新或已删除的行执行相应的INSERT、UPDATE或DELETE语句。若用程序代码创建DataAdapter时只设置了SelectCommand属性,没有设置UpdateCommand、DeleteCommand和InsertCommand这三个命令属性,当直接使用Update方法时,程序会出现异常。此时需要创建一个CommandBuilder对象来自动生成用于协调对DataSet
的更改与关联数据库的单表SQL命令。创建CommandBuilder对象时,构造函数参数只要传入对应的DataAdapter对象即可,语法结构如下:DimCommandBuiler对象asOleDbCommandBuilderCommandBuiler对象=NewOleDbCommandBuilder(DataAdapter对象)9.3.2认识DataSet数据集1.DataSet概念和结构DataSet是ADO.NET的核心,是一个存在于内存的数据库,专门用来处理从数据保存体中读出的数据。不管底层的数据是什么,DataSet的行为都是一致的,可以用相同的方式来操作不同数据来源取得的数据。DataSet的一个重要的特点是与数据库或SQL无关。2.DataTable对象DataTable是DataSet中常用的对象,它和数据库中的表的概念十分相似。它是一个包含3种集合的容器。其中DataColumnCollection定义DataTable的结构;DataRowCollection包含数据本身;ConstraintCollection与DataTable的主键(PrimaryKey)属性一起工作,强制执行数据的完整性规则。每个DataTable都包含一个Columns集合和Rows集合。访问Columns集合可以获取或设置每行记录上字段的格式信息。Rows集合包含单个DataRow对象,代表表中的一行或数据记录。每个DataRow都有Item属性,用Columns集合的列名进行索引,获取该行记录上的各字段。开发人员可以通过编程的方式修改DataTable表。向DataTable对象添加新行,具体步骤如下:步骤1.使用DataRow对象的NewRow()方法在DataTable中创建新行,其语法结构如下:DimDateRow对象AsDataRow=DataSet对象.Tables(名称或索引).NewRow()步骤2.设置新行中各字段对应的值。步骤3.通过对DataTable对象的Rows属性使用Add()方法,将新的DataRow添加到DataTable中,其语法结构如下:DataSet对象.Tables(名称或索引).AddRow()步骤4.使用DataTable的AcceptChanges()方法提交更改,其语法结构如下:DataSet对象.Tables(名称或索引).AcceptChanges()在DataTable对象修改行,具体步骤如下:步骤1.设置DataTable的PrimaryKey属性,该属性用于获取或设置充当数据表主键的列的数组,其语法结构如下:DimDataColumn对象数组AsDataColumn()DataSet对象.Tables(名称或索引).PrimaryKey=DataColumn对象数组步骤2.使用Find()方法定位DataTable中想要修改的DataRow。DimDataRow对象asDataRow=DataSet对象.Tables(名称或索引).Rows.Find(主键值)步骤3.更改DataRow的列值。步骤4.使用DataTable的AccessChanges()方法。从DataTable对象删除行,具体步骤如下:步骤1.设置DataTable对象的PrimaryKey属性。步骤2.使用Find()方法定位所需的DataRow。步骤3.使用Delete()方法删除所需的DataRow,其语法结构如下:DataRow对象.delete()步骤4.使用DataTable的AcceptChanges()方法。9.3.3应用DataAdapter对象和DataSet集合操纵数据库例9.5使用DataAdapter对象和DataSet数据集从数据库中读取教师信息表“Instructor”的数据,实现教师信息表中记录的增加、删除和修改功能。(详细设计见教材230页)9.4数据控件及数据绑定9.4.1BindingSource控件BindingSource控件与数据源建立连接,然后将窗体中的控件与BindingSource控件建立绑定关系来实现数据绑定,简化数据绑定的过程。它能够自动管理许多绑定问题,既支持向后台数据库发送命令来检索数据,又支持直接通过BindingSource控件对数据进行访问、排序、筛选和更新操作。例9.6使用数据源配置向导建立BindingSource控件与数据源的连接。
步骤1.在表单中增加一个BindingSource控件,命名为“myBindingSource”,在它的属性“Datasource”选择“添加项目数据源…”,这时会自动弹出“数据源器配置向导”对话框,如图9-8所示。步骤2.选择数据源类型为“数据库”,点击“下一步”,出现如图9-9所示对话框。步骤3.选择数据库模型为“数据集”,点击“下一步”,出现如图9-10所示对话框。步骤4.在“选择您的数据连接”对话框中单击“新建连接(C)…”按钮,出现如图9-11所示对话框。步骤5.单击“更改(C)…”选择要连接的数据源和提供程序。这里,我们选择图中的“MicrosoftAccess数据库文件”,表示连接的数据库为Access,如图9.12所示。步骤6.单击“确定”按钮,返回“添加连接”对话框,如图9-13所示。步骤7.进一步通过单击“浏览(B)…”按钮选择所需连接的数据库文件,如果数据库设置了登陆密码,则需录入相应的密码,最后单击“测试连接”按钮,若弹出“测试连接成功”信息框,则表示VB.NET应用程序已经成功连接到目标数据库。步骤8.单击“确定”按钮完成建立数据连接过程,可看到已经自动生成如图9-14的连接字符串。步骤9.单击“下一步”,出现如图9-15所示对话框,此处可以修改连接字符串的名字。步骤10.单击“下一步”,出现如图9-16所示对话框,设置DataSet的名称,选择数据集中包含的数据库对象,可以包含表和视图两种对象类型。同时,可以进一步选择包含表和视图中的哪些字段。设置结束后,单击“完成”按钮,数据源配置向导过程结束,此时在Form设计视窗中自动产生一个DataSet数据集。这里我们选择了“Instructor”表,生成了数据集“SchedulesDataSet”。例9.7将例9.6中产生的DataSet数据集通过DataGridView控件显示。步骤1.在例9.6的Form窗体中添加DataGridView控件和一个命令按钮,属性设置如表9-19。步骤2.单击DataGridView控件的
图标,打开“DataGridView任务”,在“选择数据源”下拉列表框中选择“myBindingSource”下的“Instructor”表,这时会自动生成“InstructorBindingSource”对象和“Inst
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年观潮教学设计感穿搭
- 10.1(3) 全等三角形 教学设计鲁教版(五四制)数学七年级下册
- 2025-2026学年大单元教学设计《漏》
- 装饰工程施工质量通报与整改方案
- 园艺景观施工方案
- 16.2 奥斯特的发现教学设计初中物理沪粤版九年级下册-沪粤版2012
- 2025-2026学年朗文教材教学设计
- 小儿脑积水术后脑室分流管护理查房
- 铁路电气化改造工程技术方案
- 2025-2026学年满族服饰教学设计
- 2026年上海市普通高中学业水平合格性考试物理模拟卷(含答案详解)
- 2026年人教版七年级下册地理期末学业水平卷(含答案可下载)
- 2026年浙江省群众文化专业、图书资料专业、艺术系列高级专业技术职务任职考试(图书资料)复习题及答案
- 请结合马克思主义基本原理中有关科学社会主义的重要阐述理论联系实际谈一谈你对科学社会主义基本原则的认识(二)
- 岭南师范学院《数学建模》2025-2026学年第二学期期末试卷(A卷)
- 2026年宁夏中考语文一模试卷(含详细答案解析)
- 2026 年常熟市国有资本投资运营集团有限公司招聘笔试模拟试题及答案解析
- T∕AOPA 0092-2025 无人驾驶航空器起降场运行安全评估导则
- 预防医学科疫苗接种常识培训
- 2026年湖南省衡阳市八年级地生会考考试题库(附含答案)
- 桥梁支座安装专项施工方案
评论
0/150
提交评论