荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Navy (壮志凌云), 信区: Database
标  题: Visual Basic 中的数据库操作(转)
发信站: BBS 荔园晨风站 (Sat Nov 28 21:57:46 1998), 转信

    周治平
    摘  要  该文就Visual Basic中如何使用Data Manager数据管理
桌面系统、Data Cont rol数据控制控件、Data Access Objects对象
变量3种方法访问数据库等内容进行了介绍, 并就一些常见的问题进
行了分析。
    关键词  数据库  数据管理  数据控制  对象变量
    采用VB进行基于Windows环境的应用软件开发,已成为当前一大编
程趋势。有许多介绍V B使用的资料,然而其中关于数据库操作的介绍
却较少。其实,对数据库的支持是VB最为引人瞩目的特点,也是最令程
序员关心的问题。以往的软件开发一般都是使用传统的编程语言(如C
、Pascal等)和通用数据库管理软件(如 dBASE、Foxpro等)进行混合
编程。使用VB提供的数据库访问功能,可以非常简便地结合多种语言
的功能,使程序员的注意力可以更多地集中在系统开发上 面。在VB中
可以访问常用的dBASE、Foxpro 2.0/2.5、Paradox、Betrieve和Acce
 ss数据库,或者是通过ODBC方式访问MS SQL服务器、Oracle SQL服务
器、Sybase SQL服务器,以客户机/服务器方式进行工作。
    下面从几个方面介绍一下VB中的数据库操作。
    一、Data Manager数据管理桌面系统
    通过VB主菜单下的DataManager选项,或在Windows中用程序管理
器直接启动程序DATAMG R.EXE,就可以使用VB提供的一个功能强大的
数据库访问工具(图1)。它提供创建、查询、编辑、重构、索引、排
序等操作数据库的方法,不必使用专门的工具,就可以打开各类数据表
格(图2),利用它来对数据进行快速处理。
使用Data Manager创建的数据库和Access的数据库互相兼容, 两
者采用的是同一种数据库引擎。
图1 数据管理器主菜单
图2 可操作的数据库类型

    二、使用Data Control数据控制控件
    VB工具箱中提供一个Data Control数据控制标准控件(图3),通过
在窗体上创建Data Co ntrol控件(图4),设置它们的属性,就可以生成
一个数据库应用程序。这是一种最为简便的访问已有数据库数据的方
法, 在打开数据库时,涉及6个属性,至少要设置其中的两个才能正常
工作。
图3 数据控件图标
图4 数据控制外观

    1.Connect:确定所连接数据库的类型。仅当正在管理一个非Micr
osoft(不是Access类型)的数据库时才是必要的。

    2.DatabaseName:指明数据库的名字,对不同类型的数据库,可能
是一个子目录,也可能是一个具体的文件名。
    以上两个属性的设置见附表。
附表 数据控制的Connect和DatabaseName属性

    3.Exclusive:设置多用户环境中的共享特性。当设置Fales时,
应使用DOS程序SHARE.E XE。

    4.Options:确定多用户环境中用户的读写特性。
    5.ReadOnly:使所打开的数据库为只读。

    6.RecordSource:决定可以对哪些数据访问,可以输入一个表的名
字或一个MS AccessQu ery的名字或一个SQL语句。

    7.Editmode: 指明当前数据库记录的编辑状态。
    正确地设置Data Control的属性后,当运行程序时,VB会自动打开
相应的表;如果在窗体上创建了若干VB中称为绑定控制(Bound Contro
l)的一类控制,并设置了它们的DataSource和DataField属性,就建立
了它们与数据库的绑定关系。这时Data Control相当于一个表的指针
,在Data Control上移动这个指针,就指向数据库中的相应记录,所绑
定的控制中内容会自动更新;当在Bound Control中改变相应的内容,
也就可以相应改变数据库中字段的内容。全部过程几乎不需要编写程
序代码。
    实际应用中可以在程序代码里灵活应用Data Control的属性设置
和Bound Control;VB中可以作为Bound Control的控制有TextBox、La
bel、Image、PictureBox、CheckBox等(如图5),应注意的是一旦在程
序中改变了Data Control的属性后,必须使用Refresh方法更新才能有
效。
图5 数据控件与绑定控件
    三、采用对象变量访问数据库
    VB专业版还提供在程序中生成各种对象来访问数据库,各种对象
必须通过DIM语句进行定义,每个对象变量Data Access Objects都有
相应的一系列属性和方法。最新的VB 4中允许使用对象变量如图6。
图6 允许使用的数据访问对象变量集合
    只有使用对象方法才能生成一个新的数据库,生成新的表和索引,
当然也可以改变数据库的结构;这些都不能用Data Control控件完成
。要打开一个数据库,首先应用DIM定义一个Da tabase类型的变量,然
后用SET语句将相应的OpenDatabase函数的返回值赋于该变量,如下
    Dim Db As Database
    Set Db=OpenDatabase("C:\FOXPRO25",False,False,"Foxpro 2.
5")
    当对数据库的记录进行操作时,VB提供了三种表示记录集合Recor
dset的方法。
    1.Table对象变量
    这是一个可读写的数据访问对象变量,包括了一个实际存在的表
中的所有记录,并可以通过设置对象变量的指针Index对数据库进行排
序。打开数据库可采用如下的方法:
    Dim Tb As Table
    Set Tb=Db.OpenTable("MY.DBF")
    Tb.Index="bySERIAL"

    2.Dynaset对象变量
    通常是基于一个或多个表的某个条件查询的结果,一般使用SQL语
句产生所需要的对象, 例如:
    Dim Ds As Dynaset
    SQL$="SELECT * FROM MY.DBF WHERE Name="a" ORDER BY Seria
l"
    Set Ds=Db.CreateDynaset(SQL$)
    在DataControl中的RecordSet实际就是一个Dynaset对象。
    3.Snapshot对象变量
    与Dynaset对象类似,它也是基于一个或多个表的查询的结果。但
它是一个静态的记录集合,一经建立就不能改变。可用于对一个特定
记录集的快速浏览,其属性和对象方法都比Tab le对象和Dynaset对象
要少得多。
    Dim Sn As Snapshot
    SQL$="SELECT * FROM MY.DBF WHERE Name="a" ORDER BY Seria
l"
    Set Sn=Db.CreateSnapshot(SQL$)

    四、数据访问的实例
    以下分别采用生成对象变量方法在C盘根目录下创建一个FoxPro
数据库MY.DBF,包括Ser ial和Name两个字段,并添加数条记录;而后用
Data Control方法对其进行访问,Bound Contr ol文本框Text1、Text
2相应于数据控制Data1的Serial和Name字段。当鼠标在Data1的4个控
制箭头上按动时,就可以在文本框内看到数据库记录的变化。
    ******采用对象变量方法******
    Sub Form-Load()
    Dim Db As Database
    Dim Td As TableDef
    Dim Fld1 As Field
    Dim Fld2 As Field
    Dim Tb As Table
    Dim i As Integer
    ' 为访问FoxPro数据库建立一个对象变量
    Set Db = OpenDatabase("C:\", False, False, "FoxPro 2.5")
    ' 创建一个新的数据库.
    Set Td = Db.CreateTableDef("MY")
    ' 向新库中添加字段.
    Set Fld1 = Td.CreateField("Serial", dbText, 2)
    Td.Fields.Append Fld1
    Set Fld2 = Td.CreateField("Name", dbText, 8)
    Td.Fields.Append Fld2
    ' 保存所建立的数据库结构
    Db.TableDefs.Append Td
    ' 生成一个Table对象变量
    Set Tb = Db.OpenTable("MY.DBF")
    ' 往数据库中增加记录
    For i = 1 To 26
        Tb.AddNew
        Tb!Serial = i
        Tb!Name = Chr(64 + i) & i
        Tb.Update
    Next i
    ' 关闭数据库,释放对象变量所占用的资源
    Tb.Close
    Db.Close
    '******采用Data Control方法******
    在窗体上画出一个数据控制Data1和两个文本框Text1、Text2,进
入属性窗口:
    设置Data Control的基本属性
    Connect = "FoxPro 2.5"
    DatabaseName = "C:"
    RecordSource = "MY.DBF"
    设置Bound Control的绑定属性
    DataSource="Data1"
    DataField="Serial" ==>Text1
    DataField="Name" ==>Text2
图7  Data Control 运行窗口
    完成后按F5运行,可见到图7所示窗口从中可以看到采用Data Con
trol方法对一般性数据查询访问非常方便,几乎不要 编写任何程序码
就能完成工作。然而,要达到对数据库的各项复杂操作,还是应使用程
序代码;无论是生成对象变量或Data Control方法,VB都提供了许多控
制属性、对象方法和所能响应的事件过程,使程序员能够灵活地采用
它们,达到理想的设计效果。

    五、常见问题
    由于采用VB开发是一个相对简便的工作,稍有编程经验的读者都
可以进行练习。在这里要指出的一点是,使用VB版本开发出的软件,当
编译成EXE文件后,使用时可能会出现不能访问数据库,并提示"Couldn
't find installable ISAM"。主要问题在于驱动数据库的动态链接
库DLL文件没找到,这是VB系统对特定数据库进行处理所必不可少的接
口函数。一个原因可能在VB.INI 或应用程序的INI文件中缺少相应的
定义,另一个原因是程序按默认的方式找不到这样的INI文件。可以通
过在程序码中使用语句SetDataAccessOption 1,"INI 文件的全路径
文件名"来指定和编辑INI文件。
    在[Installable ISANs]段添加如下定义:
    Foxpro2.0=C:\WINDOWSSYSTEM\XBS110.DLL
    Foxpro2.5=C:\WINDOWSSYSTEM\XBS110.DLL
    dBASE=C:\WINDOWSSYSTEM\XBS110.DLL
    dBASE=C:\WINDOWSSYSTEM\XBS110.DLL

    六、结束语
    以上只是在VB中使用数据库的一些基本方法及其介绍,感兴趣的
读者可以通过一些经常的编程练习和参考VB的在线帮助来掌握使用。
笔者曾经采用VB强大的数据库访问功能,开发出了一些Windows应用程
序,不仅有一般性的信息管理系统,也有用于较为复杂的实时动态网络
系统。实践证明对于在较短时间内设计出一个界面丰富、功能齐全又
比较成功的数据库应用软件,VB是一个不错的选择。

--
█我不知从何开口    时间却不停地流逝  █
█虽只是老生常谈    却教我欲言又止    █
█只是因为你太好    令我无法坦白说爱你█

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.15]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店