我在连接字符串中遇到'
字符时遇到问题。实体框架抛出一个异常说:
初始化字符串的格式不符合从索引
开始的规范
我也尝试使用SqlConnectionStringBuilder
类构建它,并得到相同的异常结果。
任何人都可以帮助我吗?
提前致谢。
修改
connectionstring确实在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'
无法正常工作。
答案 0 :(得分:5)
我终于偶然发现了一个正确答案。看来,你必须用单引号括住值,并另外复制内部撇号以逃避它,如下所示:
Password='test''password'
浪费这么多时间,这是一个非常愚蠢的问题。我希望将来节省一些时间。
感谢大家的参与。
答案 1 :(得分:1)
假设它是包含单引号的密码,您应该尝试用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")