【问题标题】:VB6 ADO ConnectionString Property with ; or " as valuesVB6 ADO ConnectionString 属性与;或 " 作为值
【发布时间】:2014-04-10 10:25:35
【问题描述】:

我必须支持一个用 VB6 编写的旧组件。 该组件具有通过 ADO Recordset 访问数据库的方法。

现在我发现有人在密码中使用分号时遇到了错误。 由于分号是保留字符,因此需要转义。

找到这个资源: http://www.connectionstrings.com/formating-rules-for-connection-strings/http://msdn.microsoft.com/en-us/library/windows/desktop/ms722656(v=vs.85).aspx

所以我尝试添加此代码:

Private Function MaskString(ByVal p_sVal)
  Dim l_sString As String
  Dim l_sQuote As String
  l_sQuote = """"
  l_sString = p_sVal
  If InStr(1, l_sString, """") > 0 Then l_sQuote = "'"
  If InStr(1, l_sString, ";") > 0 Then l_sString = l_sQuote & l_sString & l_sQuote
  MaskString = l_sString
End Function

所以我为每个值调用这个函数,最终的连接字符串就像:

provider=sqloledb;database=data_base_name;server=server_name;uid=sa;pwd="test;password"

像这样使用:

AdoConnection.ConnectionTimeout = lConnectionTimeout
AdoConnection.ConnectionString = strConnectionString
AdoConnection.Open

但是现在这似乎是正确的,但是 VB6 Ado 现在给我以下错误:

Method OpenDB: -2147467259 - Ungültiges Attribut für die Verbindungszeichenfolge - Microsoft OLE DB Provider for SQL Server

(可能英语就像 - 连接字符串的无效属性 - )

那么旧的 VB6 不支持这个?或者我该如何逃避那些保留的字符呢?

【问题讨论】:

  • 您可以改用AdoConnection.Open strConnectionString, strUserID, strPassword

标签: sql vb6 ado


【解决方案1】:

尝试使用Password 关键字代替pwd

provider=sqloledb;database=data_base_name;server=server_name;uid=sa;Password="test;password"

【讨论】:

    【解决方案2】:

    也许如果您使用 chr(59) 传递分号可能会有所帮助?还要注意双引号。

    Connection string = "provider=sqloledb" & chr(59) & "database=data_base_name" & chr(59) & "server=server_name" & chr(59) & "uid=sa" & chr(59) & "pwd="""test" & chr(59) & "password"""
    

    【讨论】:

    • 这不会有什么不同,结果是一个里面有分号的字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多