VB6 ADO ConnectionString属性用;或“作为价值观

时间:2014-04-10 10:25:36

标签: sql vb6 ado

我必须支持用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不支持这个吗?或者我如何逃避那些保留的字符呢?

2 个答案:

答案 0 :(得分:1)

尝试使用Password关键字代替pwd

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

答案 1 :(得分:0)

也许如果你使用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"""