2009-07-21 5 views
1

Angesichts einer DbConnection von einem Datenprovider, ist es möglich, das Zeichen oder die Zeichen zum Angeben eines String-Literals sowie Sonderzeichen innerhalb der Zeichenfolge zu bestimmen? Ich interessiere mich auch für die Zeichen, die für das Anführen der schema/table/column Name Bezeichner notwendig sind.Ermitteln Zeichenkette Literal Escape-Zeichen in Ado.net

Die Verwendung von Parametern, um diese Dinge zu spezifizieren, ist keine Option, da die Absicht meiner Anwendung ist, Benutzern beim Erstellen einer SQL-Abfrage zu helfen und Konstanten in der Abfrage zu haben ist ein häufiges Szenario.

kann ich die Datasource Schema Sammlung verwenden so etwas wie StringLiteralPattern und QuotedIdentifierPattern zu bekommen (siehe http://msdn.microsoft.com/en-us/library/ms254501.aspx), aber das nur mich selbst hilft ihnen bestehenden Strings entsprechen und nicht erstellen.

+0

ich nur zu erraten, wenn Standardverfahren ist zu fragen begonnen haben. "Für Bezeichner und 'für String-Literale mit Sonderzeichen innerhalb der Zeichenfolge scheint der häufigste (und möglicherweise einzige) Fall zu sein, den ich gesehen habe. Ich mache mir nur Sorgen über einen unbekannten Treiber, der anders ist." – Trevor

Antwort

0

Ich benutze eine switch-Anweisung je nach Providertyp und -version (wie von DbConnection bestimmt), um zu wissen, welche Trennzeichen/Escape-Zeichen zu verwenden.

1

Nach dem Herstellen der Verbindung (genannt cnn), habe ich die folgenden für die Quotierung Schema/Tabelle/Spaltennamen Bezeichner:

'Get table and column delimiters 
Dim sTest As String = "" 
Dim sLeftDelimiter As String = "" 
Dim sRightDelimiter As String = "" 
Dim cmd As DbCommand = cnn.CreateCommand() 
Dim adapter As DbDataAdapter = factoryDB.CreateDataAdapter() 
Dim builder As DbCommandBuilder = factoryDB.CreateCommandBuilder() 
cmd.Connection = cnn 
adapter.SelectCommand = cmd 
builder.DataAdapter = adapter 
sTest = builder.QuoteIdentifier("test") 
sLeftDelimiter = sTest.Substring(0, 1) 
sRightDelimiter = sTest.Substring(5, 1) 
Verwandte Themen