{
string SqlStr="select BarCode,ModuleCode,InStoreTime,InManCode,OutStoreTime,OutManCode,UserName from "+PtableName;
SqlDataAdapter MyDataAdapter=new SqlDataAdapter (SqlStr,CommConnection);
SqlCommandBuilder Mycmdbuilder=new SqlCommandBuilder (MyDataAdapter);
DataSet MyDataSet=new DataSet ();
MyDataSet.Tables.Add (MyTable);
MyDataAdapter.Fill (MyDataSet,PtableName);
SqlTransaction MyTrans;
MyTrans=CommConnection.BeginTransaction ();
try
{
MyDataAdapter.Update (MyDataSet);
MyTrans.Commit ();
}
catch(Exception err)
{
MyTrans.Rollback ();
MessageBox.Show (err.Message.ToString ());
}
}
13 个解决方案
#1
表中有主键吗?
#2
MyDataAdapter.Update (MyDataSet);
要加上表名!
要加上表名!
#3
你是想把DataSet中的所有表都更新吧。
#4
MyDataAdapter.Update (MyDataSet, MyTable.TableName);
#5
加上表名是不会出错了,但是没有插入任何数据,怎样在update之前看看dataset中有没有数据压??
#6
不要指望SqlCommandBuilder会为你完成所有的事,还是自己写sqlupdatecommond吧。
#7
很有意思,帮你顶
#8
要update成功﹐記錄行的狀態(ROWSTATE)不能是UNCHANGED.
MyDataSet.Tables.Add (MyTable);此行代碼執行后﹐在原MYDATASET中MYTABLE表中的數據行的狀態是UNCHANGED。
可用DEBUG調試。
MyDataSet.Tables.Add (MyTable);此行代碼執行后﹐在原MYDATASET中MYTABLE表中的數據行的狀態是UNCHANGED。
可用DEBUG調試。
#9
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
#10
同意 ltginprise(ltg) , 你应该在新建的dataset里新建一个表,然后把传入那个表的记录插入到新表中
#11
........
MyDataSet.Tables.Add (MyTable);
只要設置你取得MyTable內容的DATAADAPTER :
da.AcceptChangesDuringFill = false就能合并成功。
MyDataSet.Tables.Add (MyTable);
只要設置你取得MyTable內容的DATAADAPTER :
da.AcceptChangesDuringFill = false就能合并成功。
#12
还是不行呀,郁闷中,哪位大哥做过类似的操作阿,能不能贴点代码参考一下,现在就卡在这里了,谢谢先。
#13
Maybe u mistake in Transaction, reference blow & try again:
DataTable tbl = new DataTable();
OleDbConnection cn = new OleDbConnection(strConn);
OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
cn.Open();
cb.GetUpdateCommand();
da.Fill(tbl);
OleDbTransaction txn = cn.BeginTransaction();
cb.GetUpdateCommand().Transaction = txn;
cb.GetInsertCommand().Transaction = txn;
cb.GetDeleteCommand().Transaction = txn;
da.Update(tbl);
txn.Commit();
cn.Close();
DataTable tbl = new DataTable();
OleDbConnection cn = new OleDbConnection(strConn);
OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
cn.Open();
cb.GetUpdateCommand();
da.Fill(tbl);
OleDbTransaction txn = cn.BeginTransaction();
cb.GetUpdateCommand().Transaction = txn;
cb.GetInsertCommand().Transaction = txn;
cb.GetDeleteCommand().Transaction = txn;
da.Update(tbl);
txn.Commit();
cn.Close();
#1
表中有主键吗?
#2
MyDataAdapter.Update (MyDataSet);
要加上表名!
要加上表名!
#3
你是想把DataSet中的所有表都更新吧。
#4
MyDataAdapter.Update (MyDataSet, MyTable.TableName);
#5
加上表名是不会出错了,但是没有插入任何数据,怎样在update之前看看dataset中有没有数据压??
#6
不要指望SqlCommandBuilder会为你完成所有的事,还是自己写sqlupdatecommond吧。
#7
很有意思,帮你顶
#8
要update成功﹐記錄行的狀態(ROWSTATE)不能是UNCHANGED.
MyDataSet.Tables.Add (MyTable);此行代碼執行后﹐在原MYDATASET中MYTABLE表中的數據行的狀態是UNCHANGED。
可用DEBUG調試。
MyDataSet.Tables.Add (MyTable);此行代碼執行后﹐在原MYDATASET中MYTABLE表中的數據行的狀態是UNCHANGED。
可用DEBUG調試。
#9
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
#10
同意 ltginprise(ltg) , 你应该在新建的dataset里新建一个表,然后把传入那个表的记录插入到新表中
#11
........
MyDataSet.Tables.Add (MyTable);
只要設置你取得MyTable內容的DATAADAPTER :
da.AcceptChangesDuringFill = false就能合并成功。
MyDataSet.Tables.Add (MyTable);
只要設置你取得MyTable內容的DATAADAPTER :
da.AcceptChangesDuringFill = false就能合并成功。
#12
还是不行呀,郁闷中,哪位大哥做过类似的操作阿,能不能贴点代码参考一下,现在就卡在这里了,谢谢先。
#13
Maybe u mistake in Transaction, reference blow & try again:
DataTable tbl = new DataTable();
OleDbConnection cn = new OleDbConnection(strConn);
OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
cn.Open();
cb.GetUpdateCommand();
da.Fill(tbl);
OleDbTransaction txn = cn.BeginTransaction();
cb.GetUpdateCommand().Transaction = txn;
cb.GetInsertCommand().Transaction = txn;
cb.GetDeleteCommand().Transaction = txn;
da.Update(tbl);
txn.Commit();
cn.Close();
DataTable tbl = new DataTable();
OleDbConnection cn = new OleDbConnection(strConn);
OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
cn.Open();
cb.GetUpdateCommand();
da.Fill(tbl);
OleDbTransaction txn = cn.BeginTransaction();
cb.GetUpdateCommand().Transaction = txn;
cb.GetInsertCommand().Transaction = txn;
cb.GetDeleteCommand().Transaction = txn;
da.Update(tbl);
txn.Commit();
cn.Close();