100〜200レコードのテーブルがあります。それらのレコードをデータセットにフェッチしました。
今、私はforeachを使用してすべてのレコードをループしています
dataset.Tables[0].AsEnumerable()
ループ内の各レコードの列を更新したいと思います。これどうやってするの。同じデータセットを使用します。
DataSetに入力してUpdateメソッドを呼び出すために使用された元のDataAdapter(adapter
以下のコード)を使用する必要があります。CommandBuilderも必要です。使用しているDBによって異なります。これは、SQLサーバーの例です。
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(dataset);
dataset.AcceptChanges();
これが良い例です:
データ アダプターを使用してデータ セットを入力し、Select コマンドを使用すると仮定していますか?
データ テーブルのデータを編集し、変更をデータベースに保存するには、データ アダプタの更新コマンドが必要です。このようなもの :-
SQLConnection connector = new SQLConnection(@"Your connection string");
SQLAdaptor Adaptor = new SQLAdaptor();
Updatecmd = new sqlDbCommand("UPDATE YOURTABLE SET FIELD1= @FIELD1, FIELD2= @FIELD2 WHERE ID = @ID", connector);
また、フィールドのパラメータを追加する必要があります:-
Updatecmd.Parameters.Add("@FIELD1", SQLDbType.VarCHar, 8, "FIELD1");
Updatecmd.Parameters.Add("@FIELD2", SQLDbType.VarCHar, 8, "FIELD2");
var param = Updatecmd.Parameters.Add("@ID", SqlDbType.Interger, 6, "ID");
param.SourceVersion = DataRowVersion.Original;
正しい SQL ステートメントで更新コマンドを作成し、パラメーターを追加したら、これをデータ アダプターの挿入コマンドとして割り当てる必要があります。
Adaptor.UpdateCommand = Updatecmd;
自分でこれを行う方法をよく読んで、いくつかの例を見てください。これは大まかなガイドです。
次のステップは、データテーブルを列挙することです.LINQは必要ありません.これを行うことができます:-
foreach(DataRow row in Dataset.Tables[0].Rows)
{
row["YourColumn"] = YOURVALUE;
}
これが完了したら、Yout Data Adapter の Update() メソッドを次のように呼び出す必要があります。
DataAdapter.Update(dataset.Tables[0]);
ここで何が起こるかというと、Data Adapter は Update コマンドを呼び出し、変更をデータベースに保存します。
データベースに新しい行を追加する場合は、データ アダプタに INSERT コマンドが必要になることに注意してください。
これは私の頭の上から非常に大まかにコード化されているため、構文がわずかにずれている可能性があります。しかし、うまくいけば役に立ちます。
手順は次のようになります。-新しいDataColumn[^]を作成します-データテーブルのColumns[^]コレクションに追加します-たとえばNewRow[^]を使用してDataRow[^]を作成します-行の値を次のように変更しますItem[^]インデクサーを使用する必要があります-行をRows[^]コレクションに追加します-変更が成功した後AcceptChanges[^]
このような:
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("ProductName");
table.Rows.Add(1, "Chai");
table.Rows.Add(2, "Queso Cabrales");
table.Rows.Add(3, "Tofu");
EnumerableRowCollection<DataRow> Rows = table.AsEnumerable();
foreach (DataRow Row in Rows)
Row["ID"] = (int)Row["ID"] * 2;
以下のように列を追加します。
dataset.Tables[0].Columns.Add(new DataColumn ("columnname"));
以下のように列の値を更新します。
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
dataset.Tables[0].Rows[i]["columnname"] = "new value here";
}
データベースを更新する
dataset.AcceptChanges();