2

100〜200レコードのテーブルがあります。それらのレコードをデータセットにフェッチしました。

今、私はforeachを使用してすべてのレコードをループしています

dataset.Tables[0].AsEnumerable()

ループ内の各レコードの列を更新したいと思います。これどうやってするの。同じデータセットを使用します。

4

5 に答える 5

3

DataSetに入力してUpdateメソッドを呼び出すために使用された元のDataAdapter(adapter以下のコード)を使用する必要があります。CommandBuilderも必要です。使用しているDBによって異なります。これは、SQLサーバーの例です。

SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(dataset);
dataset.AcceptChanges();

これが良い例です:

http://support.microsoft.com/kb/307587

于 2012-07-19T14:36:01.540 に答える
3

データ アダプターを使用してデータ セットを入力し、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 コマンドが必要になることに注意してください。

これは私の頭の上から非常に大まかにコード化されているため、構文がわずかにずれている可能性があります。しかし、うまくいけば役に立ちます。

于 2012-07-19T16:26:24.303 に答える
0

手順は次のようになります。-新しいDataColumn[^]を作成します-データテーブルのColumns[^]コレクションに追加します-たとえばNewRow[^]を使用してDataRow[^]を作成します-行の値を次のように変更しますItem[^]インデクサーを使用する必要があります-行をRows[^]コレクションに追加します-変更が成功した後AcceptChanges[^]

于 2012-07-19T14:09:55.513 に答える
-1

このような:

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;
于 2012-07-19T13:24:30.603 に答える
-1

以下のように列を追加します。

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();

于 2012-07-19T14:13:47.180 に答える