次の方法で共有


OdbcCommand.CommandText プロパティ

メモ : この名前空間、クラス、およびメンバは、.NET Framework Version 1.1 だけでサポートされています。

データ ソースに対して実行する SQL ステートメントまたはストアド プロシージャを取得または設定します。

Public Overridable Property CommandText As String  Implements _   IDbCommand.CommandText
[C#]
public virtual string CommandText {get; set;}
[C++]
public: __property virtual String* get_CommandText();public: __property virtual void set_CommandText(String*);
[JScript]
public function get CommandText() : String;public function set CommandText(String);

プロパティ値

実行する SQL ステートメントまたはストアド プロシージャ。既定値は空の文字列 ("") です。

実装

IDbCommand.CommandText

解説

CommandType プロパティを StoredProcedure に設定した場合、 CommandText プロパティは、標準の ODBC ストアド プロシージャのエスケープ シーケンスを使用して設定する必要があります。 CommandText にストアド プロシージャの名前を設定しても、他の .NET Framework データ プロバイダのようには機能しません。

多くの言語機能 (外部結合やスカラ関数の呼び出しなど) は、通常、データ ソースによって実装されます。このような機能の構文の多くも、データ ソース固有です。そのため、ODBC では、次の言語機能の標準構文を含むエスケープ シーケンスを定義しています。

  • 日付、時刻、タイムスタンプ、および日時間隔のリテラル
  • 数値、文字列などのスカラ関数、日付タイプ変換関数
  • LIKE 述語エスケープ文字
  • 外部結合
  • プロシージャ呼び出し

ODBC で使用されるエスケープ シーケンスを次に示します。

{extension}

このエスケープ シーケンスは、ODBC ドライバによって認識および解析され、データ ソース固有の文法に置き換えられます。

プロシージャは、データ ソースに格納される実行可能オブジェクトです。これは通常、プリコンパイルされた 1 つ以上の SQL ステートメントです。プロシージャ呼び出しのためのエスケープ シーケンスを次に示します。

{[?=]call procedure-name[([parameter][,[parameter]]...)]}

procedure-name にはプロシージャ名を、 parameter にはプロシージャのパラメータを指定します。

いずれかの Execute メソッド (ExecuteReader または ExecuteNonQuery など) を呼び出すと、このストアド プロシージャがコマンドによって実行されます。

現在の接続で実行またはフェッチ操作が実行中の場合は、 ConnectionCommandType 、および CommandText プロパティは設定できません。

CommandTypeText に設定した場合、ODBC .NET Framework データ プロバイダでは、 OdbcCommand が呼び出す SQL ステートメントまたはストアド プロシージャにパラメータを渡すための名前付きパラメータを利用できません。この場合は、疑問符 (?) プレースホルダを使用する必要があります。次に例を示します。

SELECT * FROM Customers WHERE CustomerID = ?

このため、パラメータの疑問符プレースホルダの位置と、 OdbcParameter オブジェクトを OdbcParameterCollection に追加する順序とを、正しく対応させる必要があります。

パラメータに null 値が含まれている場合でも、.NET Framework Data Provider for ODBC はそのパラメータをバインドしますが、そのパラメータが SQL_DEFAULT_PARAM を使用して定義されている場合、null 値ではなく既定のパラメータを使用します。たとえば、次の OdbcParameterCollection

{1, null, 2}

CommandText プロパティに渡されたとします。

{ call sp(?, ?, ?) }

この場合、上記の呼び出しを実行すると、.NET Framework Data Provider for ODBC は最初のパラメータを値 1 に、3 番目のパラメータを値 2 にバインドし、2 番目のパラメータを SQL_DEFAULT_PARAM としてバインドします。ただし、この動作は、ドライバによって異なります。ドライバがこの機能をサポートしていない場合、このパラメータには値を渡さないようにします。たとえば、次の OdbcParameterCollection を使用し、

{1, 2}

CommandText プロパティを次のように設定します。

{ call sp(?, null, ?) }

メモ   パラメータを省略した場合でも、パラメータ間を区切っているコンマはそのまま残しておきます。入力パラメータまたは入出力パラメータを省略した場合、プロシージャは、パラメータの既定値を使用します。入力パラメータまたは入出力パラメータの既定値を指定する別の方法として、そのパラメータに対応した長さ/インジケータ バッファ (length/indicator buffer) の値を SQL_DEFAULT_PARAM に設定することもできます。

使用例

[Visual Basic, C#, C++] OdbcCommand を作成し、そのプロパティの一部を設定する例を次に示します。

 
Public Sub CreateMyOdbcCommand()
    Dim myCommand As New OdbcCommand()
    myCommand.CommandText = "SELECT * FROM Categories ORDER BY CategoryID"
    myCommand.CommandTimeout = 20
End Sub

[C#] 
public void CreateMyOdbcCommand() 
{
   OdbcCommand myCommand = new OdbcCommand();
   myCommand.CommandText = "SELECT * FROM Categories ORDER BY CategoryID";
   myCommand.CommandTimeout = 20;
}

[C++] 
public:
    void CreateMyOdbcCommand()
    {
        OdbcCommand* myCommand = new OdbcCommand();
        myCommand->CommandText = S"SELECT * FROM Categories ORDER BY CategoryID";
        myCommand->CommandTimeout = 20;
    };

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

OdbcCommand クラス | OdbcCommand メンバ | System.Data.Odbc 名前空間 | Connection | CommandTimeout | CommandType