1、 Visual Basic Visual Basic 程序设计教程程序设计教程第第9章章 数数据据库访问库访问 Visual Basic 程序程序设计教设计教程程 Visual Basic Visual Basic程序设计教程程序设计教程本章内容安排关系数据库及其应用关系数据库及其应用n关系数据库概述nSQL及其应用利用利用ADO控件访问数据库控件访问数据库利用利用ADO对象访问数据库对象访问数据库 Visual Basic Visual Basic程序设计教程程序设计教程关系数据库概述关系数据库关系数据库n数据表F字段字段F记录记录F主键主键n数据库操作投影投影合并合并 Visual Bas
2、ic Visual Basic程序设计教程程序设计教程SQL 及其应用SQL是通用的数据库语言,几乎为所有的关系数据是通用的数据库语言,几乎为所有的关系数据库管理系统所支持。库管理系统所支持。SQL可用来编写查询或操作数据库的命令,在数据可用来编写查询或操作数据库的命令,在数据库管理系统的驱动下实施对数据库的一切访问(创库管理系统的驱动下实施对数据库的一切访问(创建、维护和查询)。建、维护和查询)。Visual Basic Visual Basic程序设计教程程序设计教程SQL 及其应用对数据库的操作对数据库的操作n插入记录n删除记录n修改记录n查询数据 Visual Basic Visual
3、 Basic程序设计教程程序设计教程SQL 及其应用对数据库的操作对数据库的操作n插入记录insert into Employees (工号,姓名,所属部门,工资)values(1201,吴昊,市场部,3500)n删除记录n修改记录n查询数据 Visual Basic Visual Basic程序设计教程程序设计教程SQL 及其应用对数据库的操作对数据库的操作n插入记录n删除记录delete from Employees where 工号=1201n修改记录n查询数据 Visual Basic Visual Basic程序设计教程程序设计教程SQL 及其应用对数据库的操作对数据库的操作n插入记
4、录n删除记录n修改记录update Employees set 工资=工资*1.2 where 工号=1201n查询数据 Visual Basic Visual Basic程序设计教程程序设计教程SQL 及其应用对数据库的操作对数据库的操作n插入记录n删除记录n修改记录n查询数据select 姓名,所属部门,工资 from Employees where 所属部门=市场部 Visual Basic Visual Basic程序设计教程程序设计教程本章内容安排关系数据库及其应用关系数据库及其应用利用利用ADO控件访问数据库控件访问数据库nADO控件nDataGrid控件nADO控件的操作nDat
5、aGrid控件的操作利用利用ADO对象访问数据库对象访问数据库 Visual Basic Visual Basic程序设计教程程序设计教程ADO 技术简介在在 Visual Basic 程序中,并不能直接使用程序中,并不能直接使用 SQL命令。命令。ADO 技术是访问数据库的最佳途径。技术是访问数据库的最佳途径。Microsoft 既提供了既提供了 ADO 控件、也提供了没有控件、也提供了没有界面的界面的 ADO 对象用于创建数据库应用程序。对象用于创建数据库应用程序。Visual Basic Visual Basic程序设计教程程序设计教程ADO 控件和 DataGrid 控件第一个任务:把
6、数据库中的数据表按照表格的形式第一个任务:把数据库中的数据表按照表格的形式显示在显示在Form窗体中。窗体中。完成这个任务既要使用完成这个任务既要使用 ADO 控件,又要使用控件,又要使用DataGrid 控件。控件。nADO 控件是提供数据的数据源控件。它从数据库中查询并返回有关数据(称为记录集)。nDataGrid 控件是利用数据的绑定控件,它能使数据按表格的形式显示出来。Visual Basic Visual Basic程序设计教程程序设计教程ADO 控件和 DataGrid 控件向工具箱添加向工具箱添加ADO控件和控件和DataGrid控件控件n从【工程】菜单里选择【组件】,显示【组件
7、对话框】;n在这个对话框中选择Microsoft ADO Data Control 6.0选项;n再选择Microsoft DataGrid Control 6.0选项;n最后,关闭这个对话框,ADO数据控件和DataGrid绑定控件即进入工具箱中。Visual Basic Visual Basic程序设计教程程序设计教程ADO 控件和 DataGrid 控件设置设置 ADO 数据控件,数据控件,使使其成为数据源。其成为数据源。主要在属主要在属性对话框中设置以下属性:性对话框中设置以下属性:nConnectionString 属性,设置为提供数据库信息的连接字符串。nRecordSource
8、属性,设置为SQL的select命令或存储过程名称。同时应指定命令类型。把把 DataGrid 控件绑定到数据源控件绑定到数据源 ADO 控件控件。主主要设置其一个属性:要设置其一个属性:nDataSource 属性,将其设定为 ADO 控件即可。Visual Basic Visual Basic程序设计教程程序设计教程ADO 控件的操作主要有以下主要有以下4种操作:种操作:n使记录指针移到第一条记录;n使记录指针移到上一条记录;n使记录指针移到下一条记录;n使记录指针移到最后一条记录。Visual Basic Visual Basic程序设计教程程序设计教程DataGrid 控件的操作Pag
9、eUp键和键和PageDown键键:可在记录集中前后:可在记录集中前后翻页。翻页。光标上、下键光标上、下键:可从一条记录移到另一条记录。使:可从一条记录移到另一条记录。使用窗口右边的垂直滚动条可上下翻看记录。用窗口右边的垂直滚动条可上下翻看记录。光标左、右键光标左、右键:可从一个字段移到另一个字段。当:可从一个字段移到另一个字段。当然也可以用鼠标直接点选某个字段(单元格)。然也可以用鼠标直接点选某个字段(单元格)。当当鼠标鼠标定位在列分界线上并出现伸缩竖线时,按住定位在列分界线上并出现伸缩竖线时,按住鼠标左键,拖动伸缩竖线可扩大或减小列的宽度。鼠标左键,拖动伸缩竖线可扩大或减小列的宽度。Vis
10、ual Basic Visual Basic程序设计教程程序设计教程DataGrid 控件的主要属性AllowAddNew:设为:设为True时,当光标移到最时,当光标移到最后时会添加一条新记录。后时会添加一条新记录。AllowDelete:设为:设为True时,可按键盘上的时,可按键盘上的Del或或Delete 键删除当前记录。键删除当前记录。AllowUpdate:设为:设为True,则当移动记录指针,则当移动记录指针时,对前条记录所做的修改将会被保存。设为时,对前条记录所做的修改将会被保存。设为False,可防止修改。,可防止修改。DataSource:将其设置为某个数据源(:将其设置为
11、某个数据源(ADO数数据控件、或后面要介绍的据控件、或后面要介绍的Recordset对象),即对象),即可按表格的形式显示其中的数据。可按表格的形式显示其中的数据。Visual Basic Visual Basic程序设计教程程序设计教程本章内容安排关系数据库及其应用关系数据库及其应用利用利用ADO控件访问数据库控件访问数据库利用利用ADO对象访问数据库对象访问数据库n连接到数据库n操作数据库n利用查询结果 Visual Basic Visual Basic程序设计教程程序设计教程利用ADO对象访问数据库我们需要更灵活地控制对数据库的访问。我们需要更灵活地控制对数据库的访问。n对数据库的不同访
12、问,其实可以共享一个数据库连接,而不需要为每个查询都建立一个数据库连接。n当不需要某个查询时,相应的对象可以随时关闭并释放,不会始终占用着系统资源。实际开发都要使用实际开发都要使用ADO对象。当然,使用对象。当然,使用ADO对对象,意味着编程人员需要编写更多的代码。象,意味着编程人员需要编写更多的代码。Visual Basic Visual Basic程序设计教程程序设计教程利用ADO对象访问数据库ADO基本的对象有三个,代表了访问数据库的三基本的对象有三个,代表了访问数据库的三个步骤:个步骤:1.连接数据库。由Connection对象负责。2.访问操作数据库。由Command对象负责。3.查
13、询操作的结果,由Recordset对象表示。Visual Basic Visual Basic程序设计教程程序设计教程利用ADO对象访问数据库在使用在使用 ADO 对象之前,需要在自己的工程中添加对象之前,需要在自己的工程中添加对对 ADODB 对象库的引用,否则,无法使用任何对象库的引用,否则,无法使用任何ADO 对象。对象。方法是:方法是:n展开菜单【工程】【引用】;n在引用对话框中,找到并选择“Microsoft ActiveX Data Objects 2.x Library”。Visual Basic Visual Basic程序设计教程程序设计教程连接到数据库用用Connectio
14、n对象连接到数据库。步骤如下:对象连接到数据库。步骤如下:1.创建Connection对象2.设置ConnectionString属性3.调用Open方法 Visual Basic Visual Basic程序设计教程程序设计教程连接到数据库用用Connection对象连接到数据库。步骤如下:对象连接到数据库。步骤如下:1.创建Connection对象Dim con As ADODB.ConnectionSet con=new ADODB.Connection2.设置ConnectionString属性3.调用Open方法 Visual Basic Visual Basic程序设计教程程序设计
15、教程连接到数据库用用Connection对象连接到数据库。步骤如下:对象连接到数据库。步骤如下:1.创建Connection对象2.设置ConnectionString属性con.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:dbGoods.mdb3.调用Open方法 Visual Basic Visual Basic程序设计教程程序设计教程连接到数据库用用Connection对象连接到数据库。步骤如下:对象连接到数据库。步骤如下:1.创建Connection对象2.设置ConnectionString属性con
16、.ConnectionString=Provider=SQLOLEDB;Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI3.调用Open方法 Visual Basic Visual Basic程序设计教程程序设计教程连接到数据库用用Connection对象连接到数据库。步骤如下:对象连接到数据库。步骤如下:1.创建Connection对象2.设置ConnectionString属性3.调用Open方法con.Open Visual Basic Visual Basic程序设计教程程序设计教程连接到数据库
17、Dim con As New ADODB.ConnectionPrivate Sub Form_Load()On Error GoTo Handle con.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:dbGoods.mdb con.Open MsgBox 连接成功连接成功 Exit SubHandle:MsgBox 连接失败连接失败End Sub Visual Basic Visual Basic程序设计教程程序设计教程连接到数据库当此连接不再需要时,可以调用当此连接不再需要时,可以调用Close方法将其关方
18、法将其关闭,然后释放。闭,然后释放。ncon.Close关闭nSet con=Nothing释放 Visual Basic Visual Basic程序设计教程程序设计教程操作访问数据库ADO 的的 Command 对象表示对数据库的操作命对象表示对数据库的操作命令。令。通过通过Command对象,既可以进行数据库各种对对象,既可以进行数据库各种对象的定义,如建立数据表、建立各种约束等,也可象的定义,如建立数据表、建立各种约束等,也可以对数据库中的数据进行诸如添加、删除、修改及以对数据库中的数据进行诸如添加、删除、修改及查询等操作。查询等操作。Visual Basic Visual Basic
19、程序设计教程程序设计教程操作数据库一般按以下方式进行:操作数据库一般按以下方式进行:n创建Command对象n设置CommandType属性n设置CommandText属性n调用Execute方法 Visual Basic Visual Basic程序设计教程程序设计教程操作数据库一般按以下方式进行:操作数据库一般按以下方式进行:n创建Command对象Dim com As New ADODB.CommandSet com.ActiveConnection=conn设置CommandType属性n设置CommandText属性n调用Execute方法 Visual Basic Visual B
20、asic程序设计教程程序设计教程操作数据库一般按以下方式进行:操作数据库一般按以下方式进行:n创建Command对象n设置CommandType属性com.CommandType=AdCmdTextn设置CommandText属性n调用Execute方法 Visual Basic Visual Basic程序设计教程程序设计教程操作数据库一般按以下方式进行:操作数据库一般按以下方式进行:n创建Command对象n设置CommandType属性n设置CommandText属性com.CommandText=delete Goods where 工工号号=1201n调用Execute方法 Visu
21、al Basic Visual Basic程序设计教程程序设计教程操作数据库一般按以下方式进行:操作数据库一般按以下方式进行:n创建Command对象n设置CommandType属性n设置CommandText属性n调用Execute方法com.Execute Visual Basic Visual Basic程序设计教程程序设计教程利用查询结果Recordset 对象表示的是从数据库中查询的结果对象表示的是从数据库中查询的结果记录的集合,并支持对其中的数据进行各种操记录的集合,并支持对其中的数据进行各种操作或处理。作或处理。使用使用Recordset对象的一般方式为:对象的一般方式为:n创建
22、对象n调用Open方法 Visual Basic Visual Basic程序设计教程程序设计教程利用查询结果Recordset 对象表示的是从数据库中查询的结果对象表示的是从数据库中查询的结果记录的集合,并支持对其中的数据进行各种操记录的集合,并支持对其中的数据进行各种操作或处理。作或处理。使用使用Recordset对象的一般方式为:对象的一般方式为:n创建对象Dim rst As ADODB.Recordsetset rst=New ADODB.Recordsetn调用Open方法 Visual Basic Visual Basic程序设计教程程序设计教程Recordset.Openrst
23、.Open Source,ActiveConnection,CursorType,LockType,Options Sourcen可为Command对象、SQL语句、表名、存储过程名。n建议使用Command对象,这样就不用设置后面参数Options。Visual Basic Visual Basic程序设计教程程序设计教程Recordset.Openrst.Open Source,ActiveConnection,CursorType,LockType,Options ActiveConnectionn用于指定所属的 Connection 对象。Visual Basic Visual Bas
24、ic程序设计教程程序设计教程Recordset.Openrst.Open Source,ActiveConnection,CursorType,LockType,Options CursorType:用于设置游标类型。:用于设置游标类型。nadOpenForwardOnly:仅向前游标。nadOpenKeyset:键集游标。只对更改敏感。nadOpenDynamic:动态游标。最敏感。nadOpenStatic:静态游标。不敏感。Visual Basic Visual Basic程序设计教程程序设计教程Recordset.Openrst.Open Source,ActiveConnection
25、,CursorType,LockType,Options LockType:用于设置锁定类型。:用于设置锁定类型。nadLockReadOnly:只读。nadLockPessimistic:保守式记录锁定。nadLockOptimistic开放式记录锁定。nadLockBatchOptimistic开放式批更新。Visual Basic Visual Basic程序设计教程程序设计教程Recordset.Openrst.Open Source,ActiveConnection,CursorType,LockType,Options Options:用于指明参数:用于指明参数Source的类别。
26、的类别。nadCmdText:SQL命令文本nadCmdTable:数据表名称nadCmdStoredProc:存储过程名称 Visual Basic Visual Basic程序设计教程程序设计教程Recordset 对象移动记录指针包括包括4个移动方法,分别是:个移动方法,分别是:nMoveFirst:移到第一条记录nMovePrevious:移到上一条记录nMoveNext:移到下一条记录nMoveLast:移到最后一条记录 Visual Basic Visual Basic程序设计教程程序设计教程Recordset 对象移动记录指针当移动记录指针时,需要随时判断指针的状态,有当移动记录
27、指针时,需要随时判断指针的状态,有以下两个属性:以下两个属性:nBOF:为True时,表示指针在向前移动时,超过了第一条记录的位置。nEOF:为True时,表示指针在向后移动时,超过了最后一条记录的位置。Visual Basic Visual Basic程序设计教程程序设计教程Recordset 对象操作数据AddNewDeleteUpdateUpdateBatchFind criteria,Skip,Direction,start Visual Basic Visual Basic程序设计教程程序设计教程Recordset 对象操作数据AddNewn该方法向Recordset对象中添加一条新
28、记录,并使新记录成为当前记录。DeleteUpdateUpdateBatchFind criteria,Skip,Direction,start Visual Basic Visual Basic程序设计教程程序设计教程Recordset 对象操作数据AddNewDeleten该方法会删除Recordset对象中的当前记录。对于立即更新模式,将在数据库中立即删除。UpdateUpdateBatchFind criteria,Skip,Direction,start Visual Basic Visual Basic程序设计教程程序设计教程Recordset 对象操作数据AddNewDelete
29、Updaten把Recordset对象中已有变化的数据更新到数据库中。用于立即更新模式。UpdateBatchFind criteria,Skip,Direction,start Visual Basic Visual Basic程序设计教程程序设计教程Recordset 对象操作数据AddNewDeleteUpdateUpdateBatchn把Recordset对象中已有变化的数据更新到数据库中。用于批更新模式。Find criteria,Skip,Direction,start Visual Basic Visual Basic程序设计教程程序设计教程Recordset 对象操作数据Add
30、NewDeleteUpdateUpdateBatchFind criteria,Skip,Direction,startn从Recordset 中搜索满足指定条件的记录。如果找到,则找到的记录成为当前记录,否则指针状态为BOF或EOF(取决于搜索的方向)。nSkip:跳过的记录数。Visual Basic Visual Basic程序设计教程程序设计教程Recordset 对象操作数据AddNewDeleteUpdateUpdateBatchFind criteria,Skip,Direction,startnDirection 用于指定搜索的方向。adSearchForward:从第一条向最
31、后一条;:从第一条向最后一条;adSearchBackward:从最后一条向第一条。:从最后一条向第一条。Visual Basic Visual Basic程序设计教程程序设计教程Recordset 对象操作数据AddNewDeleteUpdateUpdateBatchFind criteria,Skip,Direction,startnStart 用于指定搜索的基准位置。adBookmarkCurrent:当前位置(默认):当前位置(默认)adBookmarkFirst:第一条记录:第一条记录adBookmarkLast:最后一条记录:最后一条记录 Visual Basic Visual Basic程序设计教程程序设计教程本章小结 Visual Basic Visual Basic程序设计教程程序设计教程练习书上本章后的编程题:书上本章后的编程题:1和和2。Visual Basic Visual Basic 程序设计教程程序设计教程Good Bye