次の方法で共有


OleDbCommand クラス

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

この型のすべてのメンバの一覧については、OleDbCommand メンバ を参照してください。

System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.Data.OleDb.OleDbCommand

NotInheritable Public Class OleDbCommand
   Inherits Component
   Implements ICloneable, IDbCommand
[C#]
public sealed class OleDbCommand : Component, ICloneable,
   IDbCommand
[C++]
public __gc __sealed class OleDbCommand : public Component,
   ICloneable, IDbCommand
[JScript]
public class OleDbCommand extends Component implements ICloneable,
   IDbCommand

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

OleDbCommand のインスタンスを作成すると、読み書き可能なプロパティが初期値に設定されます。これらの初期値の一覧については、 OleDbCommand コンストラクタのトピックを参照してください。

OleDbCommand には、データ ソースに対してコマンドを実行するための、次のメソッドがあります。

項目 説明
ExecuteReader 行を返すコマンドを実行します。SQL SET ステートメントなどのコマンドの実行に ExecuteReader 使用すると、期待した効果が得られないことがあります。
ExecuteNonQuery SQL の INSERT、DELETE、UPDATE、SET ステートメントなどのコマンドを実行します。
ExecuteScalar データベースから単一の値 (集計値など) を取得します。

CommandText プロパティをリセットして OleDbCommand オブジェクトを再利用できます。ただし、新しいコマンドまたは以前のコマンドを実行する前に、 OleDbDataReader を閉じる必要があります。

OleDbCommand を実行するメソッドで、致命的な OleDbException (SQL Server の重大度レベルが 20 以上など) が発生した場合は、 OleDbConnection 接続が閉じられることがあります。ただし、ユーザーが接続を再び開いて、処理を継続できます。

Microsoft OLE DB Provider for Oracle (MSDAORA) と OLE DB .NET データ プロバイダを使用して Oracle データベースに対するクエリを実行する場合、LIKE 句を使用して固定長フィールドの値を問い合わせると、期待される一致したデータがすべて返されないことがあります。たとえば、Oracle データベースのテーブルに char(3) として定義されている Field1 という名前のフィールドが存在し、そのテーブルの行の 1 つに "a" という値を入力した場合、次のコードでは該当する行が返されません。

 
Dim sql As String = "SELECT * FROM Table1 WHERE Field1 LIKE ?"
Dim cmd As OleDbCommand = New OleDbCommand(sql, oracleConn)
cmd.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a"
Dim dr As OleDbDataReader = cmd.ExecuteReader()
[C#] 
string sql = "SELECT * FROM Table1 WHERE Field1 LIKE ?";
OleDbCommand cmd = new OleDbCommand(sql, oracleConn);
cmd.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a";
OleDbDataReader dr = cmd.ExecuteReader();

使用例

[Visual Basic, C#, C++] OleDbCommandOleDbDataAdapter および OleDbConnection と共に使用して、Access データベースから行を選択する例を次に示します。この例では、続いて、データを格納した DataSet を返します。この例のコードには、初期化済みの DataSet 、接続文字列、クエリ文字列 (SQL SELECT ステートメント)、およびソース データベース テーブル名の文字列が渡されます。

 
Public Sub ReadMyData(myConnString As String)
    Dim mySelectQuery As String = "SELECT OrderID, CustomerID FROM Orders"
    Dim myConnection As New OleDbConnection(myConnString)
    Dim myCommand As New OleDbCommand(mySelectQuery, myConnection)
    myConnection.Open()
    Dim myReader As OleDbDataReader = myCommand.ExecuteReader()
    Try
        While myReader.Read()
            Console.WriteLine(myReader.GetInt32(0).ToString() + ", " _
               + myReader.GetString(1))
        End While
    Finally
        ' always call Close when done reading.
        myReader.Close()
        ' always call Close when done reading.
        myConnection.Close()
    End Try
End Sub

[C#] 
public void ReadMyData(string myConnString) 
{
   string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders";
   OleDbConnection myConnection = new OleDbConnection(myConnString);
   OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection);
   myConnection.Open();
   OleDbDataReader myReader = myCommand.ExecuteReader();
   try 
   {
     while (myReader.Read()) 
    {
       Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1));
    }
   }
      finally 
   {
    // always call Close when done reading.
    myReader.Close();
    // always call Close when done reading.
    myConnection.Close();
 }
}

[C++] 
public:
void ReadMyData(String* myConnString) 
{
   String* mySelectQuery = S"SELECT OrderID, CustomerID FROM Orders";
   OleDbConnection* myConnection = new OleDbConnection(myConnString);
   OleDbCommand* myCommand = new OleDbCommand(mySelectQuery,myConnection);
   myConnection->Open();
   OleDbDataReader* myReader = myCommand->ExecuteReader();
   try 
   {
     while (myReader->Read()) 
    {
       Console::WriteLine(S"{0}, {1}", __box(myReader->GetInt32(0)), myReader->GetString(1));
    }
   }
   __finally 
   {
    // always call Close when done reading.
    myReader->Close();
    // always call Close when done reading.
    myConnection->Close();
 }
}

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

必要条件

名前空間: System.Data.OleDb

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

アセンブリ: System.Data (System.Data.dll 内)

参照

OleDbCommand メンバ | System.Data.OleDb 名前空間 | OleDbDataAdapter | OleDbConnection