数据插入一半断掉怎么办
意思是:
我在网面后台写入两个插入语句分别是两个表的
insert into aa values........
insert into bb values........
当第一个插入语句完成时,突然网面被关掉或是突然断电了使得第二个插入语句没执行,只执行了第一个插入语句,
有没有办法:
当第一个插入语句完成时,突然网面被关掉或是突然断电了,使第一个插入语句不能完成 ,
就是说要么就两个插入语句都执行了,不然就都没执行
方法详细点…………
------解决方案--------------------begin transaction
commit transaction
rollback transaction
------解决方案--------------------用事务吧,同时提交 如果有错误 同时回滚 保持数据的一致性与完整性!
------解决方案--------------------事务
------解决方案--------------------使用事务。
------解决方案--------------------事务使用示例
------解决方案--------------------没有事务的话会成功插入那些执行成功的,
有事务则要么一起成功要么一起失败
------解决方案--------------------给你一个方法,执行的多条语句放这个list里面,用事务执行,有一条失败就rollback
/// <summary>
/// 执行多个Sql查询语句,同时进行事务处理
/// </summary>
/// <param name="querys">sql语句列表</param>
/// <returns>成功或失败</returns>
public bool ExecuteSqlWithTransaction(List<string> querys)
{
SqlTransaction trans = null;
//打开连接
if (openConnection())
{
trans = sqlCon.BeginTransaction();
sqlComm = new SqlCommand();
sqlComm.Connection = sqlCon;
sqlComm.Transaction = trans;
try
{
for (int i = 0; i < querys.Count; i++)
{
sqlComm.CommandText = querys[i];
sqlComm.ExecuteNonQuery();
}
trans.Commit();
}
catch (Exception)
{
trans.Rollback();
return false;
}
finally
{
//关闭连接
closeConnection();
}
}
else
{
return false;
}
return true;
}
------解决方案--------------------就是用事物了。 sqltransaction 有 存储过程的,也有在后台的,楼上给的是在后台的实现。