📄 vb6.0使用ado对象连接数据库.txt
字号:
1////////////////
VB6.0使用ADO对象连接数据库
1. 定义连接对象
Global DBconnect As New ADODB.Connection
2. 执行连接语句
If DBconnect.State = adStateOpen And Not IsEmpty(adStateOpen) Then DBconnect.Close
l 连接ODBC
DBconnect.ConnectionString = "dsn=DataAliasName;uid=UserID;pwd=Passwd;"
l 直接连接Access为
Dbconnect.Provider = "Microsoft.jet.OLEDB.4.0" // Access 97为3.51
DBconnect.ConnectionString = "FilePath\FileName.mdb"
l 连接Oracle
DBconnect.Provider = "MSADORA"
DBconnect.ConnectionString = "user/mypass@servicename
l 连接SQL Server
DBconnect.Provider = "SQLOLEDB.1"
DBconnect.ConnectionString = "DATABASE= ;SERVER= ;UID= ;PWD= ;"
或者可以使用 DBconnect.Open "SERVER" , "USERID" , "PASSWord"
DBConnect.Open
3. 取查询结果集
Global RS As New ADODB.Recordset
Global PS As New ADODB.Recordset
If RS.State = adStateOpen And Not IsEmpty(adStateOpen) Then RS.Close
RS.Open SQLStr, DBconnect, adOpenKeyset
4. 执行SQL语句
DBconn.Execute SQLStr
5. 关闭数据库
DBconnect.Close
2/////////////
VB程序中用ADO对象动态创建数据库和表
1: 问题的提出
在Visual Basic中,常用的数据访问接口有下列三种:数据库访问对象(DAO,Data Access Object)、远程数据库对象(RDO,Remote Data Object)和ActiveX数据对象(ADO,ActiveX Data Object )。数据库访问技术一直在不断进步,而这三种接口的每一种都分别代表了该技术的不同发展阶段。最新的是ADO,它是比RDO和DAO更加简单,然而更加灵活的对象模型。正因如此,越来越多的人在用VB开发数据库软件时使用ADO作为数据访问接口。在开发过程中,我们通常的使用的方法是:先使用数据库管理系统(例如:Microsoft Access)或VB中的可视化数据管理器建立好数据库和数据表结构,然后在程序中通过使用ADODC数据库控件或引用ADO对象与数据库中的表建立连接,再通过数据库感知控件(例如:文本框、DataGrid等)来进行数据库的各种操作。在这种开发过程中,我们有时需要面对这样一个问题:如何让用户在程序运行过程中动态地建立自己所需的数据库和数据表以提高程序的灵活性呢?在程序运行过程中建立自己所需的数据库和数据表,其本质就是用代码(或者说通过编程)来建立数据库和数据表。众所周知,在Foxpro或ASP编程中,这是很容易的一件事件。那么在VB数据库编程中又是怎样来操作的呢?在VB数据库编程中,如果使用DAO作为数据库访问接口技术,则可以用CreateDatabase结合CreateTableDef方法来实现,目前已有不少书和杂志都讲到了这种方法,本文就不再讲述了;但你如果使用的是最新的数据库访问接口技术ADO,你却发现目前的书和杂志上没有文章讲到如何用代码来建立数据库和数据表的方法,可有时我们非常需要用到这种方法,下面我们就来解决这个问题。
2: ADO与ADOX
我们先来对ADO 和ADOX进行简单的认识。在VB6中,使用ADO开发数据库应用程序时,我们要引用对象库"Microsoft ActiveX Data Objects 2.5 Library", 这个东西的简称就是ADO,它是VB6数据库最核心的对象群,也是VB数据库开发人员经常所引用的对象库,在VB6中你可以看到它的各种版本,从2.0版到2.6版都有,很多人对它已经很熟悉,在此我们不再详细介绍。如果要在程序运行过程中创建数据库和表,我们还要引用对象库"Microsoft ADO Ext 2.1. For DDL Security",简称为ADOX,其库文件名为是:Msadox.dll。ADOX是对 ADO 对象和编程模型的扩展,它将 ADO 扩展为包括创建、修改和删除模式对象,如表格和过程。它还包括安全对象,用于维护用户和组,以及授予和撤消对象的权限。ADOX的对象如下表所示:
对象 说明
Catalog 包含描述数据源模式目录的集合。
Column 表示表、索引或关键字的列。
Group 表示在安全数据库内有访问权限的组帐号。
Index 表示数据库表中的索引。
Key 表示数据库表中的主关键字、外部关键字或唯一关键字。
Procedure 表示存储的过程。
Table 表示数据库表,包括列、索引和关键字。
User 表示在安全数据库内具有访问权限的用户帐号。
View 表示记录或虚拟表的过滤集。
ADOX常用方法有:Append(包括Columns、Groups、Indexes、Keys、Procedures、Tables、Users、Views)、Create(创建新的目录)、Delete(删除集合中的对象)、Refresh(更新集合中的对象)等等。有关 ADOX 的详细信息,
3: 在原有数据表的基础上产生新的数据表
如果仅仅是在已有的数据表的基础上产生新的数据表,我们只要引用对象库"Microsoft ActiveX Data Objects 2.5 Library"再利用Select…Into语句就可以了。例如:有一个名为Wage.mdb的数据库,数据库中有一个名为"工资表"数据表,该数据表的字段有:编号、姓名、基本工资、津贴、应发工资、扣款、实发工资等,这个表中已经有很多的记录。现在我们把其中的实发工资大于2000的记录筛选出来组成一个新表,新表的名称由用户从文本框中输入,新表中我们只要三个字段,它们是:编号、姓名、实发工资。我们用下列程序就可以实现:
(事先在窗体中添加一个文本框Text1和一个命令按钮Command1)
www_bitscn_com中国.网管联盟
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim command As New ADODB.command
Private Sub Command1_Click()
Dim bm As String
Dim sql As String
If Text1.Text <>"" Then
bm = Trim(Text1.Text)
sql= "Select 编号,姓名,实发工资 Into " + bm + " From 工资表 Where 实发工资>2000"
Set command.ActiveConnection = conn
command.CommandText = sql
command.Execute
Else
MsgBox "你必须输入一个名字"
End If
Private Sub Form_Load()
Dim str As String
str = App.Path
If Right(str, 1) <>"\" Then
str = str + "\"
End If
pstr = "Provider=Microsoft.Jet.OLEDB.3.51;"
pstr = pstr & "Persist Security Info=False;"
pstr = pstr & "Data Source=" & str & "wage.mdb"
conn.Open pstr
rs.CursorLocation = adUseClient
rs.Open "工资表", conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs
End Sub
当然,我们还可以把程序设计得更好,比如:让用户先在窗口中任意选择所需的字段和一些条件,然后再组合生成一个新表。但无论如何,这种操作只能在从原表的基础上产生一个新表,不能产生一个数据库文件,并且新表和原表放在同一个数据库中。
4: 建立新的数据库和表
前面讲到的方法有一定的局限性,它不能让用户产生自己所需的数据库文件,即使能产生数据表也只能在原有表的基础上生成。我们现在的目的就是让用户利用ADO对象在程序运行过程中创建数据库和表,就好象他利用Access来建立数据库和表一样。为此,我们应该引用对象库"Microsoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security"
我们不妨用一个实例来说明具体的操作过程和方法。我们的实例要达到目的是:在程序运行过程中建立一个数据库,数据库的名称由用户输入。然后在数据库中建立一个名为"MyTable"的数据表,数据表中有三个字段,它们分别是:"编号"(整数型)、 "姓名"(字符型,宽度为8)、"住址" (字符型,宽度为50),接着在数据表中添加一条记录,最后在DataGrid控件中把记录的内容显示出来,并且让用户在DataGrid控件中任意修改、添加记录。
首先在VB中新建一个窗体,然后在"工程"菜单中引用对象库"Microsoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security"。接着定义三个窗体级的对象变量和一个窗体级的字符串变量,它们的具体定义是:
Dim cat As New ADOX.Catalog '不用cat用另外一个名字也可以
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim pstr As String '定义该变量是为了后面的书写方便
为了更灵活地创建数据库,我们可以在窗体中加入一个通用对话框、一个DataGrid控件,三个命令按钮,它们的标题分别是:创建数据库和表、查看、更新。通用对话框的作用是给用户输入数据库文件名和决定数据库的存放位置。 "创建数据库和表"命令按钮对应的代码是:
Private Sub Command1_Click()
Dim fm As String 'fm变量用来获取用户输入的文件名
bbs.bitsCN.com中国网管论坛
CommonDialog1.Filter = "MDB文件(*.mdb)|*.mdb|AllFiles(*.*)|*.*|"
CommonDialog1.FilterIndex = 1
CommonDialog1.InitDir = "D:\Jthpaper"
CommonDialog1.Flags = 6
CommonDialog1.Action = 2
If CommonDialog1.FileName = "" Then
MsgBox "你必须输入一个文件名,请重新保存一次!"
Exit Sub
Else
fm = CommonDialog1.FileName
End If
pstr = "Provider=Microsoft.Jet.OLEDB.4.0;" '不能把这里的4.0改为3.51
pstr = pstr & "Data Source=" & fm
cat.Create pstr '创建数据库
Dim tbl As New Table
cat.ActiveConnection = pstr
tbl.Name = "MyTable" '表的名称
tbl.Columns.Append "编号", adInteger '表的第一个字段
tbl.Columns.Append "姓名", adVarWChar, 8 '表的第二个字段
tbl.Columns.Append "住址", adVarWChar, 50 '表的第三个字段
cat.Tables.Append tbl '建立数据表
conn.Open pstr
rs.CursorLocation = adUseClient
rs.Open "MyTable", conn, adOpenKeyset, adLockPessimistic
rs.AddNew '往表中添加新记录 bitsCN~com
rs.Fields(0).Value = 9801
rs.Fields(1).Value = "孙悟空"
rs.Fields(2).Value = "广州市花果山"
rs.Update
End Sub
上面程序中有一个需要说明的地方,这就是语句:pstr = "Provider=Microsoft.Jet.OLEDB.4.0;",这个语句表示Microsoft Jet OLEDB驱动程序的版本是4.0,这是目前最新的版本,利用它你可以用VB中的ADO对象访问Access2000及其以下版本所建立的数据库。你不能把这里的"4.0"改为"3.51",否则程序不能正常运行;在VB6中,3.51版本的Microsoft Jet OLEDB驱动程序对应的是Access97数据库。换而言之,用这种方法建立的数据库和表跟用Access2000所建立的数据库和表是同一类型的,你只能直接用Access2000来打开,虽然你可以用VB6来访问这种数据库和其中的数据表,但你不能用Access97或VB6中的"可视化数据管理器"来直接打开。
在程序运行时只要用户单击该命令按钮就可以创建自己所需的数据库。"查看"命令按钮对应的代码是:
Private Sub Command3_Click()
Set DataGrid1.DataSource = rs
End Sub
"更新"命令按钮对应的代码是:
Private Sub Command4_Click()
rs.UpdateBatch
End Sub
我们这个实例只是用来说明问题,在实际应用当中你可以把它进一步改进,例如:你在窗体中再增加一些文本框和组合框,供用户输入或选择数据表的名称、字段的名称、字段的宽度和小数位数。这样,用户就可以自主地决定数据库的所有内容了,程序的灵活性也就大大提高了。
5: 结束语
如果你使用的是最新的数据访问接口技术ADO(Microsoft强烈建议大家使用这种最新技术),你又想在程序运行过程中创建数据库文件和数据表,此时,你应该在Visual Basic 6.0中引用对象库"Microsoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security",然后使用ADOX对象的Create、Append等方法就可以实现。 这种方法使用的Microsoft Jet OLEDB驱动程序的版本是4.0,因此,使用这种方法建立的数据库文件和数据表可以直接使用Access2000打开。笔者在VB数据库软件开发过程中已多次使用这种方法,该方法在提高程序的灵活性和满足用户的特殊需要方面有很大的作用。
3///////////
掌握VB中的ADO数据对象编程
那天听到一位同学说他的女朋友是学新闻的可也学会了数据库,可学计算机的自己却还是不会,总觉得有点汗颜.在各网站的论坛上,也常看到网友对数据库的一些操作很难把握.我想简单的介绍一下VB中关于ADO对象的一些常识,供同学们参考.其实本人也是刚刚懂了一点,拼凑出这篇文章,希望高手们看了不要见笑,但同时也希望对初学者有所帮助。
ADO是ActiveX Data Objects 的缩写,是一项新的数据库的存取技术。相对于VB5.0中的DAO他具有更为简化的对象模型,无论是存取本地的还是远程的数据,都提供了一致的接口.就我本人而言,ADO的确比DAO要好用得多。
今天只就ADO的对象模型谈一谈.ADO定义了一个可编程的对象集合.ADO对象模型如图所示:
对于ADO其中对象来说,我觉得比较重要的是:Command,Connection,Recordset对象。
虽然严格的说这是不准确的,但根据我的实际经验确实如此.下面就分别来谈一下。
(1) Connection对象
Connection对象用于建立与数据库的连接.通过连接可从应用程序访问数据源.它保存诸如指针类型,连接字符串,查询超时,连接超时和缺省数据库这样的连接信息.
(2) Command对象
在建立Connection后,可以发出命令操作数据源.一般情况下,Command对象可以在数据库中添加,删除或更新数据,或者在表中进行数据查询.Command对象在定义查询参数或执行一个有输出参数的存储过程时非常有用。
(3) Recordset对象
Recordset对象只代表一个记录集,这个记录集是一个连接的数据库中的表,或者是Command对象的执行结果返回的记录集.在ADO对象模型中,是在行中检查和修改数据的最主要的方法,所有对数据的操作几乎都是在Recordset对象中完成的.Record对象用于指定行,移动行,添加,更改,删除记录。
下面就具体地说说如何用ADO存取数据:
在实际编程过程中使用ADO的一个典型的存取数据的步骤为:
(1) 连接数据源
(2) 打开记录集对象
(3) 使用记录集
(4) 断开连接
那么具体怎么是用呢?分别来看。(我在最后将给出一个完整的使用ADO的实例给大家参考.)
(1) 如何连接数据源
利用Connection对象可以创建一个数据源的连接.应用的方法是Connection对象的Open方法。
语法:
Connection对象.Open ConnectionString, UserID, PassWord, OpenOptions
其中:
·Connection对象为你定义的Connection对象的实例;
·ConnectionString为可选项,包含了连接的数据库的信息;
·UserID 可选项,包含建立连接的用户名;
·PassWord为可选项,包含建立连接的用户密码;
·OpenOptions为可选项,假如设置为adConnectAsync,则连接将异步打开.
(2)打开记录集对象
实际上记录集返回的是一个从数据库取回的查询结果集.因此他有两种打开方法:一种使用记录集的Open方法,另一种是用Connection对象的Execute方法。
(a)记录集的Open方法
语法:
Recordset.Open Source, ActiveConnection, CursorType, LockType, Options
其中:
·Recordset为所定义的记录集对象的实例。
·Source可选项,指明了所打开的记录源信息.可以是合法的命令,对象变量名,SQL语句,表名,存储过程调用,或保存记录集的文件名。
·ActiveConnection可选项,合法的已打开的Connection对象的变量名,或者是包含ConnectionString参数的字符串。
·CursorType可选项,确定打开记录集对象使用的指针类型。
·LockType可选项 确定打开记录集对象使用的锁定类型。
(b)Connection对象的Execute方法
语法:
Set recordset=Connection.Execute(CommandText,RecordsAffected,Options)
参数说明:
·CommandText 一个字符串,返回要执行的SQL命令,表名,存储过程或指定文本。
·RecordsAffected 可选项,Long类型的值,返回操作影响的记录数。
·Options 可选项,Long类型值,指明如何处理CommandText参数。
介绍完了如何打开数据库下面说说怎么使用吧.
(3)使用记录集
(a)添加新的记录:
在ADO中添加新的记录用的方法为:AddNew 它的语法为:
Recordset.AddNew FieldList, Values
·Recordset为记录集对象实例
·FieldList为一个字段名,或者是一个字段数组.
·Values为给要加信息的字段赋的值,如果FiledList为一个字段名,那么Values应为一个单个的数值,假如FiledList为一个字段数组,那么 Values必须也为一个个数,类型与FieldList相同的数组。
再用完AddNew方法为记录集添加新的记录后,应使用UpDate将所添加的的数据存储在数据库中.不过你最好在用UpDate方法之前使用CancelUpdate方法来取消该项操作。
(b)修改记录集
其实修改核对记录集中的数据重新赋值没有什么太大的区别,只要用SQL语句将要修改的字段的一个数据找出来重新赋值就可以了.这里不再细说了。
(c)删除记录
在ADO中删除记录集中的数据的方法为:Delete方法,这与DAO对象的方法相同,但是在ADO中它的能力增强了,可以删掉一组记录了.
它的语法如下:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -