OdbcCommand.CommandText Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft eine SQL-Anweisung oder eine gespeicherte Prozedur zur Ausführung für die Datenquelle ab oder legt sie fest.
public:
virtual property System::String ^ CommandText { System::String ^ get(); void set(System::String ^ value); };
public:
property System::String ^ CommandText { System::String ^ get(); void set(System::String ^ value); };
public override string CommandText { get; set; }
public string CommandText { get; set; }
member this.CommandText : string with get, set
Public Overrides Property CommandText As String
Public Property CommandText As String
Eigenschaftswert
Die SQL-Anweisung oder gespeicherte Prozedur, die ausgeführt werden soll. Der Standardwert ist eine leere Zeichenfolge ("").
Implementiert
Hinweise
Wenn die CommandType -Eigenschaft auf StoredProcedure
festgelegt ist, sollte die CommandText -Eigenschaft mithilfe von Escapesequenzen der standardmäßigen gespeicherten ODBC-Prozedur festgelegt werden. Das Festlegen von CommandText auf den Namen der gespeicherten Prozedur funktioniert nicht wie bei anderen .NET Framework Datenanbietern.
Viele Sprachfeatures, z. B. äußere Joins und skalare Funktionsaufrufe, werden in der Regel von Datenquellen implementiert. Auch die Syntax für diese Features ist in der Regel datenquellenspezifisch. Aus diesem Grund definiert ODBC Escapesequenzen, die Standardsyntax für die folgenden Sprachfeatures enthalten:
Datums-, Uhrzeit-, Zeitstempel- und Datumstimeintervallliterale
Skalare Funktionen wie numerische, Zeichenfolgen und Datentypkonvertierungsfunktionen
ESCAPEZEICHEN DES LIKE-Prädikats
Äußere Joins
Prozeduraufrufe
Die von ODBC verwendete Escapesequenz lautet wie folgt:
{extension}
Diese Escapesequenz wird von ODBC-Treibern erkannt und analysiert. Anschließend ersetzen sie alle Escapesequenzen durch eine datenquellenspezifische Grammatik.
Eine Prozedur ist ein ausführbares Objekt, das an der Datenquelle gespeichert wird. In der Regel handelt es sich dabei um eine oder mehrere vorkompilierte SQL-Anweisungen. Die Escapesequenz zum Aufrufen einer Prozedur ist
{[?=]call procedure-name[([parameter][,[parameter]]...)]}
where procedure-name
gibt den Namen einer Prozedur an und parameter
gibt einen Prozedurparameter an.
Der Befehl führt diese gespeicherte Prozedur aus, wenn Sie eine der Execute-Methoden aufrufen (z. B. ExecuteReader oder ExecuteNonQuery).
Sie können die ConnectionCommandType Eigenschaften und CommandText nicht festlegen, wenn die aktuelle Verbindung einen Ausführungs- oder Abrufvorgang ausführt.
Der ODBC.NET Anbieter unterstützt keine benannten Parameter zum Übergeben von Parametern an eine SQL-Anweisung oder eine gespeicherte Prozedur, die von einem OdbcCommand aufgerufen wird, wenn CommandType auf Text
festgelegt ist. In diesem Fall muss der Fragezeichenplatzhalter (?) verwendet werden. Beispiel:
SELECT * FROM Customers WHERE CustomerID = ?
Daher muss die Reihenfolge, in der OdbcParameterOdbcParameterCollection Objekte hinzugefügt werden, direkt der Position des Fragezeichenplatzhalters für den Parameter entsprechen.
Wenn ein Parameter einen NULL-Wert enthält, bindet der .NET Framework-Datenanbieter für ODBC diesen Parameter weiterhin, verwendet jedoch einen Standardparameter, wenn er mit SQL_DEFAULT_PARAM anstelle des NULL-Werts definiert wurde. Beispiel OdbcParameterCollection:
{1, null, 2}
an die CommandText -Eigenschaft übergeben:
{call sp(?, ?, ?)}
bewirkt, dass der .NET Framework-Datenanbieter für ODBC den ersten Parameter an den Wert 1, den dritten Parameter an den Wert 2 und den zweiten Parameter als SQL_DEFAULT_PARAM bindet. Dieses Verhalten ist jedoch treiberabhängig. Wenn der Treiber diese Funktionalität nicht unterstützt, übergeben Sie einfach keinen Wert für den Parameter. Verwenden Sie z. B. die OdbcParameterCollection:
{1, 2}
und legen Sie die CommandText Eigenschaft wie folgt fest:
{call sp(?, null, ?)}
Hinweis
Wenn ein Parameter ausgelassen wird, muss das Komma, das ihn von anderen Parametern trennt, weiterhin angezeigt werden. Wenn ein Eingabe- oder ein Eingabe-/Ausgabeparameter ausgelassen wird, verwendet die Prozedur den Standardwert des Parameters. Eine andere Möglichkeit zum Angeben des Standardwerts eines Eingabe- oder Eingabe-/Ausgabeparameters besteht darin, den Wert des an den Parameter gebundenen Längen-/Indikatorpuffers auf SQL_DEFAULT_PARAM festzulegen.