请问ado和Dao的区别
我感到数据库的使用很混乱
能否将每种使用方法多说一次呢
包括access

解决方案 »

  1.   

    ado不是为access设计的,用于access会效率低,但ado适用范围更广,可用于SQLServer,用dao访问access比较快
      

  2.   


    VB6.0中数据库访问方法
    毕业设计系列讲稿一  2003.2.23
    一 数据控件方法
    ⒈ 使用DAO数据控件
    主要用于访问本地数据库,也可以访问远程数据库。
    ① 启动VB6后,在缺省Form上添加Data控件,Name属性为Data1,并设置如下:
     使用Access数据库时
    Data1.Connect=”Access”
    Data1.DatabaseName=”C:\Access\student.mdb”(指向数据库路径,可通过浏览获取)
    Data1.RecordSource=”学生自然情况”(表名,可从下拉列表中选择)
     使用SQL Server数据库时
    Data1.Connect=”ODBC;DSN=MSSQL;DATABASE=student;UID=sa;PWD=key”
    (MSSQL为ODBC数据源名,student为数据库名,sa为SQL Server用户名,key为SQL Server用户密码)
    Data1.DatabaseName=”MSSQL”
    Data1.RecordSource=”dbo. 学生自然情况”(表名)
    ② 右击工具箱,选择快捷菜单components(部件),找到Microsoft Data Bound Drid Control 5.0 (sp3),选中复选框,点击确定,在工具箱中增加DBGrid控件。
    把控件DBGrid添加到Form上,Name属性为DBGrid1,并设置如下属性:
    DBGrid1.DataSource=”Data1”(可从下拉列表中选择)
    ② 点击工具条的►、或菜单\Run\Start、或按F5键运行。
    ⒉ 使用RDO数据控件
    主要用于访问远程数据库,下面以SQL Server为例。
    ① 启动VB6.0后,出现缺省Form
    右击工具箱,选择快捷菜单components(部件),找到Microsoft Remotedata Control 6.0, 选中复选框,点击确定,在工具箱中增加MSRDC控件。
    右击工具箱,选择快捷菜单components(部件),找到Microsoft Data Bound Drid Control 5.0 (sp3),选中复选框,点击确定,在工具箱中增加DBGrid控件。
    ② 添加MSRDC控件到Form上,其Name属性为MSRDC1。添加DBGrid控件到Form上,其Name属性为DBGrid1。
    ③ 设置如下属性:
    MSRDC1.Connect=” UID=sa;PWD=key;DATABASE=student”
    MSRDC1.DataSourceName=”MSSQL”
    MSRDC1.SQL=”select * from学生自然情况”
    DBGrid1.DataSource=”MSRDC1”
    ④ 点击工具条的►、或菜单\Run\Start、或按F5键运行
    ⒊ 使用ADO数据控件
    综合了DAO控件和RDO控件,可以访问本地数据库,也可以访问远程数据库
    ① 启动VB6.0后,出现缺省Form
    右击工具箱,选择快捷菜单components(部件),找到Microsoft ADO Data Control 6.0(OLEDB), 选中复选框,点击确定,在工具箱中增加Adodc控件。
    右击工具箱,选择快捷菜单components(部件),找到Microsoft DataGrid Control 6.0(OLEDB), 选中复选框,点击确定,在工具箱中增加DataGrid控件。
    ② 加Adodc控件到Form上,其Name属性为Adodc1,右击Form上的Adodc控件,选择快捷菜单ADODC Properties出现属性窗口。
    在General页中点击Build按钮
    使用Access97时,选择Microsoft jet 3.51 OLE DB Provider
    使用Access2000时,选择Microsoft jet 4.0 OLE DB Provider
    使用SQL Server时,选择Microsoft OLE DB Provider for SQL Server
     设当前数据库为Access97,点击“下一步”,进入连接页
    在“选择或输入数据库名称”处输入C:\Access97\student.mdb(可通过浏览找到)。通过下面的“测试连接”按钮进行测试。
    再进入RecordSource页,在Command Type中选择2-adCmdTable,在Table or Stored Procedure Name中输入表名“学生自然情况”(可从下拉列表框中选择)。
    点击“确定”退出。
     设当前数据库为SQL Server,点击“下一步”,进入连接页,分别输入服务器名称(这里为Domain)、SQL Server用户名(sa)、SQL Server用户密码(key)。
    在“在服务器上选择数据库”处输入数据库名student(可从下拉列表框中选择),通过下面的“测试连接”按钮进行测试。
    点击“确定”进入RecordSource页,在Command Type中选择2-adCmdTable,在Table or Stored Procedure Name中选择表“学生自然情况”(可从下拉列表框中选择)。
    点击“确定”退出。
    ③ 添加DataGrid控件到Form上,其Name属性为DataGrid1,并设置
    DataGrid1.DataSource=Adodc1。
    ④ 点击工具条的►、或菜单\Run\Start、或按F5键运行。
    注:可以不用DBGrid或Data Grid控件,用Label和Text控件。设置Text.DataSource=Adodc1,Text.DataField=字段名。
    使用控件方法,可以不写代码,或少写代码,但程序不灵活,功能有限。
    二DAO方法(Data Access Object数据访问对象)
    DAO数据库引擎提供与数据库交往的机制,提供给用户访问数据库的一整套方法。可以访问本地数据库,如Access,也可以通过ODBC数据源访问远程数据库,如SQL Server。
    程序员需要编写大量代码完成程序设计,可以完成非常复杂的工作。
    ⒈ 连接到本地数据库Access
    首先定义如下变量:
    Private dbStudent As Database
    Private StudentSet As Recordset
    在Form的Load事件中加入如下代码:
    Dim strDBName As String
    strDBName = "C:\ACCESS97\student"
    下面两条,用那一条都可以
    Set dbStudent = DBEngine.Workspaces(0).OpenDatabase(strDBName)
    Set dbStudent = DBEngine.OpenDatabase(strDBName, True, False, "")
    Set StudentSet = dbStudent.OpenRecordset("select * from学生自然情况",
     dbOpenDynaset, dbOptimistic)
    注:使用参数dbOpenDynaset允许使用select语句,参数dbOpenTable只能使用表名,不能用select语句。
    结果集StudentSet中包括了表“学生自然情况”的全部记录。
    结果集提供了很多对数据库进行操作的方法,如:
    用Text1.Text=StudentSet.Fields(“姓名”)把数据送往控件,显示在屏幕上。
    用StudentSet.Fields(“姓名”)= Text1.Text把控件数据送往结果集,再存入表中。
    用StudentSet.MoveFirst、StudentSet.MovePrevious、StudentSet.MoveNext、StudentSet.MoveLast移动记录指针。 
    ⒉ 连接到远程数据库SQL Server
    只改变下面一条,其余不动:
    Set dbStudent = DBEngine.OpenDatabase("MSSQL", True, False, 
    "ODBC;DSN=MSSQL;DATABASE=jcl;UID=sa;PWD=key")
    ⒊ 关闭数据库
    StudentSet.Close
    Set StudentSet = Nothing
    dbStudent.Close
    Set dbStudent = Nothing
    三RDO方法(Remote Data Object远程数据对象)
    RDO适用于客户机/服务器型应用程序的开发。RDO与DAO相比较,它可以与服务器端数据库在更低级的层次上交往。下面介绍如何连接到SQL Server。
    作如下定义
    Private rsrdoEnv As rdoEnvironment
    Private rsrdoconn As rdoConnection
    Private rsrdoRS As rdoResultset
    在Form的Load事件中,加入如下代码:
    Set rsrdoEnv = rdoEnvironments(0)
    Set rsrdoconn = rsrdoEnv.OpenConnection("MSSQL", rdDriverNoPrompt, False, 
    "ODBC;UID=sa;PWD=key")
    rsSql = "select * from学生自然情况"
    Set rsrdoRS = rsrdoconn.OpenResultset(rsSql, rdOpenKeyset, rdConcurRowVer, 0)
    四ADO方法(ActiveX Data Object)
    继开放式数据库连接ODBC(Open Database Connectivity Interface)接口之后,微软公司又推出了OLE DB(Object Linking and Embedding DataBase)。ADO使用OLE DB访问数据库,它综合了DAO和RDO的功能,特别适于Client/Server应用程序的开发。因为在VBVScript中可以使用ADO,因而它也非常适合于Web或数据库服务器端的集成。
    ⒈ 连接到本地数据库Access97
    首先定义如下变量:
    Private cnn As New adodb.Connection
    Private rs As New adodb.Recordset
    在Form的Load事件中,加入如下代码:
    cnn.Provider = "Microsoft.Jet.OLEDB.3.51"
    cnn.ConnectionString = "c:\access97\student.mdb"
    cnn.Open
    StrSql = "select * from 学生自然情况"
    rs.ActiveConnection = cnn
    rs.CursorType = adOpenKeyset
    rs.LockType = adLockOptimistic
    rs.Open StrSql
    上面五条可用下面一条代替
    rs.Open "学生自然情况", cnn, adOpenKeyset, adLockOptimistic
    注:连接到Access2000,用Microsoft.Jet.OLEDB.4.0
    ⒉ 连接到远程数据库SQL Server
    首先定义如下变量:
    Private cnnStudent As New adodb.Connection
    Private mStudent As New adodb.Recordset
    在Form的Load事件中,加入如下代码:
    cnnStudent.Provider = "SQLOLEDB.1;User ID=sa;Password=key;Database=student"
    (注:连接字符串与安装时选择的参数有关。)
    cnn.Student.Open
    mStudent.Open "学生自然情况", cnnStudent, adOpenKeyset, adLockOptimistic
    ⒊ 关闭数据库
    mStudent.Close
    Set mStudent = Nothing
    cnnStudent.Close
    Set cnnStudent = Nothing
    注:在project/References…加入
    DAO:Microsoft  DAO  3.6  Object  Library 
    RDO:Microsoft  Remote  Data  Object  2.0
    ADO:Microsoft  Aictive  Data  Objects 2.5  Library