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

小组聊天灌水 小组聊天灌水 主题:993 回复:2175

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

归属感 发布于 2016-11-18 字数 117 浏览 1258 回复 5

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

发布评论

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

支持 Markdown 语法,需要帮助?

评论(5

泛泛之交 2017-07-25 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)
            {
            }
        }
    }
清晨说ぺ晚安 2017-07-19 4 楼

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

泛泛之交 2017-04-23 3 楼

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

夜无邪 2017-01-19 2 楼

可以把要操作的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 1 楼

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