连接字符串中的撇号(单引号)
Apostrophe (single quote) in connection string
我在使用连接字符串中的 '
字符时遇到问题。 Entity Framework 抛出异常说:
Format of the initialization string does not conform to specification starting at index
我尝试了 here and here 建议的答案,但没有成功。
我也尝试用 SqlConnectionStringBuilder
class 构造它,结果得到了同样的异常。
谁能帮帮我?
提前致谢。
编辑:
连接字符串确实在 web.config 文件中,它看起来像这样:
<add name="TestEntities" connectionString="metadata=res://*/DAL.TestModel.csdl|res://*/DAL.TestModel.ssdl|res://*/DAL.TestModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\testsource;initial catalog=testdb;User Id=testuser;Password=test'password;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
问题出在 Password=test'password
位上。
- 我不能把它放在双引号里,因为它已经被双引号括起来了。
- 我不能把它放在
"
-s 之间,因为它也已经被它们包围了。
- 而且我不能将它放在单引号中,因为单引号本身就是我要转义的内容。
Password='test'password'
无效。
假设它是包含单引号的密码,您应该尝试将密码括在 xml 编码的双引号中,像这样:
<connectionStrings>
<add name="MyConnectionString" connectionString="Data Source=.;
Initial Catalog=MYDB; User ID=MyUser;Password="my'password";
providerName="System.Data.SqlClient";/>
</connectionStrings>
假设您不在 Xml 上下文中(如 @PanagiotisKanavos 所提到的),ConnectionString 初始化看起来像:
var conn = new SqlConnection("Data Source=.;
Initial Catalog=MYDB; User ID=MyUser;Password=\"my'password\";
providerName="System.Data.SqlClient")
我终于找到了正确答案。看起来,您必须用单引号将值括起来,并另外复制内部撇号以转义它,如下所示:
Password='test''password'
在这个问题上浪费这么多时间真是太愚蠢了。我希望它能在将来节省一些人的时间。
感谢大家的参与。
我在使用连接字符串中的 '
字符时遇到问题。 Entity Framework 抛出异常说:
Format of the initialization string does not conform to specification starting at index
我尝试了 here and here 建议的答案,但没有成功。
我也尝试用 SqlConnectionStringBuilder
class 构造它,结果得到了同样的异常。
谁能帮帮我?
提前致谢。
编辑:
连接字符串确实在 web.config 文件中,它看起来像这样:
<add name="TestEntities" connectionString="metadata=res://*/DAL.TestModel.csdl|res://*/DAL.TestModel.ssdl|res://*/DAL.TestModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\testsource;initial catalog=testdb;User Id=testuser;Password=test'password;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
问题出在 Password=test'password
位上。
- 我不能把它放在双引号里,因为它已经被双引号括起来了。
- 我不能把它放在
"
-s 之间,因为它也已经被它们包围了。 - 而且我不能将它放在单引号中,因为单引号本身就是我要转义的内容。
Password='test'password'
无效。
假设它是包含单引号的密码,您应该尝试将密码括在 xml 编码的双引号中,像这样:
<connectionStrings>
<add name="MyConnectionString" connectionString="Data Source=.;
Initial Catalog=MYDB; User ID=MyUser;Password="my'password";
providerName="System.Data.SqlClient";/>
</connectionStrings>
假设您不在 Xml 上下文中(如 @PanagiotisKanavos 所提到的),ConnectionString 初始化看起来像:
var conn = new SqlConnection("Data Source=.;
Initial Catalog=MYDB; User ID=MyUser;Password=\"my'password\";
providerName="System.Data.SqlClient")
我终于找到了正确答案。看起来,您必须用单引号将值括起来,并另外复制内部撇号以转义它,如下所示:
Password='test''password'
在这个问题上浪费这么多时间真是太愚蠢了。我希望它能在将来节省一些人的时间。
感谢大家的参与。