那位大虾能不能帮我讲讲ado怎样连接sql server 数据库。怎么总是连不上,要求详细。高分,最好给个例子。谢谢了。

解决方案 »

  1.   

    dim conn as new adodb.connection
    With conn
        If .State = adStateOpen Then .Close
        .ConnectionString = "driver=SQL Server;server=" & 服务器名或IP地址 & ";uid=sa;pwd=;database=" & 数据库名
        .CommandTimeout = 300
        .Open
    End With
      

  2.   

    Private Sub Form_Load()
    '首選引用ADO2.5或以上版本
    '在菜單 'project-References...-Microsoft ActiveX Data Objects 2.5 Librarydim cn as new adodb.connection
    if cn.state=adstateopen then cn.close
    with cn
           .provider="sqloledb"
           .connectionstring="data source=你的Sql服務器;initial catalog=你的數據庫名稱;user id=sa;password=你的密碼"
           .open
    end with
    msgbox "連上了數據庫"End Sub
      

  3.   

    '将以下函数加入你的程序模块,在程序中直接调用:Public Function vConnection_ADO(adoCnn As ADODB.Connection, DataPathName As String, Optional userid As String, Optional PassWord As String, Optional ServerName As String, Optional nFlag As Integer = 0, Optional nWinntFlag As Boolean = True) As Boolean
    '**************************************************************************************************
    '功能:用 ADO 连接数据库(服务器),如果连接成功则返回 True 并且返回 adoCnn 连接对象供程序使用
    '参数:当 nFlag = 0 时是连接 Access 数据库,DataPathName 为数据库名称路径
    '      当 nFlag = 1 时是连接 SQL Server 服务器,ServerName为服务器名,DataPathName为数据库名称
    '      当 nFlag = 2 时是连接 ODBC 数据源数据库,DataPathName 为数据源名称
    '      当 nFlag = 1、2 时 nWinntFlag 启用:= True为系统集成安全访问,= False为用户名和密码访问
    '      访问数据库的用户名和密码分别为:UserID 和 PassWord
    '时间:2004 年 08 月 04 日   ALEX  ADD
    '**************************************************************************************************
    On Error GoTo errHandlerr
       
       Dim CnnStr As String
        
       vConnection_ADO = False
       If Trim(DataPathName) = "" Then
          MsgBox "被连接的数据库名称为空,连接失败!", vbCritical, "数据库名不能为空 ..."
          Exit Function
       End If
       If nFlag = 0 Then
          CnnStr = "provider=Microsoft.Jet.OLEDB.4.0;Data source =" + DataPathName + " ;Persist Security Info=False;Jet OLEDB:Database Password=" + PassWord
       ElseIf nFlag = 1 Then
          If Trim(ServerName) = "" Then ServerName = "LIBINGAO"  // 服务器名,可根据实际修改
          If Trim(userid) = "" Then userid = "sa"
          If nWinntFlag Then
             CnnStr = "Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=" + DataPathName + ";Data Source=" + ServerName + "; Integrated Security=SSPI;"
          Else
             CnnStr = "Provider=SQLOLEDB.1;Persist Security Info=True; Initial Catalog=" + DataPathName + ";Data Source=" + ServerName + "; User ID=" + userid + ";Password=" + PassWord
          End If
       ElseIf nFlag = 2 Then
          If Trim(ServerName) = "" Then ServerName = ""
          If Trim(userid) = "" Then userid = "admin"
          If nWinntFlag Then
             CnnStr = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=" + DataPathName + ";Initial Catalog=" + ServerName  '由于初始目录事先未知,故在此用 ServerName 置空
          Else
             CnnStr = "Provider=MSDASQL.1;Persist Security Info=True ;Data Source=" + DataPathName + ";Initial Catalog=" + ServerName + ";User ID=" + userid + ";Password=" + PassWord
          End If
       End If
       
       With adoCnn
            If .State = adStateOpen Then .Close
           .ConnectionString = CnnStr
           .Open ', , , adAsyncConnect     ' 参数 adAsyncConnect 用于异步打开连接(不必等待),此时要用 WithEvents 关键字声明 adoCnn
            If .State = adStateOpen Then   ' 用 ADO 连接 指定数据库成功,函数返回 True 和 已连接好的 对象 adoCnn
                vConnection_ADO = True
            Else                           ' 用 ADO 连接 指定数据库失败,函数返回 False 并弹出报错对话框
    errHandlerr:
                If Trim(err.Description) <> "" Then
                   MsgBox err.Description + ":" + CStr(err.number) + vbCrLf + "用 ADO 连接数据库 < " + DataPathName + " > 失败,你可能不能正常使用当前功能界面!", vbCritical, "数据库连接发生错误 ..."
                Else
                   MsgBox "用 ADO 连接数据库 <" + DataPathName + "> 失败,你可能不能正常使用当前功能界面!", vbCritical, "数据库连接发生错误 ..."
                End If
            End If
       End With
       
    End Function
      

  4.   

    VB访问数据库的方法与原则   1.VB访问数据库的原则   总则:具体问题具体分析,根据具体的环境、条件、要求而采用适当的方案   *代码的重用和运行的效率   例如:通过使用ODBC数据源连接数据库的方法,可在变换多种数据库类型的情况下,而不用频繁修改代码。用VBSQL通过DB-Library就做不到。而ODBC接口并不是VB访问数据库运行效率最高的方法。同样,同是使用ODBC接口的ADO的效率要高于RDO   *实现的简便性,易维护性   如果一种方法实现起来很复杂,工程的开发必然造成人力物力的浪费,同时这样设计出来的应用程序只会支持起来更复杂或维护时更困难。例如:本地需要访问ISAM或Jet类型数据源,那么就使用DAO/Jet,而没有必要使用通过ODBC的方法。RDC实现起来要较RDO更容易   *安全性原则   报这一条应根据环境和条件决定。例如局域网的网络安全性要好于广域网因而可直接利用数据控件如DC,这样实现起来方便快捷,而广域网需要大量的错误捕获,如用RDC就不如用RDO易控制错误。   2.VB访问数据库的方法   VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多方法。   数据访问接口功能及含义:   ADC:高级数据连接器(AdvancedDataConnector):提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLEDB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。   ADO:Active数据对象(ActiveDataObjects):ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQLServer、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。   DAO:数据访问对象(DataAccessObjects):是一种面向对象的界面接口。通过DAO/Jet功能可以访问ISAM数据库,使用DAO/ODBCDirect功能可以实现远程RDO功能。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同DDL(数据描述语言)的功能很类似。   DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。   JET:数据连接性引擎技术(JointEngineTechnology):是一种基于工作站通过DAO的数据库访问机制。虽然可以通过微软Access提供的ODBC驱动程序访问Jet数据库,但使用这些驱动程序在功能上有所限制。Jet机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。   0DBC:开放式的数据库连接(OpenDatabaseConnectivity):是一种公认的关系数据源的接口界面。它快而轻并且提供统一接口的界面,ODBC对任何数据源都未作优化。   ODBCDirect:是一种基于DAO对象的新的DAO模式,其方法和属性与RDO功能相同。使用在有DAO代码存在的场合,可用来访问远程数据源。   OLEDB:是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO技术的应用程序或用于C++的开发者开发定制的数据库组件。OLEDB不能被VB直接调用。   RDC:远程数据访问控件(RemoteDataControl):是一种对RDO数据绑定的控件。可以输出特定的结果集到数据源控件。   RDO:远程数据对象(RemoteDataObjects):远程数据对象和集合为使用代码来创建和操作一个远程ODBC数据库系统的各个部件提供了一个框架。对象和集合都具有描述数据库的各个部件特征的属性以及用来操作这些部件的方法。可以在对象和集合之间建立起关系,这些关系就代表了数据库系统的逻辑结构。RDO是ODBCAPI的一个浅层界面接口。是专为访问远程ODBC关系数据源而设计的。   VBSQL:是VisualBasic结构化查询语言。是一种基于API的接口方法,几乎与C的DB-LibraryAPI相同。VBSQL只支持微软的SQLServer。VBSQL快而且轻但不支持对象界面。   使用RDO的一般方法如下。   先声明变量:   PublicconAsrdoConnection,resAsrdoResultset   然后初始化rdoEngine,设置用户和口令等缺省参数;WithrdoEngine   .rdoDefaultUser="sa"`用户为sa   .rdoDefaultPassword="pass"`口令为pass   .rdoDefaultCursorDriver=rdUseServer   .rdoDefaultLoginTimeout=15   EndWith   再连接到要访问的远程数据库(可使用DSNConnection和DSN-LessConnection)。   使用DSNConnection举例(连接服务器SERVER上的数据库hotel):   Setcon=rdoEnvironments(0).OpenConnection   ("hotel",rdDriverNoPrompt,False)   使用DSN-LessConnection举例(连接服务器SERVER上的数据库hotel):   Setcon=rdoEnvironments(0).OpenConnection   ("",rdDriverNoPrompt,False,_"driver={SQLServer};server=SERVER;database=hotel")   建立连接后,既可使用OpenResultset方法执行查询并处理结果集,又可使用Execute方法执行包括数据定义和数据操作在内的动作查询。例如:   Setres=con.OpenResultset("SELECT*FROMmenu",rdOpenStatic)   con.Execute"CREATEVIEWmenu_viewASSELECT代码,菜名FROMmenu",rdExecDirect   RDO最强大和最重要的特性之一是:它可以查询和处理由存储过程返回的结果,无论它有多么复杂。   除RDO外,还可使用RDC访问远程数据库。   远程数据控件(RDC)与数据控件(DC)类似,不同之处是RDC使用RDO连接到ODBC驱动程序管理器,而DC则使用DAO连接到Jet数据库引擎。利用RDO和RDC,无需使用Jet引擎就可以访问ODBC数据源。这样,在访问远程数据库时,可以获得更好的性能和更大的灵活性。   远程数据控件MSRDC使用举例如下。   Connectriver={SQLServer};server=SERVER;database=hotel   DataSourceName:   SQL:SELECT*FROMmenu   UserNamea   Passwordass   CursorDriver:3-rdUseClient   可以使用RDC执行许多简单的远程数据访问操作,不需编写任何代码,只要填写有关项就可以了,使用起来很方便。但应注意,除非在设计时禁止并只在需要时启动RDC,否则它至少将消耗一个远程数据库连接。在远程数据库连接资源有限或要求很高效的情况下,宜慎用、少用RDC。这种情况下,应尽可能考虑使用RDO,并使用存储过程(预编译好的SQL语句)。   最后还应注意,只有32位操作系统(如WindowsNT或Windows95),才能支持RDO和RDC。RDO和RDC也只能用于访问32位ODBC数据源。 
      

  5.   


    工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)    Dim CN   As New ADODB.Connection                '定义数据库的连接
        Dim Rs   As New ADODB.Recordset
        CN.ConnectionString = "Provider=sqloledb;Data Source=pmserver;Initial Catalog=northwind;User Id=sa;Password=xxx;"
        CN.Open请检查服务器名、数据库、用户名、密码是否正确,还有SQL SERVER的权限设置
        CN.ConnectionString = "Provider=sqloledb;Data Source=服务器名;Initial Catalog=数据库;User Id=用户名;Password=密码;"
      

  6.   

    加个ADO控件
    然后用猩猩们的代码实现!!
      

  7.   

    程序如下:
    Set cnn = New ADODB.Connection
       
       If cnn.State = adStateOpen Then cnn.Close
       With cnn
              .Provider = "sqloledb"
              .ConnectionString = "data source = shuab;initial catelog = Ticket;user id = sa; password ="
              .Open
              
        End With
        MsgBox "connect the database"
    但是还是连接不成功。
    我想问的是,数据库名要全部路径吗?
      

  8.   

    Dim CN   As New ADODB.Connection                '定义数据库的连接
        Dim Rs   As New ADODB.Recordset
        CN.ConnectionString = "Provider=sqloledb;Data Source=SHUAB;Initial Catalog=northwind;User Id=sa;Password=;"
        CN.Open
    我运行了一遍,出现如下错误:用户'sa'登陆失败,原因:未与信任 sql server 连接相关联.请问这是什么原因.
      

  9.   

    Dim conn As New ADODB.Connection
    With conn
        If .State = adStateOpen Then .Close
        .ConnectionString = "driver=SQL Server;server= SHUAB;uid=sa;pwd=;database=Northwind "
        .Open
    End With出现如下问题:难道我数据库装错了。
    [microsoft][odbc sql server driver][dbnetlib] sql server 不存在或拒绝存取.
      

  10.   

    //用户'sa'登陆失败,原因:未与信任 sql server 连接相关联.请问这是什么原因.你的 Password 不对/*Dim CN   As New ADODB.Connection                '定义数据库的连接
        Dim Rs   As New ADODB.Recordset
        CN.ConnectionString = "Provider=sqloledb;Data Source=SHUAB;Initial Catalog=northwind;User Id=sa;Password=;"
        CN.Open*/这里的 Password 为空,检查你的数据库 SA 的密码是否为空.
      

  11.   

    出现如下问题:难道我数据库装错了。
    [microsoft][odbc sql server driver][dbnetlib] sql server 不存在或拒绝存取.=================='工程->引用Microsoft ActiveX Data Objects 2.x Library
    Option Explicit
        Public mCnnString As StringPrivate Sub Command1_Click()
        Dim mRst As New ADODB.Recordset
        Dim mCon As New ADODB.Connection
        
        mCnnString = "driver={SQL Server};server=SHUAB;uid=sa;pwd=;ConnectionTimeout=0;database=Northwind"
        
        mCon.Open mCnnString
        mRst.CursorLocation = adUseClient
        mRst.Open "Select * From Orders", mCnnString, adOpenStatic, adLockOptimistic, adCmdText
        Set DataGrid1.DataSource = mRst
    End Sub