【问题标题】:How to handle MS SQL password with Semicolon and Single quotation in VB.Net Code?如何在 VB.Net 代码中处理带分号和单引号的 MS SQL 密码?
【发布时间】:2020-03-23 13:08:01
【问题描述】:

我们正在 vb.net 中编写代码。我的 MS SQL 密码包含分号、双引号和单引号 (ilo;veac'h”alle;nge)。

Dim ConnectionString As String = "Server=DT2719MOD; Database=abs2; User Id=TestUserLogon; Password= ilo;veac'h”alle;nge"

任何人都可以建议/提供一些解决这个问题的方法吗?

【问题讨论】:

标签: sql sql-server vb.net


【解决方案1】:

你可以试试

Dim quote as String = Chr$(34)
Dim semi as String = Chr$(59)
Dim password as String "ilo" & semi & "veac'h" & quote & "alle" & semi & "nge"    

Dim ConnectionString As String = String.Format("Server=DT2719MOD; Database=abs2; User Id=TestUserLogon; Password= {0}", password)

Chr() 函数可以在https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/chr-function找到

【讨论】:

  • 问题不在于构建字符串。问题是让 SqlConnection 对象正确解析它。
  • 我刚刚理解了带密码的字符串不起作用的问题,因为双引号和分号。
【解决方案2】:

在 VB 和连接字符串中,您可以用另一个双引号转义一个双引号,并且您可以将连接字符串字段值包含在双引号中。这意味着,要按字面意思编写连接字符串,您可以这样做:

Dim ConnectionString As String = "Server=DT2719MOD;Database=abs2;User Id=TestUserLogon;Password=""ilo;veac'h""""alle;nge"""

密码在连接字符串中用双引号括起来,以便分号按字面意思解释,并且需要在 VB 中转义。密码中的双引号需要在连接字符串中进行转义,然后这两个也需要在 VB 中进行转义。

请注意,正如 cmets 中所建议的,连接字符串生成器会为您执行此操作,例如

Dim builder As New SqlConnectionStringBuilder With {
        .DataSource = "DT2719MOD",
        .InitialCatalog = "abs2",
        .UserID = "TestUserLogon",
        .Password = "ilo;veac'h""alle;nge"}
Dim connection As New SqlConnection(builder.ConnectionString)

在这种情况下,您唯一需要做的就是为 VB 将密码中的双引号转义一次。

作为记录,您也可以使用服务器资源管理器为您生成连接字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多