电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> VB编程>>Visual Basic数据库操作方法小结:

Visual Basic数据库操作方法小结

来源:www.cncfan.com | 2006-12-16 | (有1942人读过)

    笔者和同事们在使用VB对数据库操作应用时,总结了如下的几种方法,供初学者参考,希望能对大家有所启发。

  1、数据库打开/关闭方法的选择

  在通常情况下,数据库的打开操作是在程序代码中使用OpenDatabase方法实现,其格式如下:
Set database=workspace.OpenDatabase(dbname,options,readonly,connect)
可以通过指定数据库名字、打开方式、连接信息等参数打开一个现已存在的数据库,使用Close方法即可关闭该数据库。由于涉及VB代码的编写,其软件编制工作比较复杂。另一方面,VB的数据控件(Data Control)也可以执行数据库的打用关闭操作。我们可以在数据控件的属性窗口中预先填好数据库打开的相关参数,一旦该数据控件启动,数据库便会自动以指定的方式打开,而当该数据控件终止时,对应的数据库也将自动关闭。对于按这二种方式打开的数据库,其后的数据库访问操作没有什么本质的区别。

  以上两种数据库打用关闭的方法各有千秋:使用OpenDatabase方法可以在程序运行中动态地设置数据库打开参数,并且可以多次以不同的方式打开和关闭同一个数据库,具有相当大的灵活性。而如果使用数据控件,则不需要另外编写VB代码,只要在程序编制时预先设置数据库的相关参数,程序开始运行后便会自动地以我们指定的方式打开数据库,并在程序终止时自动关闭该数据库,因此显得相当方便。在实际应用中,可以视情况的不同而采用不同的处理方法:如果要求数据库在程序运行中始终处于打开状态并且其打开方式保持不变(如一直处于只读状态),那么,可以采用数据控件方法打开数据库;如果要求数据库在程序运行中时而打开时而关闭,或者经常在只读和读写方式间来回切换,则只能采用OpenDatabase方法编写程序代码。

  2、通过相对路径指定数据库文件

  在很多情况下,不管采用上述哪一种方法打开数据库,都必须在程序设计时就指定需要打开的数据库文件。但是,我们通常不能保证该软件完成后一定会被安装在每台机器的同一目录下。因此该数据库文件的绝对路径一般在设计时还难以完全确定,只能采用相对路径的办法来解决这个问题。

  在VB中,App对象是一个全局对象,用来提供当前应用程序的相关信息,其Path属性反映的是当前应用程序的可执行文件(.exe)所在的绝对路径,并且只在程序运行时才有效。通过使用App对象的Path属性,可以方便地获得当前程序所在的目录路径。因此,如果把数据库文件存放在与程序路径相关的目录下,便可以在程序设计时就指定数据库文件的相对路径,当程序运行时,通过App对象的Path属性动态地获取其绝对路径。
下面的一段代码,用来在程序开始运行时获取程序的路径,并赋值给变量AppPath,然后在数据控件Data1的Database Name属性中与数据库文件的相对路径"Database/Sample.Mdb"结合,组成数据库文件的绝对路径。这段代码通常出现在Form-Load中:

Dim AppPath As String ' 设置路径变量
AppPath=App.Path ' 获取程序路径
If Right(AppPath,1)<>"/"Then AppPath=AppPath+"/"
  ' 若路径尾部没有"/",则添加之
  Data1.Database Name=AppPath+"Database/Sample.mdb"
  ' 与相对路径结合,组成绝对路径
    3、用SQL语句完成数据库操作

  SQL也就是结构化查询语言,是用于数据库查询的一种通用标准语言,在现今的大多数数据库软件系统中均得到支持。1句SQL语句通常可以完成以前由许多条语句才能完成的复杂的数据库查询操作,具有较高的工作效率。

  在VB中,SQL语句往往作为某些特定方法的参数而得以执行(没有FoxPro等数据库软件那样直截了当),比如可以把SQL语句作为Execute方法的1个字符串参数而执行,其格式如下:

object.Execute SQL-statement,options
  在其中的SQL-statement字符串中,可以使用标准的SQL语句,如:SELECT、INSERT、DELETE及UPDATE等。下面的例子是在数据库对象DB中执行SQL语句,从当前数据库的EMployees数据表中,选择字段LastName='King'的所有记录,并将这些记录的LastName和FirstName这2个字段的内容,保存到同一数据库的Backup数据表中:

DB.Execute("SELECT LastName,FirstName INTO Backup 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.Table Defs ' 循环搜索数据库中的所有数据表
  ... ... ' 对数据表执行指定的操作
Next
  5、复制数据库的结构定义

  在数据库应用中,经常需要在程序运行时动态地把一个数据库的结构定义完整地复制到另一个数据库中。由于新型的数据库可以同时包含若干个数据表,而每个数据表的结构定义又不近相同,因此,如果通过逐个定义数据表中所有字段的类型、长度的方法复制数据库结构,则该程序将变得相当冗长和复杂,日后的维护也比较困难。但是,通过综合运用上述的几种应用方法,用相当短的VB语句完成同样的工作,实且程序也易于理解和维护。

  程序**如下:

Sub CopyDBStrnc(src As String,dst As String)
  ' 定义子程序Copy DBStrnc,用于复制数据库结构
  ' 调用参数:
  ' src--源数据库的文件名
  ' dst--目的数据库的文件名
  Dim DB As Database,Td As TableDef,SQLstr As String
  ' 定义变量:
  ' DB--数据库对象
  ' Td--数据表定义对象
  ' SQLstr--SQL语句变量
  Set DB=Create Database(dst,dbLangGeneral)
  ' 创建目的数据库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 ' 结束子程序定义

 

VB编程热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号