【发布时间】: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。