C#-C# 中能用一个事务来实现,先删除表的数据,在把新的数据插进去?

发布于 2016-11-18 05:13:17 字数 63 浏览 1716 评论 5

C#中,先要删除表的数据,在把新的数据插入,怎么使用事务?是使用一个事务?还是可以在一个事务里面嵌套令一个事务?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

泛泛之交 2017-07-25 22:52:57

事务里面最好不要嵌套令一个事务。你可以直接调用存储过程,存储过程使用事物提交。

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)
{
}
}
}

清晨说ぺ晚安 2017-07-19 16:51:06

数据库操作要要原子化,赞成使用存储过程

泛泛之交 2017-04-23 14:44:54

最好写在存储过程里
Begin tran
Delete .....
Insert....
COMMIT tran

夜无邪 2017-01-19 03:45:48

可以把要操作的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;
}
}

清晨说ぺ晚安 2017-01-06 05:32:54

如果直接在C#里直接拼SQL脚本,可以考虑把两句语句拼一起

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文