Apostrophe (single quote) in connection string

妖精的绣舞 提交于 2019-12-07 07:46:00

问题


I'm having a trouble with the ' character in a connection string. Entity Framework throws an exception saying:

Format of the initialization string does not conform to specification starting at index

I tried the answers suggested here and here to no avail.

I also tried constructing it with SqlConnectionStringBuilder class and got the same exception as a result.

Can anyone help me out?

Thanks in advance.

EDIT:

The connectionstring is indeed in the web.config file and it looks like this:

<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" />

the problem is with the Password=test'password bit.

  1. I can't put it in double quotes because it's already surrounded by them.
  2. I can't put it between &quot;-s because it's already surrounded by them too.
  3. And I can't put it in single quotes because the single quote itself is what I'm trying to escape.

Password='test&apos;password' doesn't work.


回答1:


I have finally stumbled upon a correct answer. It appears, you have to surround the value with single quotes and additionally duplicate the inner apostrophe in order to escape it, like this:

Password='test''password'

This is such a dumb problem to waste this much time on. I hope it saves somebody time in the future.

Thanks to everyone for participating.




回答2:


Assuming it is the password which contains a single quote, you should try enclosing the password in xml encoded double-quotes, something like this :

<connectionStrings>
  <add name="MyConnectionString" connectionString="Data Source=.;
    Initial Catalog=MYDB; User ID=MyUser;Password=&quot;my'password&quot;;
    providerName="System.Data.SqlClient";/>
</connectionStrings>

Assuming you are not in Xml context (as mentionned by @PanagiotisKanavos ) the ConnectionString initialization would look like :

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


来源:https://stackoverflow.com/questions/36454733/apostrophe-single-quote-in-connection-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!