论文部分内容阅读
摘 要: 基于Visual FoxPro自身存在的一些缺陷,导致其安全性能不高,功能不强大,为弥补缺陷,更好地发挥其在数据库管理和编程方面的优势,系统说明Visual FoxPro环境下ACCESS数据库的操作应用。首先详细比较Visual FoxPro与ACCESS之间的异同,接着说明Visual FoxPro环境下ACCESS数据库操作出现的主要问题,最后重点阐述Visual FoxPro环境下ACCESS数据库操作的实现方法。
关键词: Visual FoxPro;ACCESS;数据库;操作
中图分类号:TP311.13 文献标识码:A 文章编号:1671-7597(2011)0820118-02
目前,微软公司主要有两个较为流行的桌面数据库开发工具,一个是基于局域网环境的Visual FoxPro,简称VFP,另一个是基于WINDOS环境的Microsoft ACCESS。前者Visual FoxPro(VFP)是作为微软公司兼并FOX公司而得到的一种中小型数据库系统,能够支持结构化查询语言和函数,由于其使用比较方便,因而在国内一段时期广为流行,且多将其作为数据库学习的入门技术。然而,随着人们对计算机的需求加大,VFP也逐渐暴露出在使用方面的不足,比如数据库与数据表相分离、VFP数据表的安全性能不高,因而,现今人们也逐渐将注意力转移到微软公司自主研发的一种桌面办公系统ACCESS数据库软件。这是因为ACCESS数据库的安全性能较高,集ACCESS数据库中的表、查询、窗体、报表、宏、模块六部分于一体,文件单一,且在使用时采用了Visual BASIC的编程语言,这样便与Office中的VBA联系广泛。
当前,利用Visual FoxPro编程方式实现对ACCESS数据库的控制及操作在实际中虽已存在,但通常情况下是以建立ODBC数据源的方式对ACCESS数据表进行操作和控制,使用起来较为复杂,而且在使用中也没有述及到如何在ACCESS数据库中建立数据表、怎样对ACCESS数据库进行压缩和维护、更没有说明Visual FoxPro中的通用型字段与ACCESS中的OLE字段之间的处理办法,这些问题都使得在Visual FoxPro环境下ACCESS数据库的操作应用较为困难。本文正是基于上述问题,探寻在Visual FoxPro环境下操作ACCESS数据库的方法与技术。
1 Visual FoxPro与ACCESS的比较
Visual FoxPro与ACCESS均作为数据库管理系统,在展开研究之间,需要对它们之间的差异进行比较。
1.1 两者编程处理语言不同
首先,Visual FoxPro与ACCESS数据库在文件组织方面有所不同:用Visual FoxPro编程技术可建立不同类型的文件,在VFP数据库中的每个表、索引、报表和程序等内容都是以文件的方式进行存储的。而对于ACCESS数据库,它是将数据库中的每一个对象都集中存储在一个文件中,这个文件就是我们所说的数据库。其次,在编程语言方面,VFP采用的是xbase命令进行编程,而ACCESS是采用Visual Basic Application进行编程,比较简单的程序设计便采用宏。
1.2 两者数据库中包含的内容不同
首先,ACCESS数据库中包含了六种对象,它们分别为表、窗体、报表、查询、宏以及模块,所用对象都存储在ACCESS数据库中的一个物理文件中。其次,VFP数据表可以设置字段的输入掩码、缺省值等字段属性,但ACCESS数据库中对于字段属性的设置吧便更为灵活和丰富,同时在建立、维护以及使用索引方面,ACCESS数据库较VFP更方便。再次,在VFP操作系统中,需要用SET SKIP、SET RELATION命令来完成表与表之间一对多和一对一的关系,而在ACCESS中只需要在桌面上进行操作便可完成。此外,SCCESS数据库中的查询命令相比VFP中的SQL SELECT查询命令功能更加强大,使用更加灵活和方便。
1.3 两种在数据类型上有差异
VFP与ACCESS的数值型字段类型不同。VFP中数值型字段需要给出字段类型和小数位数以及字段类型的宽度,而在ACCESS中,数值型字段的设置却与VFP不同。同时两者在遇到字段为空值时的表现也有些差异。
2 基于Visual FoxPro环境ACCESS数据库操作出现的主要问题
在数据库应用程序开发中,一般的操作主要包含有数据库(表)的建立、操作和维护。但对于数据库而言,还存在其他的一些操作情况,比如ACCESS数据库、表的压缩与修复问题,因为对数据库(表)进行增加、删除和更改后,会产生一些数据垃圾,这样将会占据一定的存储空间,造成空间冗余。因此,在VFP操作系统中,我们可以利用PACK对数据库和表进行压缩、修复;在ACCESS操作系统中,我们也可以采用相应的Compact Database方法予以压缩和修复。然而,在VFP环境下如何对ACCESS数据库进行压缩和修复,这就是摆在我们面前的一个重要问题。
前文中,我们谈及到VFP与ACCESS之间在数据类型上有所不同,那么,在具体操作上,如何实现两种在数据类型上的相应转换?特别是关于VFP中通用型字段与ACCESS中OLE字段的对接问题。
此外,在VFP数据库中,包含有各种各样的数据文件,这样可以根据文件的信息对数据表进行查询。而在ACCESS数据库中,因为所有的数据表都存储在一个数据库中,有时可能知道数据库的信息,却无法查询到数据库中数据表的信息,更何况要在Visual FoxPro环境下实现两种数据库和数据表之间的相互转换。
3 Visual FoxPro环境下ACCESS数据库操作的实现方法
3.1 在VFP中实现ACCESS数据库的创建
在谈及该问题之间,我们需要简单了解下ADO和ADOX。在Visual BASIC中,ADO是其最核心的对象群,通常在使用ADO开发数据库应用程序的情况下,需要引用ADO,如果还需要在程序运行过程中创建数据库或数据表,则还要引用到另一对象库ADOC。相比ADO对象库,ADOX的编程模型更为扩展,包含了数据库(表)的创建、修改和删除,其常用方法主要有Create、Append、Delete。在简单了解了ADOX之后,我们可以利用它来建立ACCESS数据库了。现假设在E盘根目录下创建名为asdf.mdb的ACCESS数据库,前提条件是E盘根目录下没有改数据库,并设定密码为1234,那么建立代码如下:
V catalog=CREATEOBJECT (‘ADOX. Catalog’)
V catalog CREATE(‘Provider=Microsoft Jet OLEDB.4.0;Data Source=D: asdf.fmdb;Jet OLEDB:Database Password=1234’)
V catalog=null
上述代码建立分为两个步骤:一是建立ACCESS数据库,二是释放并关闭对象。在建立数据库过程中,不需要创建ODBC数据源,也不需要使用ACCESS软件,而只要在SYETEM目录中含有M sadox.dll文件便可。同时需要注意的是,相比VFP环境下ACCESS数据库的创建,ACCESS数据表的建立、删除等操作程序更为复杂一些,在此下文中予以叙述。
3.2 在VFP环境下ACCESS数据表的创建
VFP下创建ACCESS数据表的程序比较复杂,首先需要连接ACCESS数据库,其次要解决ACCESS数据表中的字段类型问题,最后才是考虑如何用SQL语言来实现ACCESS数据表的创建。
首先,ACCESS数据库的连接与断开。为了解决好数据库的连接和断开问题,需要先对数据访问组件进行简单的了解。在数据访问组件中,ODBC是一种早期的数据库接口技术,而OLEDB作为一个数据存储对象,位于应用程序和ODBC层之间,能够操作不同类型的数据。而ADO是位于OLEDB之上的应用程序,因此,如要调用ADO,则需先送到OLEDB,然后才会送到ODBC中进行处理。这样的话在进行数据库连接时,便需要先创建ODBC数据源,使用起来就较为复杂,因此,本文将使用VFP中的SQL STEINGCONNECT函数对ACCESS数据库进行连接。在此,先假定abc为指定的数据库,qwe为数据库密码。Nhandle是一个非零正的语句句柄。这样通常下述方式便可连接到ACCESS数据库了。
Nhandle= SQLSTRINGCONNECT(“Driver= { Mircrosoft Access Driver (*.mdb)}; abc=D: asdf.mdb;Qwe=1234”)
对于ACCESS数据库的断开,一般使用VFP中的SQLDISCONNECT函数断开与数据库的连接。
其次,VFP中ACCESS数据类型。在创建ACCESS数据表时,需要弄清ACCESS数据类型,现简要列举部分数据类型的表示方式:文本或字符(TEXT,Varchar,Char),字节(Byte),整型(Shrot,Long),备注(Memo)。
3.3 VFP与ACCESS数据库(数据表)的相互转化
前面的论述已解决VFP数据库向ACCESS转换的部分问题,因此本节内容主要是解决ACCESS数据库如何转换成VFP数据库的问题,在实际操作之前,需要先获知ACCESS数据库中的表名和内容。具体方法是采用SQLTABLES函数将ACCESS数据库中的表名存储到VFP的临时表中,然后再将表中的信息转存为VFP数据库中的信息,这样经过这些步骤之后,我们可以得知ACCESS表和VFP表中数据类型的对应关系。假定ACCESS数据库连接成功后,我们可依靠一些程序进行转换:第一步,列出MDB表信息到ResTable表中;第二步创建一个DBC文件;第三步选择ResTable并遍历游标;第四步生成SQL SELECT的语句字符串,该字符串内含ACCESS数据表中的内容。第五步利用SQLEXEC将表内容送到临时表中;第六步用下划线替代临时表中的表名,以便做VFP文件名;最后,将临时表保存到VFP数据库中。在转换时,需要注意转换后的名称要符合WINDOWS的命名规则。
3.4 VFP中ACCESS数据库的压缩与修复
当用户对ACCESS数据库进行创建、删除等操作后,会产生一些数据垃圾,时间一长,数据库中的数据垃圾会越来越多,这时,便需要对数据库进行压缩。在介绍压缩操作之间,我们先了解下ACCESS数据库中的三种对象模型,分别为ADO、ADOX、JRO。ADO包含了创建、删除和维护数据库所需要的对象;ADOX除了提供上述对象外,还可提供新建数据库中需要的DDL对象;JRO则是与ACCESS数据库一起使用于数据库的压缩操作中。由此,我们可以通过下述方式在 VFP中对ACCESS数据库进行压缩。其具体操作步骤为四:一是确定待压缩修复的文件;二是确定压缩修复后存放的文件;三是删除压缩修复前地文件;四是恢复压缩修复后的文件。在操作过程中,需要注意的是压缩后存放的数据库文件不能存在。
总之,为扩大Visual FoxPro操作系统在数据库领域中的应用范围和应用程度,本文做了一次非常有益的尝试,试着分析了在Visual FoxPro环境下如何对ACCESS数据库进行操作。在实际的操作过程中,我们需要处理非常多的问题,主要有在VFP中实现ACCESS数据库、数据表的创建,VFP与ACCESS数据库之间的相互转化以及ACCESS数据库的压缩与修复等问题。
参考文献:
[1]姜黎莉、姜巍巍,《ACCESS数据库与SQL SERVER数据库》,《知识经济》,2010年,第4期.
[2]赵佳,《ACCESS数据库实践与应用》,《硅谷》,2010年,第9期.
[3]顾莉,《ACCESS数据库系统安全性的实现》,《福建电脑》,2010年,第2期.
[4]刘丽,《VFP、ACCESS、EXCEL之间的数据转换》,《计算机工程与应用》,2006年,增刊103期.
关键词: Visual FoxPro;ACCESS;数据库;操作
中图分类号:TP311.13 文献标识码:A 文章编号:1671-7597(2011)0820118-02
目前,微软公司主要有两个较为流行的桌面数据库开发工具,一个是基于局域网环境的Visual FoxPro,简称VFP,另一个是基于WINDOS环境的Microsoft ACCESS。前者Visual FoxPro(VFP)是作为微软公司兼并FOX公司而得到的一种中小型数据库系统,能够支持结构化查询语言和函数,由于其使用比较方便,因而在国内一段时期广为流行,且多将其作为数据库学习的入门技术。然而,随着人们对计算机的需求加大,VFP也逐渐暴露出在使用方面的不足,比如数据库与数据表相分离、VFP数据表的安全性能不高,因而,现今人们也逐渐将注意力转移到微软公司自主研发的一种桌面办公系统ACCESS数据库软件。这是因为ACCESS数据库的安全性能较高,集ACCESS数据库中的表、查询、窗体、报表、宏、模块六部分于一体,文件单一,且在使用时采用了Visual BASIC的编程语言,这样便与Office中的VBA联系广泛。
当前,利用Visual FoxPro编程方式实现对ACCESS数据库的控制及操作在实际中虽已存在,但通常情况下是以建立ODBC数据源的方式对ACCESS数据表进行操作和控制,使用起来较为复杂,而且在使用中也没有述及到如何在ACCESS数据库中建立数据表、怎样对ACCESS数据库进行压缩和维护、更没有说明Visual FoxPro中的通用型字段与ACCESS中的OLE字段之间的处理办法,这些问题都使得在Visual FoxPro环境下ACCESS数据库的操作应用较为困难。本文正是基于上述问题,探寻在Visual FoxPro环境下操作ACCESS数据库的方法与技术。
1 Visual FoxPro与ACCESS的比较
Visual FoxPro与ACCESS均作为数据库管理系统,在展开研究之间,需要对它们之间的差异进行比较。
1.1 两者编程处理语言不同
首先,Visual FoxPro与ACCESS数据库在文件组织方面有所不同:用Visual FoxPro编程技术可建立不同类型的文件,在VFP数据库中的每个表、索引、报表和程序等内容都是以文件的方式进行存储的。而对于ACCESS数据库,它是将数据库中的每一个对象都集中存储在一个文件中,这个文件就是我们所说的数据库。其次,在编程语言方面,VFP采用的是xbase命令进行编程,而ACCESS是采用Visual Basic Application进行编程,比较简单的程序设计便采用宏。
1.2 两者数据库中包含的内容不同
首先,ACCESS数据库中包含了六种对象,它们分别为表、窗体、报表、查询、宏以及模块,所用对象都存储在ACCESS数据库中的一个物理文件中。其次,VFP数据表可以设置字段的输入掩码、缺省值等字段属性,但ACCESS数据库中对于字段属性的设置吧便更为灵活和丰富,同时在建立、维护以及使用索引方面,ACCESS数据库较VFP更方便。再次,在VFP操作系统中,需要用SET SKIP、SET RELATION命令来完成表与表之间一对多和一对一的关系,而在ACCESS中只需要在桌面上进行操作便可完成。此外,SCCESS数据库中的查询命令相比VFP中的SQL SELECT查询命令功能更加强大,使用更加灵活和方便。
1.3 两种在数据类型上有差异
VFP与ACCESS的数值型字段类型不同。VFP中数值型字段需要给出字段类型和小数位数以及字段类型的宽度,而在ACCESS中,数值型字段的设置却与VFP不同。同时两者在遇到字段为空值时的表现也有些差异。
2 基于Visual FoxPro环境ACCESS数据库操作出现的主要问题
在数据库应用程序开发中,一般的操作主要包含有数据库(表)的建立、操作和维护。但对于数据库而言,还存在其他的一些操作情况,比如ACCESS数据库、表的压缩与修复问题,因为对数据库(表)进行增加、删除和更改后,会产生一些数据垃圾,这样将会占据一定的存储空间,造成空间冗余。因此,在VFP操作系统中,我们可以利用PACK对数据库和表进行压缩、修复;在ACCESS操作系统中,我们也可以采用相应的Compact Database方法予以压缩和修复。然而,在VFP环境下如何对ACCESS数据库进行压缩和修复,这就是摆在我们面前的一个重要问题。
前文中,我们谈及到VFP与ACCESS之间在数据类型上有所不同,那么,在具体操作上,如何实现两种在数据类型上的相应转换?特别是关于VFP中通用型字段与ACCESS中OLE字段的对接问题。
此外,在VFP数据库中,包含有各种各样的数据文件,这样可以根据文件的信息对数据表进行查询。而在ACCESS数据库中,因为所有的数据表都存储在一个数据库中,有时可能知道数据库的信息,却无法查询到数据库中数据表的信息,更何况要在Visual FoxPro环境下实现两种数据库和数据表之间的相互转换。
3 Visual FoxPro环境下ACCESS数据库操作的实现方法
3.1 在VFP中实现ACCESS数据库的创建
在谈及该问题之间,我们需要简单了解下ADO和ADOX。在Visual BASIC中,ADO是其最核心的对象群,通常在使用ADO开发数据库应用程序的情况下,需要引用ADO,如果还需要在程序运行过程中创建数据库或数据表,则还要引用到另一对象库ADOC。相比ADO对象库,ADOX的编程模型更为扩展,包含了数据库(表)的创建、修改和删除,其常用方法主要有Create、Append、Delete。在简单了解了ADOX之后,我们可以利用它来建立ACCESS数据库了。现假设在E盘根目录下创建名为asdf.mdb的ACCESS数据库,前提条件是E盘根目录下没有改数据库,并设定密码为1234,那么建立代码如下:
V catalog=CREATEOBJECT (‘ADOX. Catalog’)
V catalog CREATE(‘Provider=Microsoft Jet OLEDB.4.0;Data Source=D: asdf.fmdb;Jet OLEDB:Database Password=1234’)
V catalog=null
上述代码建立分为两个步骤:一是建立ACCESS数据库,二是释放并关闭对象。在建立数据库过程中,不需要创建ODBC数据源,也不需要使用ACCESS软件,而只要在SYETEM目录中含有M sadox.dll文件便可。同时需要注意的是,相比VFP环境下ACCESS数据库的创建,ACCESS数据表的建立、删除等操作程序更为复杂一些,在此下文中予以叙述。
3.2 在VFP环境下ACCESS数据表的创建
VFP下创建ACCESS数据表的程序比较复杂,首先需要连接ACCESS数据库,其次要解决ACCESS数据表中的字段类型问题,最后才是考虑如何用SQL语言来实现ACCESS数据表的创建。
首先,ACCESS数据库的连接与断开。为了解决好数据库的连接和断开问题,需要先对数据访问组件进行简单的了解。在数据访问组件中,ODBC是一种早期的数据库接口技术,而OLEDB作为一个数据存储对象,位于应用程序和ODBC层之间,能够操作不同类型的数据。而ADO是位于OLEDB之上的应用程序,因此,如要调用ADO,则需先送到OLEDB,然后才会送到ODBC中进行处理。这样的话在进行数据库连接时,便需要先创建ODBC数据源,使用起来就较为复杂,因此,本文将使用VFP中的SQL STEINGCONNECT函数对ACCESS数据库进行连接。在此,先假定abc为指定的数据库,qwe为数据库密码。Nhandle是一个非零正的语句句柄。这样通常下述方式便可连接到ACCESS数据库了。
Nhandle= SQLSTRINGCONNECT(“Driver= { Mircrosoft Access Driver (*.mdb)}; abc=D: asdf.mdb;Qwe=1234”)
对于ACCESS数据库的断开,一般使用VFP中的SQLDISCONNECT函数断开与数据库的连接。
其次,VFP中ACCESS数据类型。在创建ACCESS数据表时,需要弄清ACCESS数据类型,现简要列举部分数据类型的表示方式:文本或字符(TEXT,Varchar,Char),字节(Byte),整型(Shrot,Long),备注(Memo)。
3.3 VFP与ACCESS数据库(数据表)的相互转化
前面的论述已解决VFP数据库向ACCESS转换的部分问题,因此本节内容主要是解决ACCESS数据库如何转换成VFP数据库的问题,在实际操作之前,需要先获知ACCESS数据库中的表名和内容。具体方法是采用SQLTABLES函数将ACCESS数据库中的表名存储到VFP的临时表中,然后再将表中的信息转存为VFP数据库中的信息,这样经过这些步骤之后,我们可以得知ACCESS表和VFP表中数据类型的对应关系。假定ACCESS数据库连接成功后,我们可依靠一些程序进行转换:第一步,列出MDB表信息到ResTable表中;第二步创建一个DBC文件;第三步选择ResTable并遍历游标;第四步生成SQL SELECT的语句字符串,该字符串内含ACCESS数据表中的内容。第五步利用SQLEXEC将表内容送到临时表中;第六步用下划线替代临时表中的表名,以便做VFP文件名;最后,将临时表保存到VFP数据库中。在转换时,需要注意转换后的名称要符合WINDOWS的命名规则。
3.4 VFP中ACCESS数据库的压缩与修复
当用户对ACCESS数据库进行创建、删除等操作后,会产生一些数据垃圾,时间一长,数据库中的数据垃圾会越来越多,这时,便需要对数据库进行压缩。在介绍压缩操作之间,我们先了解下ACCESS数据库中的三种对象模型,分别为ADO、ADOX、JRO。ADO包含了创建、删除和维护数据库所需要的对象;ADOX除了提供上述对象外,还可提供新建数据库中需要的DDL对象;JRO则是与ACCESS数据库一起使用于数据库的压缩操作中。由此,我们可以通过下述方式在 VFP中对ACCESS数据库进行压缩。其具体操作步骤为四:一是确定待压缩修复的文件;二是确定压缩修复后存放的文件;三是删除压缩修复前地文件;四是恢复压缩修复后的文件。在操作过程中,需要注意的是压缩后存放的数据库文件不能存在。
总之,为扩大Visual FoxPro操作系统在数据库领域中的应用范围和应用程度,本文做了一次非常有益的尝试,试着分析了在Visual FoxPro环境下如何对ACCESS数据库进行操作。在实际的操作过程中,我们需要处理非常多的问题,主要有在VFP中实现ACCESS数据库、数据表的创建,VFP与ACCESS数据库之间的相互转化以及ACCESS数据库的压缩与修复等问题。
参考文献:
[1]姜黎莉、姜巍巍,《ACCESS数据库与SQL SERVER数据库》,《知识经济》,2010年,第4期.
[2]赵佳,《ACCESS数据库实践与应用》,《硅谷》,2010年,第9期.
[3]顾莉,《ACCESS数据库系统安全性的实现》,《福建电脑》,2010年,第2期.
[4]刘丽,《VFP、ACCESS、EXCEL之间的数据转换》,《计算机工程与应用》,2006年,增刊103期.