最近,经常看到有人提问相关问题,心血来潮有一股冲动,把这个方面的应用在这里介绍一下。
我使用过的VB6提供的数据库连接控件有两个,一个是Data控件另一个是Adodc控件。
考虑到Data控件只能针对本地数据库的开发应用,并且它只支持VB5中的网格控件DBGrid控件,所以这里主要介绍Adodc控件。(注意:VB5的DBGrid控件,需要把DBGRID32.OCX文件复制到c:\windows\system32\DBGRID32.OCX进行引用)
下面介绍使用Adodc控件与DataGrid控件进行简易数据库的应用:
一.添加Adodc控件与DataGrid控件:
因为这两个控件默认状态下都不在“控件工具箱”内,所以需要手动添加到“控件工具箱”内。
1.添加Adodc控件:
在VB6里,通过菜单来添加该控件,方法:[工程] -- [部件],出现“部件”对话框,在“控件”选项卡里,通过滚动条,找到并勾选:Microsoft Ado Data Control 6.0 (SP6) (OLEDB),然后单击[确定],这样该控件图标就出现在“控件工具箱”里了,你可以像使用其它你熟悉的控件一样,添加到窗体上。
2.添加DataGrid控件:
方法与过程与添加Adodc控件过场相似,勾选的是:Microsoft DataGrid Control 6.0 (SP6) (OLEDB)。
二.连接数据:
为了说明,假设你有数据库文件“数据库.Mdb”,在里边有数据表“学生基本信息”和“学生成绩”。
“学生基本信息”有字段:学号、姓名、性别(都是字符类型)
“学生成绩”有字段:学号、语文、数学、英语(学号字符类型,其它数值类型)
假设你添加的控件为:Adodc1和DataGrid。
1.先将Adodc1控件连接到数据库文件:(有两种方法)
方法1:设置Adodc1的ConnectionString属性,在属性窗口点带有省略号的按钮…选[生成] -- 选Microsoft Jet 4.0 OLE DB Privider -- [下一步]--单击省略号按钮,定位到你保存“数据库.MDB”的位置,选中该数据库,单击[打开],连接成功了,可以测试一下。回到窗体,你会看到Adodc1的ConnectionString 属性里的一大串内容。
方法2:也可以用命令直接设置连接,在运行时通过执行该命令来完成连接,命令如下:
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=C:\Program Files\Microsoft Visual Studio\VB98\ADODC控件实例\数据库.mdbPersist Security Info=False",值得说明以下,这个双引号里的内容,是我的实际情况,因为我在VB98文件夹里,建立了子文件夹“\ADODC控件实例”,并把使用的数据库文件复制到该文件夹里了。这里引号里的一大串内容,你可以从刚在属性窗口里直接复制过来,然后做一些改动,要注意这个改动往往是必要的也是非常关键的,因为考虑到一般情况,你的应用程序不可能安装到“\VB98”这个文件夹,所以一般的改动如下:
将“Source=C:\Program Files\Microsoft Visual Studio\VB98\ADODC控件实例\数据库.mdb”改为“Source=" &App.Path &"\数据库.mdb”即完整的情况如下:
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" &App.Path &"\数据库.mdbPersist Security Info=False"
接下来连接到数据表“学生基本信息”:
方法1:设置Adodc1的RecordSource 属性,在属性窗口点带有省略号的按钮,在“命令类型”里,选:2 – adCmdTable,在"表或存储过程名称"里,选“学生基本信息”,单击确定,你会看到ADODC1的RecordSource 属性栏里是“学生基本信息”。
方法2:也可以用命令直接设置连接:
Adodc1.RecordSource = "学生基本信息"
至此,完成了ADODC1控件与数据库的连接。
三.将DataGrid1绑定到ADODC1控件:
选中窗体上的DataGrid1,设置其DataSource 属性,点右边的下拉按钮,选ADODC1,完成绑定。
设置DataGrid1显示内容与模式,右击窗体上的DataGrid1控件,选"检索字段",选[Y],完成。
至此,你启动窗体,就可以在DataGrid1控件里看到效果了。
可以右击窗体上的DataGrid1控件,选“属性”,进一步作设置,比如:“允许添加”、“允许删除”。
四.常用 *** 作数据库的命令:
1.刷新记录集:
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" &App.Path &"\数据库.mdbPersist Security Info=False"‘连接数据库文件
Adodc1.RecordSource = "学生基本信息" ‘连接数据表
Adodc1.Refresh‘刷新记录集,这个不能漏
2.移动记录:
Adodc1.Recordset.MoveFirst‘记录指针移动到第1条记录
Adodc1.Recordset.MoveNext‘记录指针移动到下1条记录
Adodc1.Recordset.MoveLast‘记录指针移动到最后1条记录
Adodc1.Recordset.MovePrevious 记录指针移动到前1条记录
注意:上面执行Adodc1.Refresh后,如果数据表非空,就自动将记录指针指向第1条记录。
3.编辑更新数据:
首先将记录移动到需要编辑更新的记录,当然在DataGrid1里可以直观地进行修改编辑,也可以用命令;
Adodc1.Recordset.Fields ("姓名") = “王伟” ‘用“王伟”更新当前记录的“姓名”字段
Adodc1.Recordset.Update ‘执行更新,注意这一步不能漏
当然,你可以对某条记录的若干个字段进行更新后,再一次进行Update
4.添加记录:
Adodc1.Recordset.AddNew ‘在数据表的末尾添加一条空记录(所有字段为空)
说明:如果用命令要增加一条记录信息,通常:
1)先用AddNew
2)然后用:
For i = 0 To Adodc1.Recordset.Fields.Count - 1
Adodc1.Recordset.Fields(i) = 内容i
Next i
3)最后用:Adodc1.Recordset.Update
5.删除记录:
首先移动到你要删除那条记录,然后执行:Adodc1.Recordset.Delete
五.关于SQL语句在连接数据表时的一些基本用法:
前面介绍用Adodc控件连接好数据库文件后,要设置其RecordSource来连接数据表,即:Adodc1.RecordSource = "学生基本信息"
其实RecordSource属性,可以使用SQL语法,常用Select语句格式如下:
Select 字段列表 From 数据表名 [Where …] [Order By …]
其中:
字段列表– 是指返回的记录,包含哪些字段,字段名之间用逗号分隔
数据表名 -- 是指从哪个数据表返回信息
例如1:
Adodc1.RecordSource = "Select 学号,姓名 From 学生基本信息"
例如2:
Adodc1.RecordSource = "Select * From 学生基本信息"
例2的结果与Adodc1.RecordSource = "学生基本信息"相同。其中“*”表示所有字段。
Where子句– 根据条件筛选记录
Order By 子句– 设置排序
例如3:
Adodc1.RecordSource = "Select * From 学生基本信息 Where 性别=’女’"
仅返回女生记录。
例如4:
Adodc1.RecordSource = "Select * From 学生基本信息 Where 学号>’300’ And性别=’男’"
仅返回学号大于“300”的男生记录。
例如5:
Adodc1.RecordSource = "Select * From 学生基本信息 Order By 学号"
按照学号从小到大(升序)的次序,返回记录。
例如6:
Adodc1.RecordSource = "Select * From 学生基本信息 Order By 学号/D"
按照学号从大到小(降序)的次序,返回记录。
注意:/D表示从大到小,/A表示从小到大,/A是缺省表示。
关于SQL语法,可以到以下网址查询并运用,非常有价值:
http://www.w3school.com.cn/sql/
六.小技巧:
在使用Adodc1的时候,有一些值得注意的细节:
1.关于Adodc1控件的Eof、Bof属性
Eof – 返回数据表(或返回的记录集)记录指针是超出表尾
Bof – 返回数据表(或返回的记录集)记录指针是超出表头
怎么理解呢?假设你的数据表只有一条记录,当你一开始使用了:
Adodc1.Refresh
后,这时记录指针指向第1条也是唯一的1条记录,这时候Adodc1的Eof和Bof属性都为False(记录指针既没有超出表尾也没有超出表头),如果这时候使用移动到下一条记录命令:
Adodc1.Recordset.MoveNext
那么,Eof为True,Bof 为False。然后,使用命令
Adodc1.Recordset.MovePrevious ‘移动到前一条记录
这时,记录指针指向第1条也是唯一的1条记录,Eof为False,Bof 为False。然后,使用命令
Adodc1.Recordset.MovePrevious ‘移动到前一条记录
这时,指针向前超出表头,即:Eof为False,Bof 为True。
特别的情况,假设你的数据表没有任何记录,当你一开始使用了:
Adodc1.Refresh
这时,Eof为True,Bof 为True。
通常使用这两个属性来判断数据表(或返回的记录集)是否为空:
1)有时候一些数据表一开始可能是空表,即没有记录,但是我们又不知道,通常如下编写代码:
Adodc1.Refresh
If Adodc1.Recordset.EOF And Adodc1.Recordset.BOF Then
‘编写当不存在记录时对数据表 *** 作的代码
Else
‘编写当存在记录时对数据表 *** 作的代码
End If
2.关于空字段的 *** 作:
我们经常需要将找到的某记录的某个字段值,赋予变量,例如
Dim XB As String
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" &App.Path &"\数据库.mdbPersist Security Info=False"
Adodc1.RecordSource = "Select * From 学生基本信息 Where 姓名=’张飞’"
Adodc1.Refresh
XB = Adodc1.Recordset.Fields("性别")
这时,如果该记录的"性别"字段里没有内容,将会出错误提示,所以,我们往往在命令中使用函数IsNull进行判断:
If Not IsNull(Adodc1.Recordset.Fields("性别")) Then
XB = Adodc1.Recordset.Fields("性别")
EndIf
最后,Adodc控件不仅可以连接本地数据库,还可以连接远程数据库,使用几乎与本地数据库一样。
大概想到的就是这些,仅供参考,有不正确的地方请指正。
VB连接MYSQL数据的方法博客分类:
VB
VBMySQLSQLServerSQLSocket
第一步:上网http://dev.mysql.com/downloads/connector/odbc/下载mysql-connector-odbc-5.1.6-win32.msi
第二步:安装mysql-connector-odbc-5.1.6-win32.msi
第三步:运行VB并新建一标准EXE工程, 通过菜单工程->引用 打开”引用”对话框, 找到 MicrosoftActiveX Data Objects x.x Library , 其中 x.x 是版本号, 可能会有很多个, 这里我选择的是2.5
第四步:打开代码窗口, 在 Form_Load 过程中输入下面的代码(具体说明在代码的注释中):
Vb代码
' 定义并创建数据库连接和访问对象
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
' 定义数据库连接字符串变量
Dim strCn As String
' 定义数据库连接参数变量
Dim db_host As String
Dim db_user As String
Dim db_pass As String
Dim db_data As String
' 定义 SQL 语句变量
Dim sql As String
' 初始化数据库连接变量
db_host = "localhost"
db_user = "root"
db_pass = ""
db_data = "erqiuda"
' MySQL ODBC 连接参数
'+------------+---------------------+----------------------------------+
'| 参数名 | 默认值 | 说明 |
'+------------+------------------------------------------------------–+
'| user | ODBC (on Windows) | MySQL 用户名 |
'| server | localhost | MySQL 服务器地址 |
'| database | | 默认连接数据库 |
'| option | 0 | 参数用以指定连接的工作方式 |
'| port | 3306| 连接端口 |
'| stmt | | 一段声明, 可以在连接数据库后运行 |
'| password | | MySQL 用户密码 |
'| socket | | (略) |
'+------------+---------------------+----------------------------------+
' 详细查看官方说明
' http://dev.mysql.com/doc/refman/5.0/en/myodbc-configuration-connection-parameters.html
strCn = "DRIVER={MySQL ODBC 5.1 Driver}" &_
"SERVER=" &db_host &"" &_
"DATABASE=" &db_data &"" &_
"UID=" &db_user &"PWD=" &db_pass &"" &_
"OPTION=3stmt=SET NAMES GB2312"
' stmt=SET NAMES GB2312
' 这句是设置数据库编码方式
' 中文 *** 作系统需要设置成 GB2312
' 这样中文才不会有问题
' 版本要求 mysql 4.1+
' 连接数据库
cn.Open strCn
' 设置该属性, 使 recordcount 和 absolutepage 属性可用
cn.CursorLocation = adUseClient
' 访问表users
sql = "select * from users"
rs.Open sql, cn
MsgBox rs.RecordCount
Function opentable(byval txtPath as string) '【功能:建立数据库连接;状态:完成】Set conn = New ADODB.Connection
conn.CursorLocation = adUseClient
conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0Data Source=" &txtPath &""
Set res = New ADODB.Recordset
End Function
Function closetable() '【功能:关闭数据库连接;状态:完成】
conn.Close
End Function
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)