|
分類:[.NET 全般]
DataSetの内容をMDBに更新するには?
環境C# Vs2005 SP2 Access2003(MDB)
SELECTで取得したMDBの内容をDataSetに展開し DataSet上で変更した物を再度、MDBに更新しようとしているのですが なぜか、MDB側に変更されません。
DataSetの中身は変更されているので、DB更新がうまく動いていないと 思うのですが何がいけないのでしょうか?
◆書いたコード
DataSet ds = new DataSet(); string UserID = "Admin"; string sqlConn = "Provider=\"Microsoft.Jet.OLEDB.4.0\";"; sqlConn += sqlConn + "Data Source=\"" + DbFileName + "\";" + "User ID=" + UserID + ";" + "Jet OLEDB:Database Password=" + passWd;
using (OleDbConnection oleDbCon = new OleDbConnection(sqlConn)) { OleDbDataAdapter adapter = null; OleDbCommandBuilder cmd = null; DataRow dr = null; try { using (adapter = new OleDbDataAdapter(sql, sqlConn)) { //抽出 adapter.FillSchema(ds, SchemaType.Source, TableName); adapter.Fill(ds, TableName);
//フラグを全てFalseで初期化する for (int i = 0; i < ds.Tables[TableName].Rows.Count; i++) { //dr = ds.Tables[TableName].Rows[i]; //dr.BeginEdit(); //dr["sel"] = false; //dr.EndEdit(); //dr.AcceptChanges();
ds.Tables[TableName].Rows[i]["sel"] = false; }
//変更を確定 ds.AcceptChanges();
//DB更新用 cmd = new OleDbCommandBuilder(adapter);
//DBを更新 ★ここがうまく動いていない? //adapter.Fill(ds); //adapter.Update(ds, TableName); adapter.Update(ds, ds.Tables[TableName].TableName); blResult = true;
Form1 frm1 = new Form1(ds);★ここで確認すると期待通り変更されているので frm1.ShowDialog(); Datasetは変更されている? } } catch (OleDbException Oex) { } finally { if (ds != null) { ds.Dispose(); ds = null; } if(cmd!=null) { cmd.Dispose(); } if (adapter != null) { adapter.Dispose(); } if (oleDbCon != null) { oleDbCon.Close(); oleDbCon.Dispose(); } } }
|