■23660 |
Re[1]: DataGridViewで表示、変更したデータをDBに反映 |
□投稿者/ 魔界の仮面弁士 -(2008/08/20(Wed) 09:29:40)
| 2008/08/20(Wed) 09:31:01 編集(投稿者)
■No23655 (追いつけない泥グラマ さん) に返信 > いろいろ調べてみると、TableAdapter.Updateをすると更新ができるとあったのですが
そこに書かれていた方法は、「TableAdapter」だったのかも知れませんが、 追いつけない泥グラマさんは「DataAdapter」を使っておられますよ(両者は別物です)。
まぁ、TableAdapter は DataAdapter の集合体のような物なので、どちらでも良いですけど。
ちなみに、TableAdapter による更新例としてはこちら。 http://www.microsoft.com/japan/msdn/thisweek/10lines/vs2005/adonet_dataupdate/cs.aspx
> TableAdapter.Updateに渡すDatasetをDataGridViewからどうやって取り出すのかがわからずじまいです。
DataGridView.DataSource に渡した DataSet/DataTable を、更新時に取り返す(キャストする)事もできなくは無いのですが、 ここは、DataGridView.DataSource に渡した後も、アダプタをそのまま保持し続けるという手法にしてみては如何でしょうか。
DataSet dtSet = new DataSet(); OleDbConnection OleConn; OleDbDataAdapter OleDA; private void Form1_Load(object sender, EventArgs e) { // 接続文字列の指定には、OleDbConnectionStringBuilder を使うと便利かも。 OleConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;");
// 後で更新する必要があるので、SELECT 文には主キー項目を含めておくこと。 OleDA = new OleDbDataAdapter("SELECT * FROM table1", OleConn);
// 更新用の INSERT/DELETE/UPDATE 文を自動生成するための処理 OleDbCommandBuilder builder = new OleDbCommandBuilder(OleDA);
// データ取り出し OleDA.Fill(dtSet);
// データ表示 dataGridView1.DataSource = dtSet.Tables[0]; }
// 更新ボタン private void button1_Click(object sender, EventArgs e) { // DataGridView で変更された結果を反映 OleDA.Update(dtSet); } |
|