假设我有一个如下所示的密码:密码;
如何使用分号作为最后一个字符。密码适用于SSMS和ODBC,但不适用于连接字符串。我试过"
,但这似乎不起作用。
<add name="DbConn" connectionString="Data Source=LOCALHOST;Database=MYDB;Trusted_Connection=no;User Id=myuser;Password=password;" providerName="System.Data.SqlClient" />
这适用于ASP.NET Web应用程序。据我所知,这是不可能的。更新:有可能!
答案 0 :(得分:18)
将您的密码封装在单引号中。例如如果密码为iloveachallenge;
,则您的连接字符串应包含Password='iloveachallenge;';
。
我使用以下代码连接到SQL Server 2008 R2。
var sqlConnection = new SqlConnection()
{
ConnectionString = "Server=DT2719MOD;Database=abs2;User Id=TestUserLogon;Password='iloveachallenge;';"
};
sqlConnection.Open();
Console.WriteLine(sqlConnection.State);
sqlConnection.Close();
编辑: 还试图使用你拥有的连接字符串,它可以在我的机器上运行。
ConnectionString="Data Source=DT2719MOD;Database=abs2;Trusted_Connection=no;User Id=TestUserLogon;Password='iloveachallenge;';"
答案 1 :(得分:5)
要包含包含分号,单引号字符或双引号字符的值,该值必须用双引号括起来。
来自:http://msdn.microsoft.com/en-us/library/windows/desktop/ms722656(v=vs.85).aspx
基本上你有连接字符串的所有转义过程。
答案 2 :(得分:1)
是的,这是可能的。答案在Pete的答案中给出:Escape ;(semicolon) in odbc connection string in app.config file
基本上,您需要在用户名/密码字段周围放置单引号,而不是要转义的字符,这是我出错的地方。
窃取Pete的例子:
pscp -sftp -pw passwd c:\filedump\* user@host:/Outbox/
mv c:\filedump\* c:\backup\*
需要成为:
initial catalog=myDB;UserId=MyUser;Password=abc;123;multipleactiveresultsets=True;