Freigeben über


OdbcCommand.CommandText Eigenschaft

Definition

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 StoredProcedurefestgelegt 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 Textfestgelegt 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.

Gilt für:

Weitere Informationen