Scott on Writing

Musings on technical writing...

Esoteric Connection String Parsing Problem When Ending the Password with an Apostrophe

If you look at ConnectionStrings.com, the guideance for creating a connection to Microsoft SQL Server through a .NET application using SQL Server Authentication (standard security) is to use a connection string of the form:

Data Source=server;Initial Catalog=database;User Id=userID;Password=password;

I found a little gotcha today. If the password ends in an apostrophe attempting to assign the connection string to the SqlConnection object's ConnectionString property throws an ArgumentException. The password may include an apostrophe within the password and things will run smoothly, but if it ENDs with a password, all hell breaks loose.

Run the following code to repro:

Dim myConnectionString As String = “Data Source=server;Initial Catalog=database;User Id=userID;Password=somePassword'

'Create the connection object
Dim myConnection As New SqlConnection

myConnection.ConnectionString = myConnectionString

The last line will throw the exception; it doesn't even try to connect to the database, so you can make up values for the connection string properties, just be sure to have the password end with an apostrophe. After some tinkering and testing, the following appears to be a workaround:

  • Surround the password value in the connection string with apostrophes
  • Escape any apostrophes in the password with two successive apostrophes

Changing the connection string to the following will operate as expected:

Data Source=server;Initial Catalog=database;User Id=userID;Password='somePassword'''

The problem, if you're interested stems from code in the System.Data.Common.DBConnectionString class's ParseInternal() method. When attempting to break down the connection string into its various tokens, the parser doesn't know if the ' at the end of the password is part of the password itself or delimits some quoted text. The inner conflict caused by this ambiguity is resolved by the method by throwing an exception. (I've had jobs before where I wish I could throw an ArgumentException at someone!)

posted on Monday, May 08, 2006 1:11 PM

Feedback

# re: Esoteric Connection String Parsing Problem When Ending the Password with an Apostrophe 5/18/2006 10:15 AM Vishal

Hi Scott
I read your article about database projects in VS 2003 and I was hooked on to them ever since but have you seen latest VS 2005 database project they are completly different I have no clue where the old stuff has gone.

I guess now the new database projects are geared towards only SQL CLR stuff . I am not sure if I am now going to use them any where in future.

Do you plan to blog about it or publish any article ?
Thanks
Vishal

# re: Esoteric Connection String Parsing Problem When Ending the Password with an Apostrophe 5/18/2006 5:04 PM Scott Mitchell

Vishal, thanks for the suggestion, I've added it to my "TODO article queue."

Unfortunately, all of my "real-world" work to date has been still in the 1.x world. But DB projects in VS 2005 is definitely something I'm interested in exploring and sharing my explorations with! :-)

# re: Esoteric Connection String Parsing Problem When Ending the Password with an Apostrophe 5/18/2006 5:37 PM Samarjeet Singh

Hi Scott,
I am making movielibrary in which a user can enter, edit and delete a movie in his personalized library. I had little trouble in entering the movie with apostrophe as the connection throwed me exception. I used your idea of replacing single apostrohe with a double quotes and it is working fine. But I have trouble in retreiving those records which I have stored as double qoutes. I have to write lot of code in parsing the string and check for the double quote and display it back to user as single apostrophe.
Do you know a efficient way to overcome this problem?
Kindly advice.

Title:  
Name:  
Url:
Protected by Clearscreen.SharpHIPEnter the code you see:
Comments   

Add To Your Reader

My Links

Archives

Post Categories

 

I am a Microsoft MVP for ASP.NET.
I am an ASPInsider.
<May 2008>
SMTWTFS
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

Comment Stats

DayTotal% of Total
Sunday 1866.8%
Monday 37913.9%
Tuesday 45316.7%
Wednesday 50418.5%
Thursday 53519.7%
Friday 49418.2%
Saturday 1666.1%
Total 2717100.0%

Hour1Total% of Total
12:00 AM 652.4%
1:00 AM 682.5%
2:00 AM 622.3%
3:00 AM 742.7%
4:00 AM 572.1%
5:00 AM 1033.8%
6:00 AM 1084.0%
7:00 AM 1585.8%
8:00 AM 1716.3%
9:00 AM 1475.4%
10:00 AM 1716.3%
11:00 AM 1816.7%
12:00 PM 1886.9%
1:00 PM 1696.2%
2:00 PM 1605.9%
3:00 PM 1324.9%
4:00 PM 1073.9%
5:00 PM 923.4%
6:00 PM 913.3%
7:00 PM 963.5%
8:00 PM 833.1%
9:00 PM 782.9%
10:00 PM 792.9%
11:00 PM 772.8%
Total 2717100.0%

Comments by Blog Entry Date/Time

Day Entry MadeAvg.Total
Sunday 5.54144
Monday 5.22339
Tuesday 4.28419
Wednesday 7.67637
Thursday 6.90607
Friday 5.48411
Saturday 5.33160
Total 5.842717

Hour1 Entry MadeAvg.Total
12:00 AM 5.0035
1:00 AM 1.002
5:00 AM 0.000
7:00 AM 7.0035
8:00 AM 5.35107
9:00 AM 6.32278
10:00 AM 6.47246
11:00 AM 4.41181
12:00 PM 6.88330
1:00 PM 3.00111
2:00 PM 5.41222
3:00 PM 8.64285
4:00 PM 4.0589
5:00 PM 5.92154
6:00 PM 4.52113
7:00 PM 9.67174
8:00 PM 9.80147
9:00 PM 5.05111
10:00 PM 5.4265
11:00 PM 4.5732
Total 5.842717

Learn More About Comment Stats
1 - All times GMT -8...


Blog Stats

Favorite Web Sites

My Books

My MSDN Articles