精华内容
下载资源
问答
  • 这个是我做一个很简单剧本的数据库访问技术,包括了增删改查实现和水晶报表,做不怎么好,多多指教!
  • 基于VB.Net中的数据库访问技术,超详细易懂!
  • 作者:冯杰 来源:天极网 2008年6月23日 ...微软设计了多种数据库访问方法,下面通过对VB访问数据库的多种技术进行深入剖析,并总结出实际开发的几点经验。希望能够对那VB的初学者有所帮助。(注意,文中所...

    作者:冯杰 来源:天极网 2008年6月23日

     

      本文简要分析了VB6.0访问数据库的几种技术,并在此基础上总结出几个实用的数据库开发经验。

      引言

      作为微软旗下一款优秀的RAD工具,VB在数据库应用开发方面的能力十分强大。微软设计了多种数据库访问方法,下面通过对VB访问数据库的多种技术进行深入剖析,并总结出实际开发中的几点经验。希望能够对那VB的初学者有所帮助。(注意,文中所有的描述均在Windows 2000 professional和Visual Basic 6.0的环境下进行的)

      一. DAO、RDO、ODBC和ADO

      在VB的开发环境中,可以使用三种数据库访问方式,它们分别是:数据访问对象(DAO)、远程数据对象(RDO)和ADO对象模型。

      DAO:

      数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Microsoft Access 所使用,现在已经支持其它数据库),并允许开发者通过ODBC直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或在小范围本地分布使用。其内部已经对Jet数据库的访问进行了加速优化,而且其使用起来也是很方便的。所以如果数据库是Access数据库且是本地使用的话,建议使用这种访问方式。

      VB已经把DAO模型封装成了Data控件,分别设置相应的DatabaseName属性和RecordSource属性就可以将Data控件与数据库中的记录源连接起来了。以后就可以使用Data控件来对数据库进行操作。

      RDO

      RDO(Remote Data Objects)远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。

      和DAO一样,在VB中也把其封装为RDO控件了,其使用方法与DAO控件的使用方法完全一样。

      ODBC

      ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

      一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

      一个完整的ODBC由下列几个部件组成:

      1. 应用程序(Application)

      ODBC管理器(Administrator)。该程序位于Windows 95控制面板(Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。

      驱动程序管理器(Driver Manager)。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。

      2. ODBC API

      ODBC 驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。

      数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。

      ODBC连接目前仅仅限于关系型数据库,对于其他数据源比如EXCEL、文本文件都不能进行访问,而且有很多DBMS(数据库管理系统)都不能充分的支持其所有的功能。相比之下,OLEDB可以存取任何形式的数据,所以其功能是相当的强大,它也指导了目前技术发展的方向。

      ADO

      ADO(ActiveX Data Object)是DAO/RDO的后继产物。ADO 2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO"扩展"了DAO和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。

      作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。

     

     

      ADO涉及的数据存储有DSN(数据源名称)、ODBC(开放式数据连接)以及OLE DB三种方式。后面的例程将详细讲解这三种方式的具体访问实现。

      要使用ADO,必须清楚ADO的对象层次结构,其大体上分为以下7个对象层次:

      1、 Command 对象:包含关于某个命令,例如查询字符串、参数定义等的信息。Command 对象在功能上和 RDO的rdoQuery 对象相似。

      2、 Connection 对象:包含关于某个数据提供程序的信息。Connection 对象在功能上和 RDO 的 rdoConnection 对象是相似的,并且包含了关于结构描述的信息。它还包含某些 RDOEnvironment 对象的功能,例如transaction 控件。

      3、 Error对象:包含数据提供程序出错时的扩展信息。Error 对象在功能上和 RDO 的rdoError 对象相似。

      4、 Field 对象:包含记录集中数据的某单个列的信息。Field 对象在功能上和 RDO的rdoColumn 对象相似。

      5、 Parameter 对象:包含参数化的Command对象的某单个参数的信息。该 Command对象有一个包含其所有Parameter 对象的 Parameters 集合。Parameter 对象在功能上和 RDO 的 rdoParameter 对象相似。
      6、 Property对象:包含某个 ADO 对象的提供程序定义的特征。没有任何等同于该对象的RDO,但DAO有一个相似的对象。

      7、Recordset对象:用来存储数据操作返回的记录集。此对象和Connection对象是所有对象最重要的两个对象。

      当然,对于初级用户来说,我们只需要掌握其中的Connection对象和RecordSet对象就可以实现基本的数据库操作,在后面的经验介绍里面我将给出详细的介绍。

      二. 开发经验小结:

      前面总体上介绍了一下当前在VB平台下的数据库访问技术,这些技术也是当前数据库技术的主流。下面笔者结合近几年的开发经验,给出一些开发经验和小技巧,以供参考:

      经验一:如果数据量不大,而且要求开发周期短的情况,建议使用DAO+Access虽然DAO功能并不强大,但是其对Jet引擎进行了加速优化处理,所以这种搭配应该是比较好的选择。

      经验二:RDO当前已经用的很少了,一般用ADO来替代。

      经验三:(本经验很重要)使用ADO开发时,连接数据库的方式有三种(前面已经叙述了),其中DSN需要用户首先使用要将所要操纵的数据库设置为数据库源并给其命名。方法是在控制面板->管理工具->数据源(ODBC)下面进行配置。比如设置的数据源名称为data,那么可以通过下面几行代码来连接数据库:

      Dim conn As New ADODB.Connection
      Dim rs As New ADODB.Recordset
      '连接数据库
      conn.Open "dsn=data"
      '打开数据源(即选定操作的数据对象)
      rs.Open SQL语句, conn

      但是如果是使用ODBC和OLEDB的方式进行连接,那么大家一定知道在连接字符串上那一长串的代码,不要说对于初学者,就是对于那些经验丰富的程序员来说,也很难记住这一串代码。那么如何可以记住这一串代码呢?其实,方法很简单,只要添加一个ADO Data控件,然后在其属性框中使用向导进行设置后,那么最后向导就会自动生成一段ConnectionString,只需要将这一行代码拷贝下来然后放到conn.open之后的连接字符串参数的位置上就可以了。这条经验希望读者能够记住,实际开发中很实用。

      经验四:前面讲到手动设置ODBC数据源,这里可以通过程序来进行动态设置。首先要清楚的是ODBC的详细信息全部存放在注册表的下述键值内:"HKEY_LOCAL_MACHINE\SOFTWARE\ODBC",通过调用Win32函数WriteProfileString来对相应的键值进行修改即可达到目的。

      经验五:通常将数据库的连接代码和资源释放代码放入各自特定的函数里面,因为一般大一点的程序里需要经常对这两个功能模块进行调用,这样做就可以提高效率,当然很多时候都需要写成连接池的形式。

      经验六:使用VB在SQL中处理含单引号的字符串时,对字符串数据都用单引号引起来,如:

      Select * from MyTable Where ID='FirstID'

      若其中的FirstID为First'ID,即中间多出一个单引号,则上述写法将导致错误,解决的办法是将字符串中的每一个单引号用两双引号替换,下面的函数StrToSQL完成该功能,并用单引号将处理后的字符串引起来:

      Private Function StrToSQL(ByVal strValue As String) As String
      StrToSQL = "'" + Replace(strValue, "'", "''") + "'"
      End Function

      在写SQL时如有字符串数据,不管其中有没有单引号,都可以这样使用:

      strValue="First'Id"
      strSQL="Select * from MyTable Where ID="+StrToSQL(strValue)

      三. 实例解析

      下面介绍一个实例,来消化以上的相关知识。这里我在一个程序界面下实现了DAO,ADO,ODBC,OLEDB四种数据库访问方式。

     

     

      程序代码分析:

      '整个程序功能是选择不同的连接方式来进行显示工作,三种方式显示效果完全相同
      '下面是主程序过程

    ContractedBlock.gifExpandedBlockStart.gifCode
      1   Private Sub Command1_Click()
      2   Dim selitem As Integer
      3   '判断连接数据库的方式
      4   If Option1.Value = True Then
      5   selitem = 1
      6   Else
      7   If Option2.Value = True Then
      8   selitem = 2
      9   Else
     10   selitem = 3
     11   End If
     12   End If
     13   '选取不同的数据库连接方式
     14   Select Case selitem
     15   Case 1:
     16   '使用DAO的数据库连接方式
     17   Call ShowByDAO
     18   Case 2:
     19   '使用ADO的数据库连接方式
     20   Call ShowByADO
     21   Case 3:
     22   '使用ODBC的数据库连接方式
     23   Call ShowByODBC
     24   Case 4:
     25   '使用OLEDB的数据库连接方式
     26   Call ShowByOLEDB
     27   End Select
     28   End Sub
     29   Private Sub ShowByDAO()
     30   '使用DAO的数据库连接方式
     31   Dim db As Database
     32   Dim rs As Recordset
     33   Dim sqlstr$ '存放查询语句
     34   Set db = OpenDatabase(App.Path & "\db1.mdb")
     35   sqlstr = "select * from 成绩表"
     36   Set rs = db.OpenRecordset(sqlstr)
     37   '显示结果
     38   Call GridShow(rs)
     39   End Sub
     40   Sub ShowByADO()
     41   Dim conn As New ADODB.Connection
     42   Dim rs As New ADODB.Recordset
     43   '使用数据源来连接数据库
     44   conn.Open "dsn=data"
     45   rs.CursorType = adOpenKeyset
     46   rs.LockType = adLockOptimistic
     47   rs.Open "select * from 成绩表", conn
     48   Call GridShowOfADO(rs)
     49   End Sub
     50   Sub ShowByODBC()
     51   Dim conn As New ADODB.Connection
     52   Dim rs As New ADODB.Recordset
     53   '使用数据源来连接数据库
     54   conn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=data"
     55   rs.Open "select * from 成绩表", conn
     56   '显示结果
     57   Call GridShowOfADO(rs)
     58   End Sub
     59   Sub ShowByOLEDB()
     60   Dim conn As New ADODB.Connection
     61   Dim rs As New ADODB.Recordset
     62   '使用数据源来连接数据库
     63   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path & "\db1.mdb" + ";Persist Security Info=False"
     64   rs.Open "select * from 成绩表", conn
     65   '显示结果
     66   Call GridShowOfADO(rs)
     67   End Sub
     68   Sub GridShow(rs As Recordset)
     69   '对dao方式进行显示工作
     70   MSFlexGrid1.TextMatrix(00= "姓名"
     71   MSFlexGrid1.TextMatrix(01= "性别"
     72   MSFlexGrid1.TextMatrix(02= "语文"
     73   MSFlexGrid1.TextMatrix(03= "数学"
     74   MSFlexGrid1.TextMatrix(04= "英语"
     75   rs.MoveLast
     76   MSFlexGrid1.Rows = rs.RecordCount + 1
     77   MSFlexGrid1.Cols = rs.Fields.Count
     78   Dim i%
     79   i = 1
     80   rs.MoveFirst
     81   While (Not rs.EOF)
     82   MSFlexGrid1.TextMatrix(i, 0= rs.Fields(0)
     83   MSFlexGrid1.TextMatrix(i, 1= rs.Fields(1)
     84   MSFlexGrid1.TextMatrix(i, 2= rs.Fields(2)
     85   MSFlexGrid1.TextMatrix(i, 3= rs.Fields(3)
     86   MSFlexGrid1.TextMatrix(i, 4= rs.Fields(4)
     87   rs.MoveNext
     88   i = i + 1
     89   'If (rs.EOF = True) Then
     90   ' Exit For
     91   Wend
     92   End Sub
     93   Sub GridShowOfADO(rs As ADODB.Recordset)
     94   '对ado方式进行显示工作
     95   MSFlexGrid1.TextMatrix(00= "姓名"
     96   MSFlexGrid1.TextMatrix(01= "性别"
     97   MSFlexGrid1.TextMatrix(02= "语文"
     98   MSFlexGrid1.TextMatrix(03= "数学"
     99   MSFlexGrid1.TextMatrix(04= "英语"
    100   '注意recordcount属性必须在当前记录指针在最后一条记录时才会返回正确的值
    101   rs.MoveLast
    102   MSFlexGrid1.Rows = rs.RecordCount + 1
    103   MSFlexGrid1.Cols = rs.Fields.Count
    104   Dim i%
    105   i = 1
    106   rs.MoveFirst
    107   While (Not rs.EOF)
    108   MSFlexGrid1.TextMatrix(i, 0= rs.Fields(0)
    109   MSFlexGrid1.TextMatrix(i, 1= rs.Fields(1)
    110   MSFlexGrid1.TextMatrix(i, 2= rs.Fields(2)
    111   MSFlexGrid1.TextMatrix(i, 3= rs.Fields(3)
    112   MSFlexGrid1.TextMatrix(i, 4= rs.Fields(4)
    113   rs.MoveNext
    114   i = i + 1
    115   Wend
    116   End Sub
    117   Private Sub Command2_Click()
    118   End
    119   End Sub

     

      上述代码已经在Windows 2000 professional和Visual Basic 6.0的环境下调试成功。

      四.小结

      本文通过对数据库访问相关技术的分析与总结,提出若干有价值的经验。借鉴这些经验,会给开发带来一定的便利。

    转载于:https://www.cnblogs.com/googolmao/archive/2009/05/21/1486212.html

    展开全文
  • 引言 作为微软旗下一款优秀的RAD工具,VB在数据库应用开发方面...微软设计了多种数据库访问方法,下面通过对VB访问数据库的多种技术进行深入剖析,并总结出实际开发的几点经验。希望能够对那VB的初学者有所帮助。...

      引言

      作为微软旗下一款优秀的RAD工具,VB在数据库应用开发方面的能力十分强大。微软设计了多种数据库访问方法,下面通过对VB访问数据库的多种技术进行深入剖析,并总结出实际开发中的几点经验。希望能够对那VB的初学者有所帮助。(注意,文中所有的描述均在Windows 2000 professional和Visual Basic 6.0的环境下进行的)

      一. DAO、RDO、ODBC和ADO

      在VB的开发环境中,可以使用三种数据库访问方式,它们分别是:数据访问对象(DAO)、远程数据对象(RDO)和ADO对象模型。

      DAO:

      数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Microsoft Access 所使用,现在已经支持其它数据库),并允许开发者通过ODBC直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或在小范围本地分布使用。其内部已经对Jet数据库的访问进行了加速优化,而且其使用起来也是很方便的。所以如果数据库是Access数据库且是本地使用的话,建议使用这种访问方式。

      VB已经把DAO模型封装成了Data控件,分别设置相应的DatabaseName属性和RecordSource属性就可以将Data控件与数据库中的记录源连接起来了。以后就可以使用Data控件来对数据库进行操作。

      RDO

      RDO(Remote Data Objects)远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。

      和DAO一样,在VB中也把其封装为RDO控件了,其使用方法与DAO控件的使用方法完全一样。

      ODBC

      ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

      一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

      一个完整的ODBC由下列几个部件组成:
       
      1. 应用程序(Application)

      ODBC管理器(Administrator)。该程序位于Windows 95控制面板(Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。

      驱动程序管理器(Driver Manager)。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。

      2. ODBC API

      ODBC 驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。

      数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。

      ODBC连接目前仅仅限于关系型数据库,对于其他数据源比如EXCEL、文本文件都不能进行访问,而且有很多DBMS(数据库管理系统)都不能充分的支持其所有的功能。相比之下,OLEDB可以存取任何形式的数据,所以其功能是相当的强大,它也指导了目前技术发展的方向。

      ADO

      ADO(ActiveX Data Object)是DAO/RDO的后继产物。ADO 2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO"扩展"了DAO和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。

      作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。

      ADO涉及的数据存储有DSN(数据源名称)、ODBC(开放式数据连接)以及OLE DB三种方式。后面的例程将详细讲解这三种方式的具体访问实现。

      要使用ADO,必须清楚ADO的对象层次结构,其大体上分为以下7个对象层次:

      1、 Command 对象:包含关于某个命令,例如查询字符串、参数定义等的信息。Command 对象在功能上和 RDO的rdoQuery 对象相似。

      2、 Connection 对象:包含关于某个数据提供程序的信息。Connection 对象在功能上和 RDO 的 rdoConnection 对象是相似的,并且包含了关于结构描述的信息。它还包含某些 RDOEnvironment 对象的功能,例如transaction 控件。

      3、 Error对象:包含数据提供程序出错时的扩展信息。Error 对象在功能上和 RDO 的rdoError 对象相似。

      4、 Field 对象:包含记录集中数据的某单个列的信息。Field 对象在功能上和 RDO的rdoColumn 对象相似。

      5、 Parameter 对象:包含参数化的Command对象的某单个参数的信息。该 Command对象有一个包含其所有Parameter 对象的 Parameters 集合。Parameter 对象在功能上和 RDO 的 rdoParameter 对象相似。

      6、 Property对象:包含某个 ADO 对象的提供程序定义的特征。没有任何等同于该对象的RDO,但DAO有一个相似的对象。

      7、Recordset对象:用来存储数据操作返回的记录集。此对象和Connection对象是所有对象最重要的两个对象。

      当然,对于初级用户来说,我们只需要掌握其中的Connection对象和RecordSet对象就可以实现基本的数据库操作,在后面的经验介绍里面我将给出详细的介绍。
    二. 开发经验小结:
      前面总体上介绍了一下当前在VB平台下的数据库访问技术,这些技术也是当前数据库技术的主流。下面笔者结合近几年的开发经验,给出一些开发经验和小技巧,以供参考:

      经验一:如果数据量不大,而且要求开发周期短的情况,建议使用DAO+Access虽然DAO功能并不强大,但是其对Jet引擎进行了加速优化处理,所以这种搭配应该是比较好的选择。

      经验二:RDO当前已经用的很少了,一般用ADO来替代。

      经验三:(本经验很重要)使用ADO开发时,连接数据库的方式有三种(前面已经叙述了),其中DSN需要用户首先使用要将所要操纵的数据库设置为数据库源并给其命名。方法是在控制面板->管理工具->数据源(ODBC)下面进行配置。比如设置的数据源名称为data,那么可以通过下面几行代码来连接数据库:

    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    '连接数据库
    conn.Open "dsn=data"
    '打开数据源(即选定操作的数据对象)
    rs.Open SQL语句, conn

      但是如果是使用ODBC和OLEDB的方式进行连接,那么大家一定知道在连接字符串上那一长串的代码,不要说对于初学者,就是对于那些经验丰富的程序员来说,也很难记住这一串代码。那么如何可以记住这一串代码呢?其实,方法很简单,只要添加一个ADO Data控件,然后在其属性框中使用向导进行设置后,那么最后向导就会自动生成一段ConnectionString,只需要将这一行代码拷贝下来然后放到conn.open之后的连接字符串参数的位置上就可以了。这条经验希望读者能够记住,实际开发中很实用。

      经验四:前面讲到手动设置ODBC数据源,这里可以通过程序来进行动态设置。首先要清楚的是ODBC的详细信息全部存放在注册表的下述键值内:"HKEY_LOCAL_MACHINESOFTWAREODBC",通过调用Win32函数WriteProfileString来对相应的键值进行修改即可达到目的。

      经验五:通常将数据库的连接代码和资源释放代码放入各自特定的函数里面,因为一般大一点的程序里需要经常对这两个功能模块进行调用,这样做就可以提高效率,当然很多时候都需要写成连接池的形式。

      经验六:使用VB在SQL中处理含单引号的字符串时,对字符串数据都用单引号引起来,如:

    Select * from MyTable Where ID='FirstID'

      若其中的FirstID为First'ID,即中间多出一个单引号,则上述写法将导致错误,解决的办法是将字符串中的每一个单引号用两双引号替换,下面的函数StrToSQL完成该功能,并用单引号将处理后的字符串引起来:

     Private Function StrToSQL(ByVal strValue As String) As String
        StrToSQL = "'" + Replace(strValue, "'", "''") + "'"
     End Function

      在写SQL时如有字符串数据,不管其中有没有单引号,都可以这样使用:

       strValue="First'Id"
       strSQL="Select * from MyTable Where ID="+StrToSQL(strValue)
    三. 实例解析
      下面介绍一个实例,来消化以上的相关知识。这里我在一个程序界面下实现了DAO,ADO,ODBC,OLEDB四种数据库访问方式。

    47152.jpg

      程序代码分析:


    '整个程序功能是选择不同的连接方式来进行显示工作,三种方式显示效果完全相同
    '下面是主程序过程
    Private Sub Command1_Click()
     Dim selitem As Integer
     '判断连接数据库的方式
     If Option1.Value = True Then
      selitem = 1
     Else
      If Option2.Value = True Then
       selitem = 2
      Else
       selitem = 3
      End If
     End If

     '选取不同的数据库连接方式
     Select Case selitem
     Case 1:
      '使用DAO的数据库连接方式
      Call ShowByDAO
     Case 2:
      '使用ADO的数据库连接方式
      Call ShowByADO
     Case 3:
      '使用ODBC的数据库连接方式
      Call ShowByODBC
     Case 4:
      '使用OLEDB的数据库连接方式
      Call ShowByOLEDB
     End Select
    End Sub

    Private Sub ShowByDAO()
     '使用DAO的数据库连接方式
     Dim db As Database
     Dim rs As Recordset
     Dim sqlstr$ '存放查询语句
     Set db = OpenDatabase(App.Path & "db1.mdb")
     sqlstr = "select * from 成绩表"
     Set rs = db.OpenRecordset(sqlstr)
     '显示结果
     Call GridShow(rs)
    End Sub

    Sub ShowByADO()
     Dim conn As New ADODB.Connection
     Dim rs As New ADODB.Recordset
     '使用数据源来连接数据库
     conn.Open "dsn=data"
     rs.CursorType = adOpenKeyset
     rs.LockType = adLockOptimistic
     rs.Open "select * from 成绩表", conn
     Call GridShowOfADO(rs)
    End Sub

    Sub ShowByODBC()
     Dim conn As New ADODB.Connection
     Dim rs As New ADODB.Recordset
     '使用数据源来连接数据库
     conn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=data"
     rs.Open "select * from 成绩表", conn
     '显示结果
     Call GridShowOfADO(rs)
    End Sub

    Sub ShowByOLEDB()
     Dim conn As New ADODB.Connection
     Dim rs As New ADODB.Recordset
     '使用数据源来连接数据库
     conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path & "db1.mdb" + ";Persist Security Info=False"
     rs.Open "select * from 成绩表", conn

     '显示结果
     Call GridShowOfADO(rs)
    End Sub

    Sub GridShow(rs As Recordset)
     '对dao方式进行显示工作
     MSFlexGrid1.TextMatrix(0, 0) = "姓名"
     MSFlexGrid1.TextMatrix(0, 1) = "性别"
     MSFlexGrid1.TextMatrix(0, 2) = "语文"
     MSFlexGrid1.TextMatrix(0, 3) = "数学"
     MSFlexGrid1.TextMatrix(0, 4) = "英语"
     rs.MoveLast
     MSFlexGrid1.Rows = rs.RecordCount + 1
     MSFlexGrid1.Cols = rs.Fields.Count
     Dim i%
     i = 1
     rs.MoveFirst
     While (Not rs.EOF)

      MSFlexGrid1.TextMatrix(i, 0) = rs.Fields(0)
      MSFlexGrid1.TextMatrix(i, 1) = rs.Fields(1)
      MSFlexGrid1.TextMatrix(i, 2) = rs.Fields(2)
      MSFlexGrid1.TextMatrix(i, 3) = rs.Fields(3)
      MSFlexGrid1.TextMatrix(i, 4) = rs.Fields(4)
      rs.MoveNext
      i = i + 1
      'If (rs.EOF = True) Then
      ' Exit For
     Wend
    End Sub

    Sub GridShowOfADO(rs As ADODB.Recordset)
     '对ado方式进行显示工作
     MSFlexGrid1.TextMatrix(0, 0) = "姓名"
     MSFlexGrid1.TextMatrix(0, 1) = "性别"
     MSFlexGrid1.TextMatrix(0, 2) = "语文"
     MSFlexGrid1.TextMatrix(0, 3) = "数学"
     MSFlexGrid1.TextMatrix(0, 4) = "英语"
     '注意recordcount属性必须在当前记录指针在最后一条记录时才会返回正确的值
     rs.MoveLast
     MSFlexGrid1.Rows = rs.RecordCount + 1
     MSFlexGrid1.Cols = rs.Fields.Count
     Dim i%
     i = 1
     rs.MoveFirst
     While (Not rs.EOF)
      MSFlexGrid1.TextMatrix(i, 0) = rs.Fields(0)
      MSFlexGrid1.TextMatrix(i, 1) = rs.Fields(1)
      MSFlexGrid1.TextMatrix(i, 2) = rs.Fields(2)
      MSFlexGrid1.TextMatrix(i, 3) = rs.Fields(3)
      MSFlexGrid1.TextMatrix(i, 4) = rs.Fields(4)
      rs.MoveNext
      i = i + 1
     Wend
    End Sub

    Private Sub Command2_Click()
    End
    End Sub

      上述代码已经在Windows 2000 professional和Visual Basic 6.0的环境下调试成功。

    [@more@]

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9800367/viewspace-923887/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/9800367/viewspace-923887/

    展开全文
  • 讨论了微软的VB 6.0提供几种数据库访问技术:Data控件,DAO,RDO,OLE DB和ADO。对这些技术各自特点和应用进行了具体分析,并说明了在实际应用时必须注意问题。
  • 微软设计了多种数据库访问方法,下面通过对VB访问数据库的多种技术进行深入剖析,并总结出实际开发的几点经验。希望能够对那VB的初学者有所帮助。(注意,文中所有的描述均在Windows 2000 professio

    [文章导读]本文简要分析了VB6.0访问数据库的几种技术,并在此基础上总结出几个实用的数据库开发经验

    引言

    作为微软旗下一款优秀的RAD工具,VB在数据库应用开发方面的能力十分强大。微软设计了多种数据库访问方法,下面通过对VB访问数据库的多种技术进行深入剖析,并总结出实际开发中的几点经验。希望能够对那VB的初学者有所帮助。(注意,文中所有的描述均在Windows 2000 professional和Visual Basic 6.0的环境下进行的)

    一. DAO、RDO、ODBC和ADO

    在VB的开发环境中,可以使用三种数据库访问方式,它们分别是:数据访问对象(DAO)、远程数据对象(RDO)和ADO对象模型。

    DAO:

    数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Microsoft Access 所使用,现在已经支持其它数据库),并允许开发者通过ODBC直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或在小范围本地分布使用。其内部已经对Jet数据库的访问进行了加速优化,而且其使用起来也是很方便的。所以如果数据库是Access数据库且是本地使用的话,建议使用这种访问方式。

    VB已经把DAO模型封装成了Data控件,分别设置相应的DatabaseName属性和RecordSource属性就可以将Data控件与数据库中的记录源连接起来了。以后就可以使用Data控件来对数据库进行操作。

    RDO

    RDO(Remote Data Objects)远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。

    和DAO一样,在VB中也把其封装为RDO控件了,其使用方法与DAO控件的使用方法完全一样。

    ODBC

    ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

    一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

    一个完整的ODBC由下列几个部件组成:

    1. 应用程序(Application)

    ODBC管理器(Administrator)。该程序位于Windows 95控制面板(Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。

    驱动程序管理器(Driver Manager)。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。

    2. ODBC API

    ODBC 驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。

    数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。

    ODBC连接目前仅仅限于关系型数据库,对于其他数据源比如EXCEL、文本文件都不能进行访问,而且有很多DBMS(数据库管理系统)都不能充分的支持其所有的功能。相比之下,OLEDB可以存取任何形式的数据,所以其功能是相当的强大,它也指导了目前技术发展的方向。

    ADO

    ADO(ActiveX Data Object)是DAO/RDO的后继产物。ADO 2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO"扩展"了DAO和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。

    作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。

    ADO涉及的数据存储有DSN(数据源名称)、ODBC(开放式数据连接)以及OLE DB三种方式。后面的例程将详细讲解这三种方式的具体访问实现。

    要使用ADO,必须清楚ADO的对象层次结构,其大体上分为以下7个对象层次:

    1、 Command 对象:包含关于某个命令,例如查询字符串、参数定义等的信息。Command 对象在功能上和 RDO的rdoQuery 对象相似。

    2、 Connection 对象:包含关于某个数据提供程序的信息。Connection 对象在功能上和 RDO 的 rdoConnection 对象是相似的,并且包含了关于结构描述的信息。它还包含某些 RDOEnvironment 对象的功能,例如transaction 控件。

    3、 Error对象:包含数据提供程序出错时的扩展信息。Error 对象在功能上和 RDO 的rdoError 对象相似。

    4、 Field 对象:包含记录集中数据的某单个列的信息。Field 对象在功能上和 RDO的rdoColumn 对象相似。

    5、 Parameter 对象:包含参数化的Command对象的某单个参数的信息。该 Command对象有一个包含其所有Parameter 对象的 Parameters 集合。Parameter 对象在功能上和 RDO 的 rdoParameter 对象相似。

    6、 Property对象:包含某个 ADO 对象的提供程序定义的特征。没有任何等同于该对象的RDO,但DAO有一个相似的对象。

    7、Recordset对象:用来存储数据操作返回的记录集。此对象和Connection对象是所有对象最重要的两个对象。

    当然,对于初级用户来说,我们只需要掌握其中的Connection对象和RecordSet对象就可以实现基本的数据库操作,在后面的经验介绍里面我将给出详细的介绍。

    展开全文
  • VB6.0数据库访问技术与例程解析(一)

    千次阅读 2006-04-08 15:18:00
    微软设计了多种数据库访问方法,下面通过对VB访问数据库的多种技术进行深入剖析,并总结出实际开发的几点经验。希望能够对那VB的初学者有所帮助。(注意,文中所有的描述均在Windows 2000 professio

    [文章导读]本文简要分析了VB6.0访问数据库的几种技术,并在此基础上总结出几个实用的数据库开发经验

    引言

    作为微软旗下一款优秀的RAD工具,VB在数据库应用开发方面的能力十分强大。微软设计了多种数据库访问方法,下面通过对VB访问数据库的多种技术进行深入剖析,并总结出实际开发中的几点经验。希望能够对那VB的初学者有所帮助。(注意,文中所有的描述均在Windows 2000 professional和Visual Basic 6.0的环境下进行的)

    一. DAO、RDO、ODBC和ADO

    在VB的开发环境中,可以使用三种数据库访问方式,它们分别是:数据访问对象(DAO)、远程数据对象(RDO)和ADO对象模型。

    DAO:

    数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Microsoft Access 所使用,现在已经支持其它数据库),并允许开发者通过ODBC直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或在小范围本地分布使用。其内部已经对Jet数据库的访问进行了加速优化,而且其使用起来也是很方便的。所以如果数据库是Access数据库且是本地使用的话,建议使用这种访问方式。

    VB已经把DAO模型封装成了Data控件,分别设置相应的DatabaseName属性和RecordSource属性就可以将Data控件与数据库中的记录源连接起来了。以后就可以使用Data控件来对数据库进行操作。

    RDO

    RDO(Remote Data Objects)远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。

    和DAO一样,在VB中也把其封装为RDO控件了,其使用方法与DAO控件的使用方法完全一样。

    ODBC

    ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

    一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

    一个完整的ODBC由下列几个部件组成:

    1. 应用程序(Application)

    ODBC管理器(Administrator)。该程序位于Windows 95控制面板(Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。

    驱动程序管理器(Driver Manager)。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。

    2. ODBC API

    ODBC 驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。

    数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。

    ODBC连接目前仅仅限于关系型数据库,对于其他数据源比如EXCEL、文本文件都不能进行访问,而且有很多DBMS(数据库管理系统)都不能充分的支持其所有的功能。相比之下,OLEDB可以存取任何形式的数据,所以其功能是相当的强大,它也指导了目前技术发展的方向。

    ADO

    ADO(ActiveX Data Object)是DAO/RDO的后继产物。ADO 2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO"扩展"了DAO和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。

    作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。

    ADO涉及的数据存储有DSN(数据源名称)、ODBC(开放式数据连接)以及OLE DB三种方式。后面的例程将详细讲解这三种方式的具体访问实现。

    要使用ADO,必须清楚ADO的对象层次结构,其大体上分为以下7个对象层次:

    1、 Command 对象:包含关于某个命令,例如查询字符串、参数定义等的信息。Command 对象在功能上和 RDO的rdoQuery 对象相似。

    2、 Connection 对象:包含关于某个数据提供程序的信息。Connection 对象在功能上和 RDO 的 rdoConnection 对象是相似的,并且包含了关于结构描述的信息。它还包含某些 RDOEnvironment 对象的功能,例如transaction 控件。

    3、 Error对象:包含数据提供程序出错时的扩展信息。Error 对象在功能上和 RDO 的rdoError 对象相似。

    4、 Field 对象:包含记录集中数据的某单个列的信息。Field 对象在功能上和 RDO的rdoColumn 对象相似。

    5、 Parameter 对象:包含参数化的Command对象的某单个参数的信息。该 Command对象有一个包含其所有Parameter 对象的 Parameters 集合。Parameter 对象在功能上和 RDO 的 rdoParameter 对象相似。

    6、 Property对象:包含某个 ADO 对象的提供程序定义的特征。没有任何等同于该对象的RDO,但DAO有一个相似的对象。

    7、Recordset对象:用来存储数据操作返回的记录集。此对象和Connection对象是所有对象最重要的两个对象。

    当然,对于初级用户来说,我们只需要掌握其中的Connection对象和RecordSet对象就可以实现基本的数据库操作,在后面的经验介绍里面我将给出详细的介绍。

    展开全文
  • VB中基于ADO的数据库访问

    万次阅读 多人点赞 2012-07-25 17:50:22
    VB中常用的数据库访问接口有三种,即DAO、RDO、ADO三种对象模式。三种模式具体解释见上篇文章: DAO/RDO/ADO,ODBC,OLEDB之间关系 本篇文章我们重点介绍一下ADO应用。 一:ADO简介 ADO(ActiveX ...
  • Hook编程。如何安装钩子过程,如何编写全局钩子,动态连接库里全局变量数据共享问题分析。ADO数据库编程。在VB中利用ADO控件和ADO对象访问数据库,在VC中利用ADO技术访问数据库
  • 本资源用一个个vb小程序,手把手教会你怎么在VB编程过程创建数据库,如何访问数据库,以及相应的数据库处理技术,查询技术,安全技术,窗体开发,报表设计等等,非常适合初学者入门学习使用
  • VB数据库编程技术 3.RecordSource属性 RecordSource确定具体可访问的记录集对象Recordset。 该属性值可以是数据库中的单个表名或者是使用SQL查询语言一个查询。 例如,指定Student.mdb数据库中的基本情况表: ...
  • vb数据库编程技术001

    2011-04-10 05:34:00
    vb中的数据库编程就是创建数据访问对象, 这些数据访问对象对应于被访问的物理数据库的不同局部, vb数据库:也称为本地数据库, 这类数据库文件运用与microsoftaccess相反的格式。 3. odbc数据库:包括符合odbc...
  • VB访问SQL Server数据库技术全揭密2006-08-03 05:00作者:出处:电子技术责任编辑:方舟 摘 要: 本文讨论了Visual Basic应用程序访问SQL Server数据库的几种常用的方法,分别说明了每种方法的内部机理并给出了每种...
  • VB访问SQL Server数据库技术详解

    千次阅读 2007-09-26 11:21:00
    本文讨论了Visual Basic应用程序访问SQL Server数据库的几种常用的方法,分别说明了每种方法的内部机理并给出了每种方法的一个简单的实例,最后比较了每种方法性能和优缺点。 一、引言 SQL Server是微软推出的...
  • VB访问SQL Server数据库技术全揭秘

    千次阅读 2006-12-24 12:27:00
    摘 要: 本文讨论了Visual Basic应用程序访问SQL Server数据库的几种常用的方法,分别说明了每种方法的内部机理并给出了每种方法的一个简单的实例,最后比较了每种方法性能和优缺点。 一、引言 SQL Server是微软...
  • Hook编程。如何安装钩子过程,如何编写全局钩子,动态连接库里全局变量数据共享问题分析。ADO数据库编程。在VB中利用ADO控件和ADO对象访问数据库,在VC中利用ADO技术访问数据库
  • vb操作数据库

    千次阅读 2005-06-16 01:44:00
    在Visual Basic,常用数据访问接口有下列三种:数据库访问对象(DAO,Data ...数据库访问技术一直在不断进步,而这三种接口每一种都分别代表了该技术不同发展阶段。最新是ADO,它是比RDO和DAO更加简单,然而更
  • VB数据库关键技术与实例(源代码)(绝对经典) 第1章 如何用代码设计和实现数据库 第2章 使用ADO访问数据库 第3章 数据库处理技术 第4章 控件在数据库开发中的应用 …… 第11章 硬件应用程序设计
  • 摘 要: 本文讨论了Visual Basic应用程序访问SQL Server数据库的几种常用的方法,分别说明了每种方法的内部机理并给出了每种方法的一个简单的实例,最后比较了每种方法性能和优缺点。 一、引言 SQL Server是...
  • 一般来说,VB访问远程后台数据库有好多方法可以实现,目前使用比较多方法有:ODBC(开放数据库互联),OO4O(OracleOLE对象) 。由于ODBC技术有一个致命缺点—速度慢。OO4O是一种进程中的OLE服务器,但是它不使用ODBC...
  • VB与MATLAB混合编程在流量标定系统数据库中的应用,潘伟,潘学军,本文介绍了水流量标定系统中VB与MATLAB混合编程,应用ActiveX自动化技术,通过数据库访问技术对MATLAB程序运算结果进行保存,实现了
  • 近来正在做一个图书管理系统,采用VB.NET语言编写,所有程序运行都必须安装Microsoft .NET Framework 4.0并连接到Access2003数据库中。现在已近完工,我将本软件中用到所有连接语句归纳于此处,一来方便大家,互相...
  • windows平台上的数据库访问技术

    千次阅读 2005-04-18 21:09:00
    应用在access 和vb5.0rdo:(remote data objects)是odbc另一个面向对象数据访问接口。它包含方法和对象与dao类似,但她们展示了更多odbc低级功能。尽管它不能很好处理access这样的数据库,但它支持其他...
  • 在上一篇文章介绍了.NET下使用Oracle数据提供程序访问Oracle方法以及较老的数据库访问方式,ODBC,DAO,RDO等。总说ODBC出现使得程序员不必在关注与特定的数据库接口进行编程。而是利用数据库驱动来隐藏了不同...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 236
精华内容 94
关键字:

vb中数据库的访问技术