2016-04-06 48 views
1

我在连接字符串中的'字符出现问题。实体框架抛出一个异常说:连接字符串中的撇号(单引号)

初始化字符串的格式不符合规范开始于索引

我想答案建议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. 我不能把它放在单引号中,因为单引号本身就是我试图逃避的东西。

Password='test&apos;password'不起作用。

+0

这不是一个重复的问题,在另一个建议的答案是不够的。 – TKharaishvili

回答

2

我终于偶然发现了一个正确的答案。它的出现,你必须围绕单引号的价值和附加重复内撇号,以逃避它,就像这样:

Password='test''password'

这是这样浪费这么多时间在一个愚蠢的问题。我希望将来可以节省一些时间。

感谢大家的参与。

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上下文(由作为mentionned @PanagiotisKanavos)ConnectionString初始化看起来像:

var conn = new SqlConnection("Data Source=.; 
    Initial Catalog=MYDB; User ID=MyUser;Password=\"my'password\"; 
    providerName="System.Data.SqlClient") 
+0

问题不在于XML字符串中的引用。为了包含特殊字符,属性值必须用单引号或双引号括起来 –