2016-04-01 11 views
0

einen SQL Server-Namen von SQLSERVER \ SQLSERVER Gegeben enthalten tut SqlConnectionStringBuilder ein Escape-Zeichen vor dem umgekehrten Schrägstrich in dem Servernamen erfordert.Does SqlConnectionStringBuilder erfordert ein Escape-Zeichen, wenn Servernamen ein Backslash

var sqlConnStrBuilder = new SqlConnectionStringBuilder 
{ 
    DataSource = "SQLSERVER\\SQLSERVER" 
}; 
+0

die zweiten darstellen, aber nicht, weil SqlConnectionStringBuilder erfordert. Es wird benötigt, da in C# ein einzelner Backslash das nächste Zeichen entkoppelt. So Ihr erstes Beispiel wird „SQLSERVER QLSERVER“. Nicht zur Arbeit gehen (wie ist eine nicht erkannte Escape-Sequenz) – Steve

+0

Sie konnten gebacken etwas in SqlConnectionStringBuilder Klasse müssen einzelne Escape-Zeichen in Strings zu verarbeiten ... das ist, warum ich frage. –

+0

Ich sehe Sie Punkt, aber diese Zeichenfolge (das erste Beispiel) ist ein Syntaxfehler für den C# -Compiler, keine Möglichkeit, den Klassenkonstruktor zu erreichen – Steve

Antwort

0

Sie können nicht das erste Beispiel daran, dass Code führt zu einem Syntaxfehler auf den C# -Compiler verwenden. In der C# -Sprache müssen Sie zwei umgekehrte Schrägstriche haben, um einen einzelnen zu repräsentieren. Wenn Sie nicht über zwei Schrägstriche verwenden, die C# Parser versucht, ‚Escape‘ das folgende Zeichen (S), aber es gibt keine Escape-Sequenz für \ S und somit erhalten Sie den Fehler.

CS1009 Unrecognized escape sequence 

Wenn nur als ein Beispiel, wird Ihr Server „testdb“ (klein geschrieben) dann

var sqlConnStrBuilder = new SqlConnectionStringBuilder 
{ 
    DataSource = "SQLSERVER\testdb" 
}; 

wird die Kompilierung passieren, aber nicht die Öffnung der Verbindung, da \ t eine anerkannte schreibt genannt Escape-Sequenz und wird als TAB-Zeichen (09) behandelt.

Sie könnten dies in Aktion mit einem einfachen Code sehen, wie diese

void Main() 
{ 
    File.WriteAllText(@"d:\temp\testescapechar.txt", "SQLSERVER\testdb"); 
} 

und dann am hexdecimal Inhalt der Datei suchen finden Sie:

0: 53 51 4C 53 45 52 56 45 52 09 65 73 74 64 62 
    S Q L S E R V E R ^^ e s t d b 

ich, dass Sie vergessen zu erwähnen könnte die verbatim-String-Syntax verwenden, die Sie

var sqlConnStrBuilder = new SqlConnectionStringBuilder 
{ 
    DataSource = @"SQLSERVER\SQLSERVER" 
}; 

Hier schreiben können t er Zeichen @ heben die Escape-Sequenz Muster und behandeln die Zeichen an ihrem wörtlichen Wert somit die einzige Backslash ermöglichen selbst

Verwandte Themen