[+/-]
ExecuteReader
の使用Prepare
の使用SQL 文を構成し、MySQL データベースに対して実行します。このクラスを継承することはできません。
MySqlCommand
は MySQL
データベースでコマンドを実行する次の手段を備えています
:
アイテム | 概要 |
ExecuteReader | 行を返すコマンドを実行。 |
ExecuteNonQuery | SQL INSERT 、DELETE 、および UPDATE ステートメントなどのコマンドを実行。 |
ExecuteScalar | データベースから単一値 ( 例えば集約値 ) を取り出す。 |
CommandText
プロパティをリセットし、MySqlCommand
オブジェクトを再使用することができます。しかし、新しい、または以前のコマンドを実行する前に、MySqlDataReader
を閉じる必要があります。
MySqlException
が MySqlCommand
を実行するメソッドで生成される場合、MySqlConnection
は開いたままになります。この接続を閉じるのはプログラマの采配になります。
プロバイダの以前のバージョンでは、SQL のパラメータをマークするのに '@' シンボルが使用されました。これは MySQL ユーザ変数に適合しないため、現在のプロバイダでは '?' シンボルを使用して SQL のパラメータを指定しています。以前のコードをサポートするには、'old syntax=yes' を接続ストリングで設定することができます。そうする場合、SQL で使用する予定のパラメータの定義に失敗しても、例外は投入されませんのでご注意ください。
例
以下は、MySqlCommand
と MySqlConnection
を作成する例です。MySqlConnection
が開かれ、MySqlCommand
の
Connection
として設定されます。この例はその後
ExecuteNonQuery
を呼び出し、接続を閉じます。これを完遂するため、ExecuteNonQuery
は SQL INSERT 文である接続ストリングとクエリ
ストリングに渡されます。
Visual Basic 例 :
Public Sub InsertRow(myConnectionString As String) " If the connection string is null, use a default. If myConnectionString = "" Then myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass" End If Dim myConnection As New MySqlConnection(myConnectionString) Dim myInsertQuery As String = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)" Dim myCommand As New MySqlCommand(myInsertQuery) myCommand.Connection = myConnection myConnection.Open() myCommand.ExecuteNonQuery() myCommand.Connection.Close() End Sub
C# 例 :
public void InsertRow(string myConnectionString) { // If the connection string is null, use a default. if(myConnectionString == "") { myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"; } MySqlConnection myConnection = new MySqlConnection(myConnectionString); string myInsertQuery = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)"; MySqlCommand myCommand = new MySqlCommand(myInsertQuery); myCommand.Connection = myConnection; myConnection.Open(); myCommand.ExecuteNonQuery(); myCommand.Connection.Close(); }
MySqlCommand のオーバーロード メソッド
MySqlCommand クラスの新規インスタンスを初期化します。
例
以下の例は MySqlCommand を作成し、そのプロパティの一部を設定します。
この例は、MySqlCommand
のオーバーロードされたコンストラクタのバージョンの使用法のひとつを挙げています。利用可能な他の例に関しては、各オーバーロードのトピックをご覧ください。
Visual Basic 例 :
Public Sub CreateMySqlCommand() Dim myConnection As New MySqlConnection _ ("Persist Security Info=False;database=test;server=myServer") myConnection.Open() Dim myTrans As MySqlTransaction = myConnection.BeginTransaction() Dim mySelectQuery As String = "SELECT * FROM MyTable" Dim myCommand As New MySqlCommand(mySelectQuery, myConnection, myTrans) myCommand.CommandTimeout = 20 End Sub
C# 例 :
public void CreateMySqlCommand() { MySqlConnection myConnection = new MySqlConnection("Persist Security Info=False; database=test;server=myServer"); myConnection.Open(); MySqlTransaction myTrans = myConnection.BeginTransaction(); string mySelectQuery = "SELECT * FROM myTable"; MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection,myTrans); myCommand.CommandTimeout = 20; }
C++ 例 :
public: void CreateMySqlCommand() { MySqlConnection* myConnection = new MySqlConnection(S"Persist Security Info=False; database=test;server=myServer"); myConnection->Open(); MySqlTransaction* myTrans = myConnection->BeginTransaction(); String* mySelectQuery = S"SELECT * FROM myTable"; MySqlCommand* myCommand = new MySqlCommand(mySelectQuery, myConnection, myTrans); myCommand->CommandTimeout = 20; };
MySqlCommand クラスの新規インスタンスを初期化します。
ベース
コンストラクタは、すべてのフィールドをそのデフォルト値に初期化します。愚痴のテーブルは、MySqlCommand
のインスタンスの初期プロパティ値です。
プロパティ | 初期値 |
CommandText |
empty string ("") |
CommandTimeout |
0 |
CommandType |
CommandType.Text |
Connection |
Null |
これらのプロパティの値は、プロパティへの別の呼び出しを通して変更することができます。
例
以下の例は MySqlCommand
を作成し、そのプロパティの一部を設定します。
Visual Basic 例 :
Public Sub CreateMySqlCommand() Dim myCommand As New MySqlCommand() myCommand.CommandType = CommandType.Text End Sub
C# 例 :
public void CreateMySqlCommand() { MySqlCommand myCommand = new MySqlCommand(); myCommand.CommandType = CommandType.Text; }
クエリのテキストで MySqlCommand
クラスの新規インスタンスを初期化します。
パラメータ : クエリのテキスト。
MySqlCommand
のインスタンスが作成される際、次の赤/白のプロパティが初期値に設定されます。
プロパティ | 初期値 |
CommandText |
cmdText |
CommandTimeout |
0 |
CommandType |
CommandType.Text |
Connection |
Null |
これらのプロパティの値は、プロパティへの別の呼び出しを通して変更することができます。
例
以下の例は MySqlCommand
を作成し、そのプロパティの一部を設定します。
Visual Basic 例 :
Public Sub CreateMySqlCommand() Dim sql as String = "SELECT * FROM mytable" Dim myCommand As New MySqlCommand(sql) myCommand.CommandType = CommandType.Text End Sub
C# 例 :
public void CreateMySqlCommand() { string sql = "SELECT * FROM mytable"; MySqlCommand myCommand = new MySqlCommand(sql); myCommand.CommandType = CommandType.Text; }
クエリのテキストと MySqlConnection
で MySqlCommand
クラスの新規インスタンスを初期化します。
パラメータ : クエリのテキスト。
パラメータ :SQL
サーバのインターフェイスへの接続を表す
MySqlConnection
。
MySqlCommand
のインスタンスが作成される際、次の赤/白のプロパティが初期値に設定されます。
プロパティ | 初期値 |
CommandText |
cmdText |
CommandTimeout |
0 |
CommandType |
CommandType.Text |
Connection |
connection |
これらのプロパティの値は、プロパティへの別の呼び出しを通して変更することができます。
例
以下の例は MySqlCommand
を作成し、そのプロパティの一部を設定します。
Visual Basic 例 :
Public Sub CreateMySqlCommand() Dim conn as new MySqlConnection("server=myServer") Dim sql as String = "SELECT * FROM mytable" Dim myCommand As New MySqlCommand(sql, conn) myCommand.CommandType = CommandType.Text End Sub
C# 例 :
public void CreateMySqlCommand() { MySqlConnection conn = new MySqlConnection("server=myserver") string sql = "SELECT * FROM mytable"; MySqlCommand myCommand = new MySqlCommand(sql, conn); myCommand.CommandType = CommandType.Text; }
クエリのテキスト、MySqlConnection
、および MySqlTransaction
で
MySqlCommand
クラスの新規インスタンスを初期化します。
パラメータ : クエリのテキスト。
パラメータ :SQL
サーバのインターフェイスへの接続を表す
MySqlConnection
。
パラメータ
:MySqlCommand
が実行する
MySqlTransaction
。
MySqlCommand
のインスタンスが作成される際、次の赤/白のプロパティが初期値に設定されます。
プロパティ | 初期値 |
CommandText |
cmdText |
CommandTimeout |
0 |
CommandType |
CommandType.Text |
Connection |
connection |
これらのプロパティの値は、プロパティへの別の呼び出しを通して変更することができます。
例
以下の例は MySqlCommand
を作成し、そのプロパティの一部を設定します。
Visual Basic 例 :
Public Sub CreateMySqlCommand() Dim conn as new MySqlConnection("server=myServer") conn.Open(); Dim txn as MySqlTransaction = conn.BeginTransaction() Dim sql as String = "SELECT * FROM mytable" Dim myCommand As New MySqlCommand(sql, conn, txn) myCommand.CommandType = CommandType.Text End Sub
C# 例 :
public void CreateMySqlCommand() { MySqlConnection conn = new MySqlConnection("server=myserver") conn.Open(); MySqlTransaction txn = conn.BeginTransaction(); string sql = "SELECT * FROM mytable"; MySqlCommand myCommand = new MySqlCommand(sql, conn, txn); myCommand.CommandType = CommandType.Text; }
接続に対して SQL 文を実行し、影響される行の数を返すします。
戻り値 : 影響を受ける行の数
ExecuteNonQuery を使用して、すべてのタイプのデータベース操作を行うことができますが、返された結果セットは利用することができません。ストアド プロシージャの呼び出しに使用された出力パラメータはデータを移植され、実行が完了した後で引き出すことができます。UPDATE 、INSERT 、および DELETE 文では、戻り値はそのコマンドに影響された行の数になります。その他のタイプのステートメントではすべて、戻り値は -1 です。
例
以下の例は MySqlCommand を作成し、ExecuteNonQuery を使用してそれを実行します。この例は SQL 文 ( UPDATE 、INSERT 、または DELETE など ) であるストリングや、データソースへの接続に使用するストリングに渡されます。
Visual Basic 例 :
Public Sub CreateMySqlCommand(myExecuteQuery As String, myConnection As MySqlConnection) Dim myCommand As New MySqlCommand(myExecuteQuery, myConnection) myCommand.Connection.Open() myCommand.ExecuteNonQuery() myConnection.Close() End Sub
C# 例 :
public void CreateMySqlCommand(string myExecuteQuery, MySqlConnection myConnection) { MySqlCommand myCommand = new MySqlCommand(myExecuteQuery, myConnection); myCommand.Connection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); }
CommandText
を
MySqlConnection
Connection
に送り、CommandBehavior
値のひとつを使用して
MySqlDataReader
を構築します。
パラメータ
:CommandBehavior
値のひとつ。
CommandType
プロパティが
StoredProcedure
に設定される際、CommandText
プロパティをストアド
プロシージャ名に設定してください。ExecuteReader
を呼び出す時に、コマンドがこのストアド
プロシージャを実行します。
MySqlDataReader
は、大きなバイナリ値の効率的な読み取りを可能にする特殊なモードをサポートしています。詳細は、CommandBehavior
の SequentialAccess
設定を参照してください。
MySqlDataReader
が使用されている間、関連のある
MySqlConnection
は
MySqlDataReader
へ忙しく供給します。その状態では、MySqlConnection
で閉じる以外の他の操作を行うことはできません。MySqlDataReader
の MySqlDataReader.Close
メソッドが呼び出されるまでは、その状態が続きます。MySqlDataReader
が CloseConnection
に設定される
CommandBehavior
で作成される場合、MySqlDataReader
を閉じると、接続が自動的に切断されます。
ExecuteReader
を
SingleRow
挙動で呼び出す時、SQL
で limit
句を使用すると、すべての行 (
提示された限界まで )
がクライアントに引き出されることになります。MySqlDataReader.Read
メソッドは、最初の行の後でもまだ false
を戻しますが、データの全行をクライアントに入れると作業に影響が出ます。limit
句が必要でない場合は、避けたほうがよいでしょう。
戻り値 :
MySqlDataReader
オブジェクト。
CommandText
を
MySqlConnection
Connection
に送り、MySqlDataReader
を構築します。
戻り値 :
MySqlDataReader
オブジェクト。
CommandType
プロパティが
StoredProcedure
に設定される際、CommandText
プロパティをストアド
プロシージャ名に設定してください。ExecuteReader
を呼び出す時に、コマンドがこのストアド
プロシージャを実行します。
MySqlDataReader
が使用されている間、関連のある
MySqlConnection
は
MySqlDataReader
へ忙しく供給します。その状態では、MySqlConnection
で閉じる以外の他の操作を行うことはできません。MySqlDataReader
の MySqlDataReader.Close
メソッドが呼び出されるまでは、その状態が続きます。
例
次の例は MySqlCommand
を作成し、SQL SELECT
文であるストリングと、データソースへの接続に使用するストリングを渡すことによってそれを実行します。
Visual Basic 例 :
Public Sub CreateMySqlDataReader(mySelectQuery As String, myConnection As MySqlConnection) Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) myConnection.Open() Dim myReader As MySqlDataReader myReader = myCommand.ExecuteReader() Try While myReader.Read() Console.WriteLine(myReader.GetString(0)) End While Finally myReader.Close myConnection.Close End Try End Sub
C# 例 :
public void CreateMySqlDataReader(string mySelectQuery, MySqlConnection myConnection) { MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection); myConnection.Open(); MySqlDataReader myReader; myReader = myCommand.ExecuteReader(); try { while(myReader.Read()) { Console.WriteLine(myReader.GetString(0)); } } finally { myReader.Close(); myConnection.Close(); } }
MySQL Server のインスタンスで、コマンドの準備されたバージョンを作成します。
プリペアド ステートメントは、MySQL バージョン 4.1 以降でのみサポートされています。それ以前のバージョンの MySQL に接続している間にプリペアド ステートメントを呼び出すことは可能ですが、そのステートメントは準備されていないステートメントと同様に実行されます。
例
次の例では、Prepare
メソッドの使用法を示します。
Visual Basic 例 :
public sub PrepareExample() Dim cmd as New MySqlCommand("INSERT INTO mytable VALUES (?val)", myConnection) cmd.Parameters.Add( "?val", 10 ) cmd.Prepare() cmd.ExecuteNonQuery() cmd.Parameters(0).Value = 20 cmd.ExecuteNonQuery() end sub
C# 例 :
private void PrepareExample() { MySqlCommand cmd = new MySqlCommand("INSERT INTO mytable VALUES (?val)", myConnection); cmd.Parameters.Add( "?val", 10 ); cmd.Prepare(); cmd.ExecuteNonQuery(); cmd.Parameters[0].Value = 20; cmd.ExecuteNonQuery(); }
クエリを実行し、クエリが戻した結果セットの第一行の最初のカラムを返します。余分なカラムや行は無視されます。
戻り値 : 結果セットの第一行の最初のカラム、または結果セットが空な場合はヌルのリファレンス
ExecuteScalar
メソッドを使用して、データベースから単一値
( 例えば集約値 ) を取り出します。これでは
ExecuteReader
メソッドよりも少ないコードを使用し、MySqlDataReader
が戻したデータを使って、単一値の生成に必要な操作を行います。
典型的な ExecuteScalar
クエリは、次の C#
例のようにフォーマットすることができます :
C# 例 :
cmd.CommandText = "select count(*) from region"; Int32 count = (int32) cmd.ExecuteScalar();
例
以下の例は MySqlCommand
を作成し、ExecuteScalar
を使用してそれを実行します。この例は、集約結果を返す
SQL
文、そしてデータソースへの接続に使用するストリングに渡されます。
Visual Basic 例 :
Public Sub CreateMySqlCommand(myScalarQuery As String, myConnection As MySqlConnection) Dim myCommand As New MySqlCommand(myScalarQuery, myConnection) myCommand.Connection.Open() myCommand.ExecuteScalar() myConnection.Close() End Sub
C# 例 :
public void CreateMySqlCommand(string myScalarQuery, MySqlConnection myConnection) { MySqlCommand myCommand = new MySqlCommand(myScalarQuery, myConnection); myCommand.Connection.Open(); myCommand.ExecuteScalar(); myConnection.Close(); }
C++ 例 :
public: void CreateMySqlCommand(String* myScalarQuery, MySqlConnection* myConnection) { MySqlCommand* myCommand = new MySqlCommand(myScalarQuery, myConnection); myCommand->Connection->Open(); myCommand->ExecuteScalar(); myConnection->Close(); }
SQL 文を入手または設定し、データソースで実行します。
値 :実行する SQL 文またはストアド プロシージャ。デフォルトは空のストリング。
CommandType
プロパティが
StoredProcedure
に設定される際、CommandText
プロパティをストアド
プロシージャ名に設定してください。ストアド
プロシージャ名に特殊な文字が含まれていると、ユーザはエスケープ文字構文を使用しなければならない場合があります。Execute
メソッドのひとつを呼び出す時に、コマンドがこのストアド
プロシージャを実行します。
例
以下の例は MySqlCommand
を作成し、そのプロパティの一部を設定します。
Visual Basic 例 :
Public Sub CreateMySqlCommand() Dim myCommand As New MySqlCommand() myCommand.CommandText = "SELECT * FROM Mytable ORDER BY id" myCommand.CommandType = CommandType.Text End Sub
C# 例 :
public void CreateMySqlCommand() { MySqlCommand myCommand = new MySqlCommand(); myCommand.CommandText = "SELECT * FROM mytable ORDER BY id"; myCommand.CommandType = CommandType.Text; }
コマンドの実行を停止し、エラーを生成するまでの待ち時間を取得または設定します。
値 :コマンド実行までの待ち時間 ( 秒単位 ) 。デフォルトは 0 秒。
MySQL は現在、保留または実行中の作業をキャンセルする方法をサポートしていません。MySQL サーバに対して発行するすべてのコマンドは、完了するか例外が発生するまで実行します。
CommandText
プロパティの解説方法を示す値を取得または設定します。
値
:System.Data.CommandType
値のひとつ。デフォルト設定では、Text
。
CommandType
プロパティを
StoredProcedure
に設定する際、CommandText
プロパティをストアド
プロシージャ名に設定してください。Execute
メソッドのひとつを呼び出す時に、コマンドがこのストアド
プロシージャを実行します。
例
以下の例は MySqlCommand
を作成し、そのプロパティの一部を設定します。
Visual Basic 例 :
Public Sub CreateMySqlCommand() Dim myCommand As New MySqlCommand() myCommand.CommandType = CommandType.Text End Sub
C# 例 :
public void CreateMySqlCommand() { MySqlCommand myCommand = new MySqlCommand(); myCommand.CommandType = CommandType.Text; }
MySqlCommand
のこの具体例に使用される
MySqlConnection
を取得または設定します。
値
:データソースへの接続。デフォルト値はヌル
リファレンス ( Visual Basic の
Nothing
) 。
トランザクションが進行中に
Connection
を設定し、かつ
Transaction
プロパティがヌルでない場合、InvalidOperationException
が生成されます。Transaction
プロパティがヌルでなく、トランザクションがすでにコミットまたはロールバックされている場合は、Transaction
はヌルに設定されます。
例
以下の例は MySqlCommand
を作成し、そのプロパティの一部を設定します。
Visual Basic 例 :
Public Sub CreateMySqlCommand() Dim mySelectQuery As String = "SELECT * FROM mytable ORDER BY id" Dim myConnectString As String = "Persist Security Info=False;database=test;server=myServer" Dim myCommand As New MySqlCommand(mySelectQuery) myCommand.Connection = New MySqlConnection(myConnectString) myCommand.CommandType = CommandType.Text End Sub
C# 例 :
public void CreateMySqlCommand() { string mySelectQuery = "SELECT * FROM mytable ORDER BY id"; string myConnectString = "Persist Security Info=False;database=test;server=myServer"; MySqlCommand myCommand = new MySqlCommand(mySelectQuery); myCommand.Connection = new MySqlConnection(myConnectString); myCommand.CommandType = CommandType.Text; }
MySqlParameterCollection
を取得します。
値 :SQL 文もしくはストアド プロシージャのパラメータ。デフォルトは空のコレクション。
Connector/Net は名前なしのパラメータをサポートしていません。コレクションに加えられるパラメータにはすべて関連する名前が必要です。
例
次の例は MySqlCommand
を作成し、そのパラメータを表示します。これを完遂するため、メソッドに
MySqlConnection
、SQL
SELECT
文であるクエリ
ストリング、そして MySqlParameter
オブジェクトの配列が渡されます。
Visual Basic 例 :
Public Sub CreateMySqlCommand(myConnection As MySqlConnection, _ mySelectQuery As String, myParamArray() As MySqlParameter) Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=?age" myCommand.UpdatedRowSource = UpdateRowSource.Both myCommand.Parameters.Add(myParamArray) Dim j As Integer For j = 0 To myCommand.Parameters.Count - 1 myCommand.Parameters.Add(myParamArray(j)) Next j Dim myMessage As String = "" Dim i As Integer For i = 0 To myCommand.Parameters.Count - 1 myMessage += myCommand.Parameters(i).ToString() & ControlChars.Cr Next i Console.WriteLine(myMessage) End Sub
C# 例 :
public void CreateMySqlCommand(MySqlConnection myConnection, string mySelectQuery, MySqlParameter[] myParamArray) { MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection); myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=?age"; myCommand.Parameters.Add(myParamArray); for (int j=0; j<myParamArray.Length; j++) { myCommand.Parameters.Add(myParamArray[j]) ; } string myMessage = ""; for (int i = 0; i < myCommand.Parameters.Count; i++) { myMessage += myCommand.Parameters[i].ToString() + "\n"; } MessageBox.Show(myMessage); }
MySqlCommand
が実行する中で
MySqlTransaction
を取得または設定します。
値
:MySqlTransaction
。デフォルト値はヌル リファレンス ( Visual
Basic の Nothing
) 。
すでに特定の値が設定されている場合、コマンドの実行が進行中の場合は、Transaction
プロパティを設定することはできません。トランザクションのプロパティを
MySqlCommand
オブジェクトと同じ
MySqlConnection
に接続されていない
MySqlTransaction
に設定すると、次にステートメントの実行を試みる際に例外が投入されるでしょう。
System.Data.Common.DbDataAdapter
の
System.Data.Common.DbDataAdapter.Update
メソッドで使用される時に、コマンドの結果がどのように
DataRow
に適用されるかを取得または設定します。
値
:UpdateRowSource
値のひとつ。
デフォルトの
System.Data.UpdateRowSource
値は、コマンドが (
MySqlCommandBuilder
のケースのように) 自動的に生成されない限り
Both
になります。コマンドが自動的に生成される場合のデフォルト値は
None
になります。