一个数据库程序已经在本机上测试通过了,使用文件dsn连接数据库,如下:
ConnectString = "FileDSN=SysDB.dsn;UID=sa;PWD=mypassword"
Set cnn = New ADODB.Connection
   cnn.Open ConnectString
现在程序要交给用户测试,但用户机器上的数据源、用户名和密码配置是不同的,怎样才能做到送给他们的程序不用修改就可以正确与数据库连接?
请大虾最好给出例子代码。

解决方案 »

  1.   

    use Windows NT user to access database
      

  2.   

    将数据源、用户名和密码写入ini文件,每次程序从ini文件中读取这些信息。
    想修改时,将ini文件的内容修改即可。程序不用变
      

  3.   

    具体点ok?
    直接在odbc里面设为以windows用户登陆?那在程序里怎么相应的改?我当时装数据库时是使用用户名和密码验证,现在能改为以windows用户登陆吗?
      

  4.   

    這是兩種不同的登陸方式,本機上我都可以但是我登寶寶的用她windows的帳號就不行了所以最好還是sa登陸好
      

  5.   

    其实这是个找数据源的问题,如果是为了给用户测试,我建议你用如下的方法解决:
    1)因为你自己机器上肯定有数据源拉,我不知道你是采用什么样的数据库,如果是MS SQL就很方便了,只要你自己的SQL Server开着就行.
    2)在用户机器上配置ODBC数据源,在数据源上写入你的服务器IP,采用SQL认证,用Windows认证会有麻烦.然后在客户端配置采用TCP/IP,默认的是按名称.
    最后你可测试一下,是否能连的上数据库,我想应该可以的.
      

  6.   

    ini具体怎么操作?能给出个例子吗?
      

  7.   


    '读写INI文件
    Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
    Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
    '读取INI文件的函数
    Public Function fGetIni(ByVal sKey$ _
                        , ByVal sData$ _
                        , Optional ByVal sDefaltValue$ = "" _
                        , Optional ByVal sJm As Boolean = True _
                        , Optional ByVal sIniFileName$ = "" _
                        ) As String
        Dim iStr As String * 256, iReturn$
        If sIniFileName = "" Then sIniFileName = App.Path & "\config.ini"
        GetPrivateProfileString sKey, sData, "{}", iStr, 256, sIniFileName
        iReturn = Left(iStr, InStr(iStr, Chr(0)) - 1)
        If iReturn = "{}" Then
            fGetIni = sDefaltValue
        Else
            iReturn = Mid(iReturn, 2, Len(iReturn) - 2)
            fGetIni = iReturn
        End If
    End Function'保存INI文件的过程
    Public Sub sSetIni(ByVal sKey$ _
                    , ByVal sData$ _
                    , ByVal sValue$ _
                    , Optional ByVal sJm As Boolean = True _
                    , Optional ByVal sIniFileName$ = "")
        If sIniFileName = "" Then sIniFileName = App.Path & "\config.ini"
        WritePrivateProfileString sKey, sData, "{" + sValue + "}", sIniFileName
    End Sub
      

  8.   

    你直接写一个动态配置ODBC的语句
    函数的声明
    Public Declare Function SQLConfigDataSource Lib "odbccp32" (ByVal hwnd As Long, ByVal wRequest As Integer, ByVal lpDriver As String, ByVal lpAttributes As String) As BooleanIf SQLConfigDataSource(0, 1, "Microsoft Access driver (*.mdb)", "dsn=SysDB;description=系统数据源;dbq=" & App.Path & "\InfoDb2000.mdb;fil=MicrosoftAccess;defaultDIR=" & App.Path) = False Then
    MsgBox "设置数据源出错!", , "错误"
    End默认就把用户和密码设为空然后使用ODBC
    Private Sub Form_Load()
    Dim con As New ADODB.Connection
    Dim rs As New ADODB.Recordsetcon.Open "DSN=SysDB;UID="",PWD="""
    rs.Open SqlStr, con, adOpenKeyset, adLockOptimistic
    End Sub如果你非要设置用户和密码
    最好是设计一个输入用户名与密码的界面,让用户输入