我想用无用户名和密码的DSN连接SQL数据库
该如何建立DSN和书写连接串

解决方案 »

  1.   

    其实楼主可以在FORM上加一个ADODC控件,用向导生成连接字串,将该字串COPY下来即可如下是我copy的用windows用户连接时的连接字串
    Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial 
    Catalog=DB_BASE;Data Source=TSQL
      

  2.   

    Private Const ODBC_ADD_SYS_DSN = 4
    Private Declare Function SQLConfigDataSource Lib "odbccp32.dll" (ByVal hwndParent As Long, ByVal fRequest As Long, ByVal lpszDriver As String, ByVal lpszAttributes As String) As LongPrivate Sub Command1_Click()
        Dim StrAttributes As String
        
        '构造建立数据源的函数
        StrAttributes = "DSN=orient_oa" & Chr(0) & "Database=orientnbcws" & Chr(0)
        StrAttributes = StrAttributes & "Description=MySQL ODBC 3.51 Driver DSN" & Chr(0)
        StrAttributes = StrAttributes & "Option=3" & Chr(0) & "Password=" & Chr(0) & "Port=3306" & Chr(0)
        StrAttributes = StrAttributes & "Server=210.211.15.246" & Chr(0) & "Stmt=" & Chr(0) & "User="
        
        '建立 ODBC 数据源
        Call LoadDbSource2("MySQL ODBC 3.51 Driver", StrAttributes)
    End SubPublic Function LoadDbSource2(StrDriver, StrAttributes As String) As Boolean
      LoadDbSource2 = SQLConfigDataSource(0&, ODBC_ADD_SYS_DSN, StrDriver, StrAttributes)
    End Function这是建立MY SQL 的ODBC,SQL的数据源你自己改吧!!
    主要就是改构造字符串!!
      

  3.   

    谢谢两位,
    我的目的就是在程序里数据连接串用DSN
    以便用户改变了SQL Server密码不影响程序连接数据库
      

  4.   

    eg:
    server.ini
    [HR]
    ServerName = 10.0.1.13
    userid = erp
    password = 010000009409013456009409009604009409013225010201
        '从配置文件中读取连接用户和密码信息。
        Dim a As String * 255, mKey As String
        mKey = "HR"
            
        GetPrivateProfileString mKey, "userid", "", a, 255, App.path + "\text\server.ini"
        SysUserName = GetLeftText(Replace(a, Chr(0), ""))
            
        GetPrivateProfileString mKey, "password", "", a, 255, App.path + "\text\server.ini"
        SysPassword = DeCodeStr(GetLeftText(Replace(a, Chr(0), "")))  
    ' DeCodeStr 是自己写的一个简单的解密函数
            
        ServerName = GetLeftText(Trim(Me.ComServer))
        DatabaseName = "DB_BASE"    SysProvider = "Provider=SQLOLEDB.1;SERVER=" & ServerName & ";DATABASE=" & DatabaseName & ";UID=" & SysUserName & ";PWD=" & SysPassword
        If cn.State = 1 Then cn.Close
        cn.Open SysProvider
      

  5.   

    配置文件还是不够动态
    我想知道连接ODBC是不是一定要密码
    我的代码如下:
    Public Function OpenConn(errMsg As String) As Boolean
       Dim Connstr As String
       OpenConn = True
       On Error GoTo err1''''''''''''此处采用DSN该如何写(不需要用户名和密码的那种,)
    ''''''''''''我的odbc里已经设置了访问数据库的密码,
    ''''''''''''如果客户改变SQL Server密码,只需要改DSN的配置就OK了
    ''''''''''''如何做请大家帮个忙
        Connstr = ""  
    '''''''''''''''''''''''''''''''''''''''''''''
       ' Connstr = "driver={SQL Server};server=192.168.0.8;uid=sa;pwd=;database=sms_stock;"
        conn.CursorLocation = adUseClient
        conn.ConnectionTimeout = 30
        conn.Open Connstr
    err1:
       If Err.Number <> 0 Then
          Select Case Err.Number
               Case -2147467259:
                    errMsg = "无法连接证券端数据库"
                    OpenConn = False
               Case -2147217843
                    errMsg = "连接用户名和密码出错"
                    OpenConn = False
               Case Else
                    errMsg = "未知原因导致连接失败"
                    OpenConn = False
          End Select
       End If
    End Function
      

  6.   

    引用 microsoft  ole db service component type 1.0
    然后添加
     Private objDataLink As New MSDASC.DataLinks
        Dim sConnect As String
              Set objDataLink = New MSDASC.DataLinks
              sConnect = objDataLink.PromptNew
      

  7.   

    Connstr = "driver={SQL Server};server=192.168.0.8;uid=sa;pwd=;database=sms_stock;"
    请问这句话,我以前试过,当客户机和服务器不在一个子网内时,必须在客户端配置DSN才能用,指定TCP/IP连接,那客户还得配置DSN,肯定不实际,有没有好的解决方法?也就是客户只要安装好程序就可以自动连接到SQL Server
      

  8.   

    晕哦,用的着那么麻烦吗?ODBC连接上以后,连接字符串就写CONN.CONNECTSTRING ="DSN=NAME" 就行了`
      

  9.   

    TO wdwd05(学.NET,从头开始):