OleDbCommandBuilder クラス
データベースに関連付けられた DataSet への変更を調整するための単一テーブル コマンドを自動的に生成します。このクラスは継承できません。
この型のすべてのメンバの一覧については、OleDbCommandBuilder メンバ を参照してください。
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Data.OleDb.OleDbCommandBuilder
NotInheritable Public Class OleDbCommandBuilder
Inherits Component
[C#]
public sealed class OleDbCommandBuilder : Component
[C++]
public __gc __sealed class OleDbCommandBuilder : public Component
[JScript]
public class OleDbCommandBuilder extends Component
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
OleDbDataAdapter では、データ ソースに関連付けられた DataSet への変更を調整する SQL ステートメントが自動的には生成されません。ただし、 OleDbDataAdapter の SelectCommand プロパティを設定すると、単一テーブルを更新する SQL ステートメントを自動的に生成する OleDbCommandBuilder オブジェクトを作成できます。これによって、追加の SQL ステートメントが、 OleDbCommandBuilder によって自動的に生成されます。
DataAdapter プロパティを設定すると、 OleDbCommandBuilder が RowUpdating イベントのリスナとして自動的に登録されます。相互に関連付けることのできる OleDbDataAdapter オブジェクトと OleDbCommandBuilder オブジェクトは、それぞれ一度に 1 つずつだけです。
OleDbCommandBuilder では、INSERT、UPDATE、または DELETE ステートメントを生成するために、 SelectCommand プロパティを通じて必要なメタデータ セットが自動的に取得されます。最初の更新の後など、メタデータが取得された後で SelectCommand を変更した場合は、 RefreshSchema メソッドを呼び出してメタデータを更新する必要があります。
また、 OleDbCommandBuilder では、 SelectCommand が参照する Connection 、 CommandTimeout 、および Transaction プロパティも使用されます。これらのいずれかのプロパティを変更した場合、または SelectCommand 自体を置き換えた場合は、ユーザーが RefreshSchema を呼び出す必要があります。この操作を行わないと、 InsertCommand 、 UpdateCommand 、および DeleteCommand プロパティが、変更前の値のままになります。
Dispose を呼び出すと、 OleDbCommandBuilder と OleDbDataAdapter の関連付けが解除され、生成されたコマンドは使用されなくなります。
使用例
[Visual Basic, C#, C++] OleDbCommand を OleDbDataAdapter および OleDbConnection と共に使用して、データ ソースから行を選択する例を次に示します。この例では、初期化済みの DataSet 、接続文字列、クエリ文字列 (SQL SELECT ステートメント)、およびデータ ソース テーブル名の文字列が渡されます。この例では、続いて、 OleDbCommandBuilder を作成します。
Public Shared Function SelectOleDbSrvRows(myConnection As String, mySelectQuery As String, myTableName As String) As DataSet
Dim myConn As New OleDbConnection(myConnection)
Dim myDataAdapter As New OleDbDataAdapter()
myDataAdapter.SelectCommand = New OleDbCommand(mySelectQuery, myConn)
Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder(myDataAdapter)
myConn.Open()
Dim ds As DataSet = New DataSet
myDataAdapter.Fill(ds, myTableName)
' Code to modify data in DataSet here
' Without the OleDbCommandBuilder this line would fail.
myDataAdapter.Update(ds, myTableName)
myConn.Close()
End Function 'SelectOleDbSrvRows
[C#]
public static DataSet SelectOleDbSrvRows(string myConnection, string mySelectQuery, string myTableName)
{
OleDbConnection myConn = new OleDbConnection(myConnection);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(myDataAdapter);
myConn.Open();
DataSet ds = new DataSet();
myDataAdapter.Fill(ds, myTableName);
//code to modify data in DataSet here
//Without the OleDbCommandBuilder this line would fail
myDataAdapter.Update(ds, myTableName);
myConn.Close();
return ds;
}
[C++]
public:
static DataSet* SelectOleDbSrvRows(String* myConnection, String* mySelectQuery, String* myTableName)
{
OleDbConnection* myConn = new OleDbConnection(myConnection);
OleDbDataAdapter* myDataAdapter = new OleDbDataAdapter();
myDataAdapter->SelectCommand = new OleDbCommand(mySelectQuery, myConn);
OleDbCommandBuilder* cb = new OleDbCommandBuilder(myDataAdapter);
myConn->Open();
DataSet* ds = new DataSet();
myDataAdapter->Fill(ds, myTableName);
//code to modify data in DataSet here
//Without the OleDbCommandBuilder this line would fail
myDataAdapter->Update(ds, myTableName);
myConn->Close();
return ds;
};
[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 内)