【问题标题】:Apostrophe (single quote) in connection string连接字符串中的撇号(单引号)
【发布时间】:2016-07-27 01:39:06
【问题描述】:

连接字符串中的' 字符有问题。实体框架抛出异常说:

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

我尝试了herehere 建议的答案,但无济于事。

我也尝试使用SqlConnectionStringBuilder 类构建它,结果得到了同样的异常。

谁能帮帮我?

提前致谢。

编辑:

连接字符串确实在 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. 我不能把它放在&amp;quot;-s 之间,因为它也已经被它们包围了。
  3. 我不能把它放在单引号中,因为单引号本身就是我想要逃避的东西。

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

【问题讨论】:

  • 这不是一个重复的问题,另一个问题中建议的答案是不够的。

标签: c# entity-framework connection-string


【解决方案1】:

我终于偶然发现了一个正确的答案。看来,您必须用单引号将值括起来,并另外复制内部撇号以将其转义,如下所示:

Password='test''password'

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

感谢大家的参与。

【讨论】:

  • 让我头疼。
  • 您的解决方案帮助了我。万分感谢。对于未来的读者:如果您只在阅读部分检查,还值得检查密码是否也正确保存。
  • 非常感谢 .. 由于这个问题,我在 SSIS 中疯了。需要在开头和结尾添加一个单引号,还要在密码之间为每个引号添加一个引号
【解决方案2】:

假设它是包含单引号的密码,您应该尝试将密码括在 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")

【讨论】:

  • 问题不在于 XML 字符串中的引用。为了包含特殊字符,属性值本身必须用单引号或双引号括起来
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-30
  • 2011-02-08
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多