Share via


SqlCommandBuilder クラス

定義

SQL Server データベースに関連付けられた DataSet への変更を調整するための単一テーブル コマンドを自動的に生成します。 このクラスは継承できません。

public ref class SqlCommandBuilder sealed : System::Data::Common::DbCommandBuilder
public sealed class SqlCommandBuilder : System.Data.Common.DbCommandBuilder
type SqlCommandBuilder = class
    inherit DbCommandBuilder
Public NotInheritable Class SqlCommandBuilder
Inherits DbCommandBuilder
継承
SqlCommandBuilder

次の例では、 と と SqlDataAdapterSqlConnectionSqlCommand使用して、データ ソースから行を選択します。 この例では、接続文字列、Transact-SQL SELECT ステートメントであるクエリ文字列、およびデータベース テーブルの名前である文字列が渡されます。 次に、 を作成します SqlCommandBuilder

using System;
using System.Data;
using Microsoft.Data.SqlClient;

namespace SqlCommandBuilderCS
{
    class Program
    {
        static void Main()
        {
            string cnnst = "";
            string queryst = "";
            string tablen = "";
            DataSet ds = SelectSqlRows(cnnst, queryst, tablen);

        }

        public static DataSet SelectSqlRows(string connectionString,
            string queryString, string tableName)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlDataAdapter adapter = new SqlDataAdapter();
                adapter.SelectCommand = new SqlCommand(queryString, connection);
                SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

                connection.Open();

                DataSet dataSet = new DataSet();
                adapter.Fill(dataSet, tableName);

                //code to modify data in DataSet here

                builder.GetUpdateCommand();

                //Without the SqlCommandBuilder this line would fail
                adapter.Update(dataSet, tableName);

                return dataSet;
            }
        }

注釈

SqlDataAdapterでは、 に加えられたDataSet変更を SQL Server の関連付けられたインスタンスと調整するために必要な Transact-SQL ステートメントは自動的には生成されません。 ただし、 の プロパティをSqlCommandBuilder設定すると、単一テーブル更新用の Transact-SQL ステートメントを自動的に生成する オブジェクトをSelectCommandSqlDataAdapter作成できます。 次に、設定しない追加の Transact-SQL ステートメントは によって SqlCommandBuilder生成されます。

では SqlCommandBuilder 、 プロパティを設定するたびに、イベントの RowUpdating リスナーとして自身が登録されます DataAdapter 。 一度に関連付けることができるのは、1 つまたはSqlDataAdapterSqlCommandBuilder複数のオブジェクトのみです。

INSERT、UPDATE、または DELETE ステートメントを生成するには、 SqlCommandBuilder プロパティを SelectCommand 使用して、必要なメタデータセットを自動的に取得します。 メタデータの取得後 (最初の更新後など) を変更 SelectCommand する場合は、 メソッドを RefreshSchema 呼び出してメタデータを更新する必要があります。

SelectCommand は少なくとも 1 つの主キーまたは一意の列を返す必要があります。 存在しない場合は、 InvalidOperation 例外が生成され、コマンドは生成されません。

では SqlCommandBuilderConnectionによって参照される 、 CommandTimeout、および Transaction の各プロパティも使用されます SelectCommand。 ユーザーは、これらのプロパティの 1 つ以上が変更された場合、またはそれ自体が置き換えられた場合に をSelectCommand呼び出すRefreshSchema必要があります。 それ以外の場合、 InsertCommandUpdateCommand、および DeleteCommand の各プロパティは、以前の値を保持します。

を呼び出 Disposeすと、 SqlCommandBuilder は から SqlDataAdapter関連付け解除され、生成されたコマンドは使用されなくなります。

コンストラクター

SqlCommandBuilder()

SqlCommandBuilder クラスの新しいインスタンスを初期化します。

SqlCommandBuilder(SqlDataAdapter)

関連付ける SqlCommandBuilder オブジェクトを指定して、SqlDataAdapter クラスの新しいインスタンスを初期化します。

プロパティ

CatalogLocation

CatalogLocation クラスのインスタンスの SqlCommandBuilder を設定または取得します。

CatalogSeparator

SqlCommandBuilder クラスのインスタンスのカタログの区切り記号として使用する文字列を設定または取得します。

DataAdapter

Transact-SQL ステートメントを自動生成する対象の SqlDataAdapter オブジェクトを取得または設定します。

QuotePrefix

名前に空白や予約済みトークンなどの文字を含む SQL Server データベース オブジェクト (テーブル、列など) を指定するための開始文字を取得または設定します。

QuoteSuffix

名前に空白や予約済みトークンなどの文字を含む SQL Server データベース オブジェクト (テーブル、列など) を指定するための終了文字を取得または設定します。

SchemaSeparator

スキーマ識別子と他の識別子との間の区切り記号として使用される文字列を取得または設定します。

メソッド

DeriveParameters(SqlCommand)

SqlCommand で指定したストアド プロシージャからパラメーター情報を取得し、指定した Parameters オブジェクトの SqlCommand コレクションにパラメーターを格納します。

GetDeleteCommand()

データベースで削除処理を実行するための、自動生成された SqlCommand オブジェクトを取得します。

GetDeleteCommand(Boolean)

データベースで削除処理を実行するための、自動生成された SqlCommand オブジェクトを取得します。

GetInsertCommand()

データベースで挿入処理を実行するための、自動生成された SqlCommand オブジェクトを取得します。

GetInsertCommand(Boolean)

データベースで挿入処理を実行するための、自動生成された SqlCommand オブジェクトを取得します。

GetUpdateCommand()

データベースで更新処理を実行するための、自動生成された SqlCommand オブジェクトを取得します。

GetUpdateCommand(Boolean)

データベースで更新処理を実行するための、自動生成された SqlCommand オブジェクトを取得します。

QuoteIdentifier(String)

SQL Server データベースに関連付けられた DataSet への変更を調整するための単一テーブル コマンドを自動的に生成します。 このクラスは継承できません。

UnquoteIdentifier(String)

引用符で囲まれた ID を指定して、引用符で囲まれていない正しい形式の ID を返します。 ID に埋め込まれている引用符は、正しくエスケープ解除されます。

適用対象