张妍垚,孙曦东
(中国电子科技集团公司第四十七研究所,沈阳110032)
器件目录数据库系统开发设计的目的是为了提高长期以来器件数据散乱、查找困难等问题。随着计算机技术的发展及其在数据库上的强大应用,能够帮助创建出完备的器件目录的应用程序。
在VB编程中常要与数据库打交道,虽然可以选择各种数据库格式,但对于数据量较小的应用,一般选用Access作为数据库。因为Access数据库比较简单,功能也比较齐全,数据的备份、拷贝都很方便,且程序发布时不需要额外单独安装其它的数据库管理软件。因此,在功能能够满足要求的条件下,Access数据库往往成为小型数据库软件的首选。而且最容易使用的还是Visual Basic的数据库格式—Microsoft Access,因为 Visual Basic与Microsoft Access互相支持,可以使用丰富的特性集。
表是由行和列组成的数据集合,行叫做记录(Record),列叫做字段(Field)。
所谓表和表之间的关系,一般情况下就是指某个表中的主关键字和另外一个表中的外关键字之间的对应关系。
查询不是数据库中存储的表,而是按照各种规则和要求“查”出来的表。
Jet数据库引擎(Microsoft Joint Engineering Technologe)是应用程序和数据库之间的一种接口。它将与数据库相关的内容管理、游标管理和错误处理等具体而复杂的细节问题抽象为一个既高度一致又相对简化的编程接口。对所支持的数据库提供统一的外部接口,将对记录的操作转化为对数据库的物理操作。基于VB的数据库应用程序从逻辑上可分为三部分:用户接口、数据库引擎和数据库存储。由用户接口实现对具体数据库的连接,通过数据库引擎完成数据库存储。
ODBC Direct技术能给应用程序数据库访问加入全新的视角,可以检索一个数据库的大量信息。应用程序向ODBC发出SQL语句并接收作为语句结果的数据。数据源是已安装的数据库服务器,ODBC把特殊的ODBC驱动程序和一个指定的数据库联合起来,数据源定位在本地硬盘或网络上。
最主要的就是用Active X数据对象ADO(active x data objects)这种新的数据访问标准代替了原有的访问对象DAO(date access object)和远程数据访问对象RDO(remote date objects)。
Microsoft ActiveX Data Objects(ADO):使客户端应用程序能通过OLE DB提供者访问和操作数据库服务器中的数据。
ActiveX Data Objects Extensions for DDL and Security(ADOX):将ADO扩展为包括创建、修改和删除的模式对象,如表格和过程,以及包括用于维护用户和组以及管理对象权限的安全对象。
ActiveX Data Objects(Multidimensional)(ADO MD):将ADO扩展为包括指定到多维数据的对象,并允许浏览多维模式、查询立方和检索结果。
ADO具有高度的灵活性,它可以使用相同的编程模式连接到不同的数据提供者,而不管给定提供者的特定特性,具有较低的内存占用率。
具有远程数据服务(RDS)功能,通过RDS可以在一次往返过程中将数据从服务器移动到客户端应用程序或Web页,并在客户端对数据进行处理后将更新结果返回服务器。
同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建,也可以只创建一个“Connection”对象,然后由多个独立的“Recordset”对象来使用它。
ODBC本身是以SQL Server、Oracle等关系数据库作为访问对象,而OLE DB则不仅限于此,它还可以对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取。
首先在Access中创建一个名为“mulu”的表,该表由以下9个字段组成:ID为Access的“mulu”表的主键字段,然后直接设置后8个字段,在输入完了mulu表的各个字段之后,关闭表设计器,Access会提示是否要进行保存表,选择“是”,然后为表起名为“mulu”。因为没有定义主键(primary Key),Access会提示为表加上一个主键,按提示将ID设置为主键即可。设置完以上字段后,再调用Visual Basic程序。
调用Visual Basic程序先安装ADO,在VB的“工程”/“引用”对话框中选择“ActiveX Data Object 2.8 Library”(ADODB)。并将ADO数据控件添加到工具箱中,选择“工程”菜单中“部件”项,选中“Microsoft ADO Data Control 6.0(OLEDB)”,并单击“确定”按钮。
然后创建一个新窗体,设计新窗体属性。在工具箱中双击ADO数据控件的图标(Adodc),向窗体中添加一个ADO控件,设计ADO控件属性,选择使用连接字符串后,选择生成。在提供程序中选择“Microsoft OLE DB Provider for ODBC Drivers“后,选择下一步。连接中指定数据源选择使用数据源名称,然后在下拉列表中选择MS Access Database,在输入要使用的初始目录中输入记录源中Access数据库的名称后,测试连接,提示测试连接成功后点击确定,否则重新输入。命令类型选择2-adCmdTable,表或存储过程名称选择Access数据库的名称,即设置完ADO属性。
对每一个想访问的Access数据库字段,在窗体上添加一个文本框,并且把VB6.0的数据控件对象与数据绑定控件一起,把数据控件放在窗体上,并设置属性:第一个属性DataSource,返回或设置控件的数据源。第二个属性DataMember属性,返回或设置要使用的源中的指定数据集。第三个属性DataField,返回或设置要绑定控件的指定字段。作为绑定到窗体控件中数据的一个直接数据源,要将数据环境对象中一个“用户”Command对象的字段“用户名”绑定到窗体中的一个TextBox控件中去,则需要执行下列步骤:先将一个TextBox控件放到Visual Basic窗体中;在“属性”窗口中,单击Datasource(“数据源”)属性,选择您想绑定到控件的 DataEnvironment对象,如“Adodc1”;单击 DataMember属性,并选择数据环境中的Command对象“rst用户”;单击DataField属性,从绑定到控件的“rst用户”Command对象中选择字段“用户名”。这样,就完成了绑定工作。还有一种更快捷、简便的方法,就是将需要绑定的Command对象拖到窗体中,则窗体就会自动生成这个对象所有字段的标签(Label)名和数据操作及显示区(TextBox)。
编程访问数据环境设计器中的对象。要从一个Visual Basic窗体中编程访问数据环境中的对象“用户”记录,则按照以下步骤执行:在窗体中建一个ListBox控件,在控件中输入目录名。附加到这个控件的代码是用于将“用户”表中的记录在其余的Text-Box控件中显示。则在按钮的Click事件中添加下面的代码:
用户.Text=rst.Fields(索引标识)
示意程序如下(程序示意图如下):
Dim con As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strsql,strsql1 As String
Set con=New ADODB.Connection
Set rst=New ADODB.Recordset
con.ConnectionString="Provider=MSDASQL.1;Persist Security Info=False;Data Source=MS Access Database;Initial Catalog=e:mulu.mdb"
con.Open
strsql1="select*from[mulub]where[name]like '" & Trim(List1.Text)& " '" 'rst.Open strsql1,con,adOpenKeyset,adLockOptimistic
With rst
.CursorLocation=adUseClient
.CursorType=adOpenDynamic
.LockType=adLockOptimistic
.Open strsql1,con,3,3
End With
If rst.RecordCount > 0 Then
Text4.Text=rst.Fields(0)
If Not IsNull(rst.Fields(2))Then
Text1.Text=rst.Fields(2)
Else
Text1.Text=""
End If
If Not IsNull(rst.Fields(3))Then
Text2.Text=rst.Fields(3)
Else
Text2.Text=""
End If
If Not IsNull(rst.Fields(4))Then
Text3.Text=rst.Fields(4)
Else
Text3.Text=""
End If
If Not IsNull(rst.Fields(6))Then
Text5.Text=rst.Fields(6)
Else
Text5.Text=""
End If
Else
MsgBox("没发现项目名称")
End If
rst.Close
con.Close
End sub
图1 程序简单示意图
从上面例子可以看出,与一个ADO Recordset关联的所有方法都可以应用于rst用户,例如添加、更新、删除和遍历记录的方法。
从上面说明可以看出,VB中的数据环境就象一个大的数据控件一样,它可以在不同的窗体中引用和操作。VB提供了强有力的数据库存取能力,将WINDOWS的各种先进特性与强大的数据库管理功能有机地结合在一起。VB有很多有关文本文件的特性,可以使用这些功能打开文本文件并且读取文本数据。这对于我们开发应用程序来说,无疑提供了一个很好的数据工具。
[1][美]E Winemiller,J Roff,B Heyman,R Groom,著.Visual Basic 6.0 数据库开发[M].顾斌,杨德斌,译,北京:清华大学出版社,2001.
[2]林永,张乐强.Visual Basic 6.0用户编程手册[M](第二版).北京:人民邮电出版社,2002.
[3]李楠,李志强.Visual Basic 6.0入门与提高[M].北京:人民邮电出版社,1998.