http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommandbuilder.aspxから SQL Command Builder クラスを読み ましたが、select および update コマンドを使用してデータセット/データベースで行われた更新を表示できることがわかりました.
単一のデータセットを使用している場合、SQL Command Builder の概念は明確ですが、2 つの異なるデータセットを使用する場合はどうすればよいですか?
シナリオ: データベースから 1 つのデータセット ds1 に値を読み込んでいます。これは、SQL アダプターと SQL コマンド ビルダーに割り当てられます。現在、ds1 から選択した値のみを読み取り、2 番目のデータセット ds2 に格納しています。これは、SQL データ アダプターおよび SQL コマンド ビルダーには割り当てられません。
データベースが更新されるかどうかに関係なく、ds2 のデータを更新するかどうかが心配です。また、SQL Command builder と SQL Adapter を使用してどのようにすればよいですか。
//プライマリ データセット
ds = new ProductDataSet();
command = new SqlCommand(
"SELECT no, name, price, cost, dept FROM PRODUCTS", connection);
adapter = new SqlDataAdapter();
adapter.SelectCommand = command;
adapter.Fill(ds, "table");
プライマリ データセットは、フォーム ロード イベントの入力です。ユーザーは選択したアイテム番号を入力します。これは、プライマリ ds から検索され、2 番目の ds に保存/表示されます (2 番目の ds は現在、アダプターまたはコマンド ビルダーに接続されていません)。例えば; 2nd dsには3つのアイテムがあります。
ここで、ユーザーが 2 番目の ds の情報を更新すると、データベースが自動的に更新され、グリッドに表示されるはずです。
//2 番目の ds2 更新コード
for (int i = 0; i < ds2.Tables[0].Rows.Count; i++)
{
string item = ds2.Tables[0].Rows[i][0].ToString();
command = new SqlCommand("UPDATE PRODUCTS SET " + _colName + " = '" + _newValue + "'" + "WHERE ITEM_NO = '" + item + "'", Class1.conn);
datagrid.DataSource = ds2.Tables[0];
}
あなたの提案によると、上記のコードでアダプター/ビルダーを追加/宣言している場合、機能しません。テーブル マッピング エラーが発生しています。