连接字符串中的撇号(单引号)

时间:2016-04-06 14:51:51

标签: c# entity-framework connection-string

我在连接字符串中遇到'字符时遇到问题。实体框架抛出一个异常说:

  

初始化字符串的格式不符合从索引

开始的规范

我尝试了herehere建议的答案无效。

我也尝试使用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=&quot;data source=.\testsource;initial catalog=testdb;User Id=testuser;Password=test'password;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

问题在于Password=test'password位。

  1. 我无法用双引号括起来,因为它已经被它们包围了。
  2. 我不能把它放在&quot; - s之间,因为它已经被它们包围了。
  3. 而我无法用单引号括起来,因为单引号本身就是我试图逃脱的。
  4. Password='test&apos;password'无法正常工作。

2 个答案:

答案 0 :(得分:5)

我终于偶然发现了一个正确答案。看来,你必须用单引号括住值,并另外复制内部撇号以逃避它,如下所示:

Password='test''password'

浪费这么多时间,这是一个非常愚蠢的问题。我希望将来节省一些时间。

感谢大家的参与。

答案 1 :(得分:1)

假设它是包含单引号的密码,您应该尝试用xml编码的双引号括起密码,如下所示:

<connectionStrings>
  <add name="MyConnectionString" connectionString="Data Source=.;
    Initial Catalog=MYDB; User ID=MyUser;Password=&quot;my'password&quot;;
    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")