C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 68 を表示中)
■39606 / )  変更したDataSetの内容をMDBに更新するには?
□投稿者/ まぐねしうむ (72回)-(2009/08/11(Tue) 14:55:02)

分類:[.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();
}
}
}

返信 編集キー/


管理者用

- Child Tree -