Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to include ampersand in connection string?

I'm using Entity Framework 4 for a simple app and would like to bake my connection credentials into the following connection string:

<connectionStrings>     <add name="MyEntities"              connectionString="metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost\DEV;Initial Catalog=MyDB;UserId=myUser;Password=jack&jill;MultipleActiveResultSets=True&quot;"           providerName="System.Data.EntityClient" /> </connectionStrings> 

However, the password (which I cannot change) contains an ampersand. ASP.NET throws: Configuration Error: An error occurred while parsing EntityName. Line XX, position YYY.

If I replace the ampersand in the password with &amp;, I get a SqlException: Login failed for user 'myUser'. Usually this trick works, but I'm guessing that something is failing because this is technically a connection string inside a connection string.

What should I do here? Most of my classes include code like:

using (var context = new MyEntities()) {    // do work } 

Update: It turns out that the credentials I am using are a domain account, so what I really need is Integrated Security=True in the connection string rather than a password.

Encoding the ampersand as indicated in the accepted answer should work fine, though I haven't tested it.

like image 217
user403830 Avatar asked Sep 29 '10 17:09

user403830


People also ask

Which of the following is included in connection string?

The connection string is an expression that contains the parameters required for the applications to connect a database server. In terms of SQL Server, connection strings include the server instance, database name, authentication details, and some other settings to communicate with the database server.


1 Answers

You'll need to use escape sequences like you would for any XML document, which is all the .config files are.

  • Ampersand = & = &amp;
  • Greater Than = > = &gt;
  • Less Than = < = &lt;
  • Apostrophe = ' = &apos;
  • Quote = " = &quot;

You can also use the CDATA tag so that you can use these illegal characters

<![CDATA[ and ends with ]]>

<connectionStrings>     <add name="MyEntities" connectionString="         metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;         provider=System.Data.SqlClient;         provider connection string=&quot;         Data Source=localhost\DEV;         Initial Catalog=MyDB;UserId=myUser;         Password=<![CDATA[jack&jill]]>;         MultipleActiveResultSets=True&quot;"          providerName="System.Data.EntityClient" /> </connectionStrings> 
like image 126
hunter Avatar answered Sep 20 '22 13:09

hunter