DOBON.NET DOBON.NETプログラミング掲示板過去ログ

dataSet.xsdのデーターの更新の仕方について

環境/言語:[C# VS2008 .NET3.5 sqlite3]
分類:[.NET]

dataSet.xsdを使い行を削除した後にデーターベースを反映させたいと思っています。

以前までのDBの更新方法はDataTableとSQLiteCommandBuilderと
SQLiteDataAdapterを組み合わせ、AdapterのUpdate関数を使い更新していましたが

dataSet.xsdを使ったやりかたを試していますがうまくいきません。

いろいろ調べてみてdataTable.AcceptChanges();という例文を見かけましたがうまく反映されませんでした。

どなたかご存知でしたら教えてもらえませんか?よろしくお願いします。

DataTable dt = testDataSet.Tables["test"];
DataRow[] dr = dt.Select("delFlag = 'true'");

if(dr.Length > 0) {
foreach(DataRow r in dr) {
r.Delete();
}
dt.AcceptChanges();//反映されず
}

dataGridView1.DataSource = dt;


データーベースはsqlite 3.2です。
■No28200に返信(田中さんの記事)

Datasetを使った場合もAdapterが必要になります。
デザイナ上でDatatableではなくTableAdapterを追加すれば
接続とか作ってくれるので楽です。
Shuさん アドバイスありがとうございます。

>Datasetを使った場合もAdapterが必要になります。
>デザイナ上でDatatableではなくTableAdapterを追加すれば
>接続とか作ってくれるので楽です。

デザイナ上にDatatableだけでなくTableAdapterを追加した
ところUpdate関数を使うことができるようになりました。
DBにもデータが反映されたのでこれでいいと思うんですがどうでしょうか?

DataTable dt = testDataSet.Tables["test"];
DataRow[] dr = dt.Select("delFlag = 'true'");

if(dr.Length > 0) {
foreach(DataRow r in dr) {
r.Delete();
}
testTableAdapter.Update(dr);//反映された

}
■No28209に返信(田中さんの記事)


> デザイナ上にDatatableだけでなくTableAdapterを追加した
> ところUpdate関数を使うことができるようになりました。
> DBにもデータが反映されたのでこれでいいと思うんですがどうでしょうか?
>
> DataTable dt = testDataSet.Tables["test"];
> DataRow[] dr = dt.Select("delFlag = 'true'");
ここの『'true'』は『'』がなくても大丈夫だと思います。

>
> if(dr.Length > 0) {
> foreach(DataRow r in dr) {
> r.Delete();
> }
> testTableAdapter.Update(dr);//反映された
>
> }

記述はあっているのでDBに反映されていれば大丈夫だと思います。
> 記述はあっているのでDBに反映されていれば大丈夫だと思います。

どうもありがとうございました!

これからtableAdapterについて深く調べてみるつもりです。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板