VBA连接string错误

我正面临着从Excel VBA连接到SQL Server数据库的问题。 我主要怀疑是由于包含双引号的密码的处理不正确而发生错误。

场景:

  • SQL Server名称 – FOO \ BAR
  • 初始目录 – ScrollBar
  • 用户 – Test_User
  • 密码 – tejg3kl!“

我正在使用的连接string是:

Public Const ConnectionStringONLINE = "Provider=SQLOLEDB.1;Data Source=FOO\BAR;Initial Catalog=ScrollBar;User Id=Test_User;Password=tejg3kl!"";" 

密码值中包含一个额外的双引号作为转义序列字符。

连接到数据库的代码 –

 Dim DbConn As ADODB.Connection Set DbConn = New ADODB.Connection DbConn.Open ConnectionStringONLINE 

当上面的代码执行时,我收到一个错误 –

运行时错误'2147217843(80040e4d)':

用户“Test_User”login失败。

我做了连接string中指定相同的凭据的UDLtesting和连接工作正常。

有关为什么在VBA中发生错误的任何build议? 我是否需要修改连接string?

编辑 – 只需更改密码string以在双引号之前包含感叹号,使其看起来与我正在使用的真实密码完全相同。

那么这真是一个奇怪的! 在杰夫在评论中提出用双引号为他工作之后,我仔细看了一下我的情况。

事实certificate,数据库的密码是tejg3kl!“而我在代码中使用的是tejg3kl!”

你有没有注意到双引号的区别?

显然这里有不同types的双引号 – 在utf-8(PHP,str_replace)中是否有不同types的双引号? 也在这里 – http://unicode.org/cldr/utility/confusables.jsp?a=%22&r=None

所以,最后我所做的只是在连接string中使用“而不是”,并且代码工作得很好(而且,不需要包含任何转义序列)

有人可以解释需要不同types的双引号吗?

在vb中转义双引号并不完全正确。 您必须使用chr函数将引号插入到string中。
尝试这个。 ..

 ConnectionStringONLINE = "Provider=SQLOLEDB.1;Data Source=FOO\BAR;Initial Catalog=ScrollBar;User Id=Test_User;Password=tejg3kl" & Chr(34) & ";"