用sqldataadapter更新Dataset時設置事務,出錯!

aaron_chen 2007-10-24 11:17:46
主要出現以下問題:
在DataGridView中修改數據後,點Button1進行更新,如果數據正確,可以更新。但當出過錯後(比如其中一列不能為空,但是輸入為空)再更改輸入信息,點Button1進行更新,此時數據不能正確更新。
代碼如下:
private string sqlconn = SqlHelper.ConnectionString;
SqlConnection conn;
SqlTransaction myTrans;
DataSet ds;
SqlDataAdapter sda;
SqlCommandBuilder cmd;
public frmTest()
{
InitializeComponent();
}

private void frmTest_Load(object sender, EventArgs e)
{
conn = new SqlConnection(sqlconn);
conn.Open();
sda = new SqlDataAdapter();
sda.SelectCommand = new SqlCommand("Select * From DataTableCollection", conn);
ds = new DataSet();
sda.Fill(ds, "DataTableCollection");
this.dataGridView1.DataSource = ds.Tables[0];
}

private void button1_Click(object sender, EventArgs e)
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
cmd = new SqlCommandBuilder(sda);
myTrans = cmd.GetInsertCommand().Connection.BeginTransaction();
cmd.GetInsertCommand().Transaction = myTrans;
cmd.GetDeleteCommand().Transaction = myTrans;
cmd.GetUpdateCommand().Transaction = myTrans;

try
{
sda.Update(ds.Tables[0]);
myTrans.Commit();
MessageBox.Show("成功!");
}
catch(Exception ex)
{
myTrans.Rollback();
MessageBox.Show("失敗!"+ex.Message);
}
finally
{
conn.Close();
}
}
...全文
106 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxyihui 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aaron_chen 的回复:]
加這個就可以了
sda.AcceptChangesDuringUpdate = false;
[/Quote]
加这个也无效,我也不知为什么?
当执行Update()后,没有出错的记录行照样被设置成了DataRowState.Unchanged(其中也存在某些错误行),当你再更新时,这些行就不会再更新了。
不知为什么sda.AcceptChangesDuringUpdate = false;无效?
jiatong1981 2007-10-24
  • 打赏
  • 举报
回复

myTrans = sda.SelectCommand().Connection.BeginTransaction();
sda.InsertCommand().Transaction = myTrans;
sda.DeleteCommand().Transaction = myTrans;
sda.UpdateCommand().Transaction = myTrans;
aaron_chen 2007-10-24
  • 打赏
  • 举报
回复
加這個就可以了
sda.AcceptChangesDuringUpdate = false;
九章落地 2007-10-24
  • 打赏
  • 举报
回复
SqlDataAdapter,更新数据时,遇到错误,就会退出Update方法.

可以用SqlCommand一笔一笔更新,如果执意要用SqlDataAdapter,可选择更新前检查datagridview数据的有效性,检查无误后,再调用Update方法.

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧