保存DataGridView中更新数据至数据源时可否与事务挂钩?该怎么解决
保存DataGridView中更新数据至数据源时可否与事务挂钩?
SqlStr = "select * from iepasah "
MyDataAdapterSalaryItemSet.SelectCommand.CommandText = SqlStr
MyDataAdapterSalaryItemSet.Fill(MyDataSet, "tabpasah ") BindingSourceSalaryItemSet = New BindingSource(MyDataSet, "tabpasah ")
dgvSalaryItemSet.AutoGenerateColumns = False
dgvSalaryItemSet.DataSource = BindingSourceSalaryItemSet
用以上方法把DataGridView邦定后,当修改了两行数据,而其中一行数据有误时,就只能保存一条记录到数据源
现在我想实现当有错误发生时,所修改的记录全部回滚,也就是要就全保存要就全部不保存。
请各位帮忙想想办法
------解决方案--------------------
http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/builddistapp/TransactionControl.mspx?mfr=true
------解决方案--------------------
要不用存储过程
要不用事务
你这种情况一般是先检查数据确保不出错,然后再一次提交
------解决方案--------------------
能够使用事务
Dim Trans As OleDb.OleDbTransaction '事务处理
OleComm = New OleDb.OleDbCommand
Trans = OledbS.BeginTransaction‘OleDb.OleDbConnection
OleComm.Transaction = Trans
Try
....... '正常的数据库操作
Catch ex As Exception
Trans.Rollback() '遇到错误回滚
End Try
------解决方案--------------------
自己写SQL语句也不会麻烦到哪去吧?
而且系统生成的代码有时候还会出错吧
------解决方案--------------------
这个我是这样做的
在datagridview中 修改一次数据就更新一下数据库(根据条件可以选择是不是真的更新数据库)
像你说的一次修改好几行 我觉得这个删除操作吧 可以多选,这个你可以用个循环 一条一条的删除。像编辑、添加这样的都可以修改一个cell就保存一下(根据条件可以选择是不是保存,比如先写的非主键的数据,这时主键数据是空的,这个时候就可以先不保存到数据库)
SqlStr = "select * from iepasah "
MyDataAdapterSalaryItemSet.SelectCommand.CommandText = SqlStr
MyDataAdapterSalaryItemSet.Fill(MyDataSet, "tabpasah ") BindingSourceSalaryItemSet = New BindingSource(MyDataSet, "tabpasah ")
dgvSalaryItemSet.AutoGenerateColumns = False
dgvSalaryItemSet.DataSource = BindingSourceSalaryItemSet
用以上方法把DataGridView邦定后,当修改了两行数据,而其中一行数据有误时,就只能保存一条记录到数据源
现在我想实现当有错误发生时,所修改的记录全部回滚,也就是要就全保存要就全部不保存。
请各位帮忙想想办法
------解决方案--------------------
http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/builddistapp/TransactionControl.mspx?mfr=true
------解决方案--------------------
要不用存储过程
要不用事务
你这种情况一般是先检查数据确保不出错,然后再一次提交
------解决方案--------------------
能够使用事务
Dim Trans As OleDb.OleDbTransaction '事务处理
OleComm = New OleDb.OleDbCommand
Trans = OledbS.BeginTransaction‘OleDb.OleDbConnection
OleComm.Transaction = Trans
Try
....... '正常的数据库操作
Catch ex As Exception
Trans.Rollback() '遇到错误回滚
End Try
------解决方案--------------------
自己写SQL语句也不会麻烦到哪去吧?
而且系统生成的代码有时候还会出错吧
------解决方案--------------------
这个我是这样做的
在datagridview中 修改一次数据就更新一下数据库(根据条件可以选择是不是真的更新数据库)
像你说的一次修改好几行 我觉得这个删除操作吧 可以多选,这个你可以用个循环 一条一条的删除。像编辑、添加这样的都可以修改一个cell就保存一下(根据条件可以选择是不是保存,比如先写的非主键的数据,这时主键数据是空的,这个时候就可以先不保存到数据库)