分类
Visual Basic数据库操作方法小结‖
望能对大家有所启发。
| 1、数据库打开/关闭方法的选择 |
| 在通常情况下,数 式如下: | 据库的打开操作是在程序代码中 | 使用OpenDatabase方法实现,其格 |
| Set database=workspa | ce.OpenDatabase(dbname,optio | ns,readonly,connect) |
| 可以通过指定数据库名字、打开方式 Close方法即可关闭该数据库。由于涉及V ,VB的数据控件(Data Control)也可以执 性窗口中预先填好数据库打开的相关参数 式打开,而当该数据控件终止时,对应的 库,其后的数据库访问操作没有什么本质 | 、连接信息等参数打开一个现已存在的数据库,使用 B代码的编写,其软件编制工作比较复杂。 另一方面 行数据库的打用关闭操作。我们可以在数据控件的属 ,一旦该数据控件启动,数据库便会自动以指定的方 数据库也将自动关闭。对于按这二种方式打开的数据 的区别。 |
| 以上两种数据库打用关闭的方法 动态地设置数据库打开参数,并且可以多 大的灵活性。而如果使用数据控件,则不 据库的相关参数,程序开始运行后便会自 自动关闭该数据库,因此显得相当方便。 方法:如果要求数据库在程序运行中始终 只读状态),那么,可以采用数据控件方 开时而关闭,或者经常在只读和读写方式 代码。 | 各有千秋:使用OpenDatabase方法可以在程序运行中 次以不同的方式打开和关闭同一个数据库,具有相当 需要另外编写VB代码,只要在程序编制时预先设置数 动地以我们指定的方式打开数据库,并在程序终止时 在实际应用中,可以视情况的不同而采用不同的处理 处于打开状态并且其打开方式保持不变(如一直处于 法打开数据库;如果要求数据库在程序运行中时而打 间来回切换,则只能采用OpenDatabase方法编写程序 |
| 2、通过相对路径指定数据库文件 |
| 在很多情况下,不 要打开的数据库文件。但是 目录下。因此该数据库文件 法来解决这个问题。 | 管采用上述哪一种方法打开数据 ,我们通常不能保证该软件完成 的绝对路径一般在设计时还难以 | 库,都必须在程序设计时就指定需 后一定会被安装在每台机器的同一 完全确定,只能采用相对路径的办 |
| 在VB中,App对象是一个全局对 反映的是当前应用程序的可执行文件(.ex 过使用App对象的Path属性,可以方便地 文件存放在与程序路径相关的目录下,便 程序运行时,通过App对象的Path属性动 | 象,用来提供当前应用程序的相关信息,其Path属性 e)所在的绝对路径,并且只在程序运行时才有效。通 获得当前程序所在的目录路径。因此,如果把数据库 可以在程序设计时就指定数据库文件的相对路径,当 态地获取其绝对路径。 |
| 下面的一段代码,用来 在数据控件Data1的Databas 合,组成数据库文件的绝对 | 在程序开始运行时获取程序的路 e Name属性中与数据库文件的相 路径。这段代码通常出现在Form | 径,并赋值给变量AppPath,然后 对路径"DatabaseSample.Mdb"结 -Load中: |
| Dim AppPath As String ' 设置路径变量 |
| AppPath=App.Path ' 获取程序路径 |
| If Right(AppPath,1)<>""Then AppPath=AppPath+"" |
| ' 若路径尾部没有"",则添加之 |
| Data1.Database Nam | e=AppPath+"DatabaseSample.m | db" |
| ' 与相对路径结合,组成绝对路径 |
| 3、用SQL语句完成数据库操作 |
| SQL也就是结构化 数数据库软件系统中均得到 的数据库查询操作,具有较 | 查询语言,是用于数据库查询的 支持。1句SQL语句通常可以完成 高的工作效率。 | 一种通用标准语言,在现今的大多 以前由许多条语句才能完成的复杂 |
| 在VB中,SQL语句往往作为某些 件那样直截了当),比如可以把SQL语句作 : | 特定方法的参数而得以执行(没有FoxPro等数据库软 为Execute方法的1个字符串参数而执行,其格式如下 |
| object.Execute SQL-statement,options |
| 在其中的SQL-statement字符串 、DELETE及UPDATE等。下面的例子是在数 EMployees数据表中,选择字段LastName= FirstName这2个字段的内容,保存到同一 | 中,可以使用标准的SQL语句,如:SELECT、INSERT 据库对象DB中执行SQL语句,从当前数据库的 'King'的所有记录,并将这些记录的LastName和 数据库的Backup数据表中: |
| DB.Execute("SELECT L | astName,FirstName INTO Backu | p FORM Employees |
| WHERE LastName='King';") |
| 4、For语句在数据库中的应用 |
| For语句是几乎所 可以完成一些指定的工作。 行若干操作,而不必预先设 | 有高级语言都有的语句,通常用 而在VB中,For语句还可以用来 定循环次数,其格式如下: | 来完成指定次数的循环,在循环中 对某个集合中的每1个元素循环执 |
| For Each element In group |
| [statements] |
| Next[element] |
| For语句的这一特点可用于按照 库对象DB所指的数据库中的所有数据表进 | 指定条件搜索整个数据库。以下的代码便可以对数据 行搜索,并完成指定的操作: |
| For Each Td In DB.Ta | ble Defs ' 循环搜索数据库中 | 的所有数据表 |
| ... ... ' 对数据表执行指定的操作 |
| Next |
| 5、复制数据库的结构定义 |
| 在数据库应用中, 到另一个数据库中。由于新 又不近相同,因此,如果通 ,则该程序将变得相当冗长 应用方法,用相当短的VB语 | 经常需要在程序运行时动态地把 型的数据库可以同时包含若干个 过逐个定义数据表中所有字段的 和复杂,日后的维护也比较困难 句完成同样的工作,实且程序也 | 一个数据库的结构定义完整地复制 数据表,而每个数据表的结构定义 类型、长度的方法复制数据库结构 。但是,通过综合运用上述的几种 易于理解和维护。 |
| 程序清单如下: |
| Sub CopyDBStrnc(src As String,ds | t As String) |
| ' 定义子程序Copy DBStrnc,用于复制数据库结构 |
| ' 调用参数: |
| ' src--源数据库的文件名 |
| ' dst--目的数据库的文件名 |
| Dim DB As Database | ,Td As TableDef,SQLstr As St | ring |
| ' 定义变量: |
| ' DB--数据库对象 |
| ' Td--数据表定义对象 |
| ' SQLstr--SQL语句变量 |
| Set DB=Create Database(dst,dbL | angGeneral) |
| ' 创建目的数据库dst |
| ' 关闭目的数据库dst |
| DB.Close |
| Set db=OpenDatabase(src,False,True) |
| ' 以共享、只读方式打开源数据库src |
| For Each Td In DB.TableDefs |
| ' 循环搜索源数据库DB中的所有数据表定义 |
| If(Td.Attributes | And dbSyste mObect)=0 Then |
| ' 忽略系统数据表,只针对用户定义的数据表进行搜写 |
| SQLstr="SELECT | * INTO"+Td.Name+"IN"+dst+"' | FROM"+ |
| Td.Name+"'IN"+src+"'WHERE False' |
| ' 对SQL语句变量赋值,完成以下功能: |
| ' 从源数据库src的数据表中选择所有字段 |
| ' 存入目的数据库dst的同名数据表中 |
| ' 选择数据表的字段定义,不包括任何记录 |
| DB.Execute(SQLstr) ' 执行SQL语句 |
| End If |
| Next ' 结束循环搜索 |
| DB.Close ' 关闭源数据库 |
| Exit Sub ' 结束子程序定义 |