C#-C# 中能用一个事务来实现,先删除表的数据,在把新的数据插进去?
C#中,先要删除表的数据,在把新的数据插入,怎么使用事务?是使用一个事务?还是可以在一个事务里面嵌套令一个事务?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
C#中,先要删除表的数据,在把新的数据插入,怎么使用事务?是使用一个事务?还是可以在一个事务里面嵌套令一个事务?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
事务里面最好不要嵌套令一个事务。你可以直接调用存储过程,存储过程使用事物提交。
using (SqlConnection con = new SqlConnection(SqlHelper.ConnectionString))
{
con.Open();
using (SqlTransaction trans = con.BeginTransaction())
{
try
{
SqlParameter[] parameter ={
new SqlParameter("@",SqlDbType.NVarChar,20),
new SqlParameter("@",SqlDbType.DateTime),
new SqlParameter("@",SqlDbType.DateTime)
};
parameter[0].Value =;
parameter[1].Value =;
parameter[2].Value =;
ds = SqlHelper.ExecuteDataset(trans, CommandType.StoredProcedure, "#", parameter);
}
catch (Exception ex)
{
}
}
}
数据库操作要要原子化,赞成使用存储过程。
最好写在存储过程里
Begin tran
Delete .....
Insert....
COMMIT tran
可以把要操作的sql语句存在一个泛型中,传到写好的函数中,直接调用呀
public bool ExecuteTran(List<string> sqls, params SqlParameter[] pms)
{
try
{
using (SqlConnection thisConnect = new SqlConnection(connectString))
{
thisConnect.Open();
SqlCommand cmd = new SqlCommand();
if (pms != null)
{
foreach (SqlParameter pm in pms)
{
if (pm != null)
{
cmd.Parameters.Add(pm);
}
}
}
//开始事务
SqlTransaction tran = thisConnect.BeginTransaction();
cmd.Transaction = tran;//把这个 命令上执行的操作都加入tran事务
cmd.Connection = thisConnect;
try
{
foreach (string sql in sqls)
{
//遍历执行sql
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
//..执行没出错
tran.Commit();
return true;
}
catch
{
tran.Rollback();
return false;
}
finally
{
thisConnect.Close();
}
}
}
catch (SqlException el)
{
throw el;
}
}
如果直接在C#里直接拼SQL脚本,可以考虑把两句语句拼一起