VB访问数据库方法简介
Visual Basic(简称VB)是一种可视化的、事件驱动型的Windows应用程序开发工具,它在GUI设计、绘图、制表、运算、通信和多媒体开发方面都具有简单易行、功能强大等优点,所以越来越受到开发人员的亲睐。同时,VB在数据库开发方面也具有Foxpro所远不能及的强大功能。VB能够读取和访问Access、Excel、DbaseX、Foxpro、Btrieve和ODBC等多种数据库,并能利用VB自身所带的数据库引擎创建Access数据库。所以VB在管理信息系统(MIS)的开发和建设方面得到了是益广泛的应用。现在,笔者就VB应用数据库的一些方法作一简单的介绍。
VB访问数据库通常有三种途径:第一,通过数据库控制控件Data Control访问;第二,通过VB提供的数据库对象变量编程访问;第三,通过ODBC接口访问ODBC API函数。在这三种方法中,第一种方法操作起来最方便、灵活、易于掌握,同时也最能体现Visual Basic面向对象的特色,故这里以Foxpro2.5的数据库为例,介绍数据库控制控件(Data Control)访问数据库的方法与步骤:
一、 在Form窗口中加入Data Control控件
用鼠标在工具窗口的Data Control控件按钮上双击左键,该对象即出现在Form窗口的中间(控件名为Data1),用鼠标调整好控件的大小及位置。如工具箱中无此控件,可打开主菜单的Tools/Custom,在列表中选中Microsoft Data Control复选框,确认后即可将此控件加入到工具箱中去。
二、 设置联接库
用鼠标单击Data1,按下F4,打开属性窗口,设置Connect属性为Foxpro2.5,设置DatabaseName 为c:\foxprow\student.dbf(假设磁盘上已有这个文件)。
三、 加入字段显示、编辑控件(数据库捆绑控件)
在Form窗口中加入DGrid控件,如不在此控件,可打开主菜单Tools/Custom,在列表中选择Apex Data BroundGrid复选框,确认后即可向工具箱中加入此控件。在Form窗口中单击选中此控件(DGrid1),按下F4打开属性窗口,设置Datasource属性为Data1,在Form窗口中用鼠标右键单击控件DGrid1,选择 Retrieve Fields;再用鼠标右键单击控件DGrid1,选择Edit,用鼠标调整控件及有关字段大小;再用鼠标右键单击控件DGrid1,选择Properties(属性),在弹出窗口中,选择Colums标签,在下拉列表中选Colum1,将Caption属性改为“学号”,选择Colum2,Caption属性改为“姓名”,选择Colum3、4将Caption属性改为“性别”、“专业”,按下“确定”按钮。
再向Form窗口中加入一个按钮控件,将Caption属性设置为“退出”,双击该控件(Command1),在代码窗口中写入“END”,存盘。
此时,一个具备数据库读写、浏览功能的应用程序就建立了,按下F5运行,通过单击Data1的各按钮即可看出当前记录的变化情况。
在此基础上,我们还可以借助数据库控制控件的有关属性和方法进行更灵活的操作和控制。
1、 设置Data1.Visiable=False’将控件设为不可见
2、 将按钮Command2,3,4,5,6,7的Caption属性分别设置为“追加”、“首记录”、“上一条”、“下一条”、“尾记录”、“删除”,双击各按钮,分别写入事件代码:
Sub Command1-Click() ’关闭应用程序
End
End Sub
Sub Command2-Click() ’追加记录
Data1.Recordset .Addnew
Data1.Recordset .Update
Data1.Recordset .MoveLast
End Sub
Sub Command3-Click() ’移向首记录
Data1.Recordset .MoveFirst
End Sub
Sub Command4-Click() ’移向上一条记录
Data1.Recordset .MovePrevius
If Data1.Recordset .Bof Then
Data1.Recordset .MoveFirst
End If
End Sub
Sub Command3-Click() ’移向尾记录
Data1.Recordset .MoveLast
End Sub
Sub Command4-Click() ’移向下一条记录
Data1.Recordset .MoveNext
If Data1.Recordset .Eof Then
Data1.Recordset .MoveLast
End If
End Sub
除此之外,数据库控制控件还有Bookmark、RecordCount等许多属性与方法,能对数据库进行各种方便的操作。
由此可见,数据库控制控件具有数据库操作方面的强大功能。另外,数据库控制控件的RecordSource 属性可用一个SQL语句赋值,以此来有效地调用SQL语句,从而发挥SELECT语句强大的功能,更使数据库控制控件(Data Control)锦上添花。
真正删除数据库的记录
大家知道,缺省情况下,VB 删除记录只是把记录作上个删除标志而已,并没有真正删除。要真正删除记录,你可以使用 VB 提供的以下方法:BeginTrans、CommitTrans、RollBack。其中,BeginTrans 方法开始记录数据库的变动,CommitTrans 方法确认数据库的变动,而 RollBack 方法则可以恢复被删除或修改的记录。它们可以嵌套使用。因此,要恢复被删除的记录,应该在使用 BeginTrans 方法之后及使用 CommiTrans 方法之前使用 RollBack 方法。
不用 DATA 控件操作数据库文件
大家知道,在 VB 中如果使用 DATA 控件访问数据库,那么程序执行就必须要一些大型 DLL 支持。这对于安装盘的发放是一个大问题。那么,在 VB 中能不能不用 DATA 控件访问数据库呢?
在 VB 中不用 DATA 控件而访问数据库,只有一法:将数据库文件当成2进制文件打开。但此法最大困难就是你必须了解数据库文件的结构形式。
比如:FoxBase的DBF文件(我不了解其它数据库的文件结构,大家可以去查查):它由记录头和记录构成。而记录头又由两部分构成:记录头=数据库说明 字段说明。下面列出 FoxBase 数据库说明: FoxBase 数据库说明 起始地址 字节数 含义
1 1 FoxBase 数据库文件标志
2-4 3 最后一次修改日期,3个字节分别为年、月、日
5-8 4 文件记录总数
9-10 2 记录头长度
11-12 2 每个记录长度
13-22 20 未使用
下面列出字段说明,每个字段由 32 个字节构成。
字段说明 起始地址 字节数 含义
1-11 11 字段名称
12 1 字段类型(分别为C、N、D、L等)
13-16 4 该字段在文件中地址
17 1 字段长度
18 1 小数位数
19-32 14 未使用
知道了字段信息说明,就可以使用 复合变量 2进制文件 来操作数据库了。