我的SQL server 2000版本是个人版,采用本地系统帐户,混合登陆模式,系统管理员sa密码为sa,此三项均是安装时设定的.
连接数据库时总是连接不上,请各位高手指教.Public Const SQL_SUCCESS As Long = 0 
Public Const SQL_SUCCESS_WITH_IHFO As Long = 1
Public Const DATABASE As String = "StudentSys"   '该数据源已经驱动
Public Const DSN As String = "StudentSys"
Public Const DB_USER_NAME As String = "sa"
Public Const DB_PASSWORD As String = "sa"Private Sub Connect()
    Dim TmpStat As Long   'SQLConnect()函数的返回值
    '如果连接标记为真,则返回,否则会出错
    If IsConnect = True Then
        Exit Sub
    End If
    '分配环境句柄,保存在变量Henv中
    If SQLAllocEnv(Henv) Then
        MsgBox "无法初始化ODBC环境!", , "ODBC API执行错误"
        End
    End If
    '根据环境句柄,分配连接句柄,保存在变量Hdbc中
    If SQLAllocConnect(Henv, Hdbc) Then
        MsgBox "无法连接ODBC!", , "ODBC API执行错误"
        End
    End If
    '根据连接句柄、数据源、用户名和密码连接指定的数据库
    TmpStat = SQLConnect(Hdbc, DSN, Len(DSN), DB_USER_NAME, _
            Lench(DB_USER_NAME), DB_PASSWORD, Len(DB_PASSWORD))
    '如果连接不成功则退出程序
    If TmpStat <> SQL_SUCCESS And _
        TmpStat <> SQL_SUCCESS_WITH_INFO Then
        MsgBox "无法获得连接句柄!", , "ODBC API执行错误"
        IsConnect = True
        Disconnect
        End
    End If
    '设置连接标记
    IsConnect = True
End Sub进入此函数后总是无法获得连接句柄.

解决方案 »

  1.   

    我建议你这样写数据库连接及访问
    Dim msgtext As String
    Dim mrc As ADODB.RecordsetPublic Function ExecuteSQL(ByVal sql As String, MsgString As String) As ADODB.Recordset
        Dim cnn As ADODB.Connection
        Dim rst As ADODB.Recordset
        Dim sTokens() As String
        'Dim SQL As String
        On Error GoTo ExecuteSQL_Error
        sTokens = Split(sql)
        Set cnn = New ADODB.Connection
        cnn.Open ConnectString
        If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
           cnn.Execute sql
           MsgString = sTokens(0) & "query successful"
        Else
           Set rst = New ADODB.Recordset
           rst.Open Trim$(sql), cnn, adOpenKeyset, adLockOptimistic
          
           
           Set ExecuteSQL = rst
            
           MsgString = "查询到" & rst.RecordCount & "条纪录"
        End If
    ExecuteSQL_Exit:
        Set rst = Nothing
        Exit Function
        Set cnn = Nothing
    ExecuteSQL_Error:
        MsgString = "查询错误:" & Err.Description
        Resume ExecuteSQL_Exit
    End FunctionPublic Function ConnectString() As String
        ConnectString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=登陆数据库的名;Data Source=ip或机器名"
    End Function
      

  2.   

    '分配环境句柄,保存在变量Henv中
        If SQLAllocEnv(Henv) Then
            MsgBox "无法初始化ODBC环境!", , "ODBC API执行错误"
            End
        End If
        '根据环境句柄,分配连接句柄,保存在变量Hdbc中
        If SQLAllocConnect(Henv, Hdbc) Then
            MsgBox "无法连接ODBC!", , "ODBC API执行错误"
            End
        End If
    你的两个函数的参数好象数量上不对,第一个需要4个,后一个需要3个,不过我看的是C语言范例,而且VB里也没用过SQL API方式来连数据库。你再查查看吧。
      

  3.   

    Lench()计算字符串长度的函数,把一个中文当做2个字符.