论文部分内容阅读
摘要:Visual Basic作为一种流行的编程软件,以其易学得到初学者的青睐并被广泛应用,本文从Visual Basic在数据库的应用方面总结出几点经验,以期为开发出高效、美观的数据库应用程序提供一些便利。
关键词:接口对象法;数据控件法;统一数据访问;ADO
中图分类号:TP311.13文献标识码:A 文章编号:1009-3044(2007)04-10932-02
Visual Basic作为微软公司开发的第三代Basic语言,是一种可视化的,面向对象和采用驱动方式的结构化高级程序设计语言,它使用Windows内部的应用程序接口(API)函数以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据库连接(ODBC)等技术。在VB中,目前最流行的是ADO,它是比RDO和DAO更加简单、更加灵活的对象模型。所以本文重点介绍使用ADO作为数据访问接口。
1 VB访问数据库的方法
VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多种方法。
1.1 接口对象法
(1)VB—SQL法:通过DB—Library访问微软的SQL Server,是Visual Basic结构化查询语言;
(2)ODBC API法:开放式的数据库连接(Open Data base Connectivity),是一种公认的关系数据源的接口界面;
(3)DAO/Jet法与DAO/ODBC Direct法:数据访问对象(Data Access Objects),是一种面向对象的界面接口。通过DAO/Jet功能可以访问ISAM 数据库,使用DAO/ODBC Direct功能可以实现远程RDO功能;
(4)RDO 2.0法:远程数据对象(Remote Data Objects)和集合为使用代码来创建和操作一个远程ODBC数据库系统的各个部件提供了一个框架。对象和集合都具有描述数据库的各个部件特征的属性以及用来操作这些部件的方法;
(5)ADO法:Active数据对象(Active Data Objects)实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE—DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。可访问任何一种ODBC数据源和任何经过OLE-DB界面接口的数据源。
1.2 数据控件法
(1)Data Control:是DAO/Jet数据界面的接口;
(2)Data Control/ODBC Direct:是DAO/ODBC Direct数据界面接口;
(3)Remote Data Control/RDC:是RDO数据界面接口;
(4)Advanced Data Connector JADC :ADO数据界面接口。
这些控件提供了一种减少代码实现数据访问的途径,因为可以使用同样的对象、属性和方法来处理各种不同的数据库格式。同时,如果从一种数据库格式变到另一种格式,只需变动少量的代码就可以适应这种改变。甚至可以创建这样的应用程序,在单一的查询或报表中连接来自多个不同数据库的表。
2 新的访问数据库策略
“统一数据访问” (Universal Data Access)的策略是微软随着Web应用软件的迅速发展和现有数据存储形式的多种多样,Visual Basic访问数据库的解决方案面临诸如快速提取分布于企业内部和外部有用商业信息等的多种挑战的情况下提出的新的访问数据库策略。“统一数据访问”提供了高性能的存取包括关系型和非关系型在内的多种数据源,提供独立于开发工具和开发语言的简单的编程接口,这些技术使得企业集成多种数据源、选择更好的开发工具、应用软件、操作平台、建立维护的解决方案成为可能。“统一数据访问”(Universal Data Access)的基础是Microsoft的数据访问组件。这些组件包括ActiveX Data Objects (ADO)、Remote Data Service(RDS,也称“高级数据连接器” 或ADC)、OLE DB和ODBC。
3 最新的数据库访问技术ADO技术
使用VB6开发数据库应用程序时,需要引用对象库“Microsoft ActiveX Data Objects 2.5 Library”,简称ADO。它是VB6数据库最核心的对象群,也是VB数据库开发人员经常引用的对象库。
3.1 使用ADO在原有数据表的基础上产生新表
如果仅仅是在已有数据表的基础上产生新表,只需要引用对象库“Microsoft ActiveX Data Objects 2.5 Library”,再利用“Select Into”语句就可以了。在此不详细叙述。
3.2 使用ADO动态建立新的数据库和表
要利用ADO对象在程序运行过程中创建新的数据库和表,就好像利用Access来建立数据库和表一样,应该引用对象库“Microsoft ActiveX Data Objects 2.5 Library”和“Microsoft ADO Ext 2.1 For DDL Security”。
不妨用一个实例来说明具体的操作过程和方法。我们的实例要达到目的是:在程序运行过程中建立一个数据库,数据库的名称由用户输入。然后在数据库中建立一个名为"txl"的数据表,数据表中有三个字段,它们分别是:"编号"(整数型)、 "姓名"(字符型,宽度为8)、"住址" (字符型,宽度为50),接着在数据表中添加一条记录,最后在DataGrid控件中把记录的内容显示出来,并且让用户在DataGrid控件中任意修改、添加记录。
首先在VB中新建一个窗体,然后在"工程"菜单中引用对象库"Microsoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security"。接着定义三个窗体级的对象变量和一个窗体级的字符串变量,它们的具体定义是:
Dim cata As New ADOX.Catalog
Dim corm As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim pstr As String ’定义该变量是为了后面的书写方便
为了更灵活地创建数据库,可以在窗体中加入1个通用对话框、1个DataGrid控件和3个命令按钮,它们的标题分别是:“创建数据库和表”、“查看”和“更新”。通用对话框的作用是给用户输入数据库文件名和决定数据库的存放位置。“创建数据库和表”命令按钮对应的代码是:
Private Sub Command1_Click()
Dim fm As String’fm变量用来获取用户输入的文件名
CommonDialog1.Filter= "MDB文件(*.mdb) |*.mdb|AllFiles(*.*)|*.*|"
CommonDialog1.FilterIndex = 1
CommonDialog1.InitDir = "D:\txl"
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
cata.Create pstr'创建数据库
Dim tbl As New Table
cat.ActiveConnection = pstr
tbl.Name = "txl"'表的名称
tbl.Columns.Append "编号", adIntegar,'表的第一个字段
tbl.Columns.Append "姓名", adVarWChar, 8'表的第二个字段
tbl.Columns.Append "住址", adVarWChar, 50'表的第三个字段
cata.Tables.Append tbl '建立数据表
corm.Open pstr
rs.CursorLocation = adUseClient
rs.Open "txl", corm, adOpenKeyset, adLockPessimistic
rs.AddNew '往表中添加新记
rs.Fields(0).Value = 9527
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",否则程序不能正常运行。
在程序运行时只要用户单击该命令按钮就可以创建自己所需的数据库。
"查看"命令按钮对应的代码是:
Private Sub Command3_Click()
Set DataGrid1.DataSource = rs
End Sub
"更新"命令按钮对应的代码是:
Private Sub Command4_Click()
rs.UpdateBatch
End Sub
我们这个实例只是用来说明问题,在实际应用当中你可以把它进一步改进,例如:你在窗体中再增加一些文本框和组合框,供用户输入或选择数据表的名称、字段的名称、字段的宽度和小数位数。这样,用户就可以自主地决定数据库的所有内容了,程序的灵活性也就大大提高了。
4 结束语
如果使用的是最新的数据访问接口技术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数据库软件开发过程中进行了调查,该方法在提高程序的灵活性和满足用户的特殊需要方面有很大的作用。
参考文献:
[1] 谭浩强,薛淑斌,袁玫.Visual Basic程序设计[M].北京:清华大学出版社,2000.
[2] Rob K121mn1.轻松学用ADO编程[M],北京:电子工业出版社,2001.
[3]赵斯思.Visual Basic数据库编程技术与实例[M].北京:人民邮电出版社,2004.
[4]周颖.Visual Basic 6.0实例精通[M].北京:清华大学出版社,2000.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:接口对象法;数据控件法;统一数据访问;ADO
中图分类号:TP311.13文献标识码:A 文章编号:1009-3044(2007)04-10932-02
Visual Basic作为微软公司开发的第三代Basic语言,是一种可视化的,面向对象和采用驱动方式的结构化高级程序设计语言,它使用Windows内部的应用程序接口(API)函数以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据库连接(ODBC)等技术。在VB中,目前最流行的是ADO,它是比RDO和DAO更加简单、更加灵活的对象模型。所以本文重点介绍使用ADO作为数据访问接口。
1 VB访问数据库的方法
VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多种方法。
1.1 接口对象法
(1)VB—SQL法:通过DB—Library访问微软的SQL Server,是Visual Basic结构化查询语言;
(2)ODBC API法:开放式的数据库连接(Open Data base Connectivity),是一种公认的关系数据源的接口界面;
(3)DAO/Jet法与DAO/ODBC Direct法:数据访问对象(Data Access Objects),是一种面向对象的界面接口。通过DAO/Jet功能可以访问ISAM 数据库,使用DAO/ODBC Direct功能可以实现远程RDO功能;
(4)RDO 2.0法:远程数据对象(Remote Data Objects)和集合为使用代码来创建和操作一个远程ODBC数据库系统的各个部件提供了一个框架。对象和集合都具有描述数据库的各个部件特征的属性以及用来操作这些部件的方法;
(5)ADO法:Active数据对象(Active Data Objects)实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE—DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。可访问任何一种ODBC数据源和任何经过OLE-DB界面接口的数据源。
1.2 数据控件法
(1)Data Control:是DAO/Jet数据界面的接口;
(2)Data Control/ODBC Direct:是DAO/ODBC Direct数据界面接口;
(3)Remote Data Control/RDC:是RDO数据界面接口;
(4)Advanced Data Connector JADC :ADO数据界面接口。
这些控件提供了一种减少代码实现数据访问的途径,因为可以使用同样的对象、属性和方法来处理各种不同的数据库格式。同时,如果从一种数据库格式变到另一种格式,只需变动少量的代码就可以适应这种改变。甚至可以创建这样的应用程序,在单一的查询或报表中连接来自多个不同数据库的表。
2 新的访问数据库策略
“统一数据访问” (Universal Data Access)的策略是微软随着Web应用软件的迅速发展和现有数据存储形式的多种多样,Visual Basic访问数据库的解决方案面临诸如快速提取分布于企业内部和外部有用商业信息等的多种挑战的情况下提出的新的访问数据库策略。“统一数据访问”提供了高性能的存取包括关系型和非关系型在内的多种数据源,提供独立于开发工具和开发语言的简单的编程接口,这些技术使得企业集成多种数据源、选择更好的开发工具、应用软件、操作平台、建立维护的解决方案成为可能。“统一数据访问”(Universal Data Access)的基础是Microsoft的数据访问组件。这些组件包括ActiveX Data Objects (ADO)、Remote Data Service(RDS,也称“高级数据连接器” 或ADC)、OLE DB和ODBC。
3 最新的数据库访问技术ADO技术
使用VB6开发数据库应用程序时,需要引用对象库“Microsoft ActiveX Data Objects 2.5 Library”,简称ADO。它是VB6数据库最核心的对象群,也是VB数据库开发人员经常引用的对象库。
3.1 使用ADO在原有数据表的基础上产生新表
如果仅仅是在已有数据表的基础上产生新表,只需要引用对象库“Microsoft ActiveX Data Objects 2.5 Library”,再利用“Select Into”语句就可以了。在此不详细叙述。
3.2 使用ADO动态建立新的数据库和表
要利用ADO对象在程序运行过程中创建新的数据库和表,就好像利用Access来建立数据库和表一样,应该引用对象库“Microsoft ActiveX Data Objects 2.5 Library”和“Microsoft ADO Ext 2.1 For DDL Security”。
不妨用一个实例来说明具体的操作过程和方法。我们的实例要达到目的是:在程序运行过程中建立一个数据库,数据库的名称由用户输入。然后在数据库中建立一个名为"txl"的数据表,数据表中有三个字段,它们分别是:"编号"(整数型)、 "姓名"(字符型,宽度为8)、"住址" (字符型,宽度为50),接着在数据表中添加一条记录,最后在DataGrid控件中把记录的内容显示出来,并且让用户在DataGrid控件中任意修改、添加记录。
首先在VB中新建一个窗体,然后在"工程"菜单中引用对象库"Microsoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security"。接着定义三个窗体级的对象变量和一个窗体级的字符串变量,它们的具体定义是:
Dim cata As New ADOX.Catalog
Dim corm As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim pstr As String ’定义该变量是为了后面的书写方便
为了更灵活地创建数据库,可以在窗体中加入1个通用对话框、1个DataGrid控件和3个命令按钮,它们的标题分别是:“创建数据库和表”、“查看”和“更新”。通用对话框的作用是给用户输入数据库文件名和决定数据库的存放位置。“创建数据库和表”命令按钮对应的代码是:
Private Sub Command1_Click()
Dim fm As String’fm变量用来获取用户输入的文件名
CommonDialog1.Filter= "MDB文件(*.mdb) |*.mdb|AllFiles(*.*)|*.*|"
CommonDialog1.FilterIndex = 1
CommonDialog1.InitDir = "D:\txl"
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
cata.Create pstr'创建数据库
Dim tbl As New Table
cat.ActiveConnection = pstr
tbl.Name = "txl"'表的名称
tbl.Columns.Append "编号", adIntegar,'表的第一个字段
tbl.Columns.Append "姓名", adVarWChar, 8'表的第二个字段
tbl.Columns.Append "住址", adVarWChar, 50'表的第三个字段
cata.Tables.Append tbl '建立数据表
corm.Open pstr
rs.CursorLocation = adUseClient
rs.Open "txl", corm, adOpenKeyset, adLockPessimistic
rs.AddNew '往表中添加新记
rs.Fields(0).Value = 9527
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",否则程序不能正常运行。
在程序运行时只要用户单击该命令按钮就可以创建自己所需的数据库。
"查看"命令按钮对应的代码是:
Private Sub Command3_Click()
Set DataGrid1.DataSource = rs
End Sub
"更新"命令按钮对应的代码是:
Private Sub Command4_Click()
rs.UpdateBatch
End Sub
我们这个实例只是用来说明问题,在实际应用当中你可以把它进一步改进,例如:你在窗体中再增加一些文本框和组合框,供用户输入或选择数据表的名称、字段的名称、字段的宽度和小数位数。这样,用户就可以自主地决定数据库的所有内容了,程序的灵活性也就大大提高了。
4 结束语
如果使用的是最新的数据访问接口技术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数据库软件开发过程中进行了调查,该方法在提高程序的灵活性和满足用户的特殊需要方面有很大的作用。
参考文献:
[1] 谭浩强,薛淑斌,袁玫.Visual Basic程序设计[M].北京:清华大学出版社,2000.
[2] Rob K121mn1.轻松学用ADO编程[M],北京:电子工业出版社,2001.
[3]赵斯思.Visual Basic数据库编程技术与实例[M].北京:人民邮电出版社,2004.
[4]周颖.Visual Basic 6.0实例精通[M].北京:清华大学出版社,2000.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。