收录日期:2019/08/19 20:42:48 时间:2016/08/06 19:30:46 标签:C#
如题:为什么在微软的SqlHelper.cs中多次用到事务SqlTransaction,但却没有看到事务提交Commit()和回滚Rollback()?
微软的一般都很好。。。。

(不一定都好)
从来都是自己写,没用过这个类~~~~

再说,那个Commit和Rollback应该在数据库中配置事务的吧嘿嘿~~~


/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">SQL语句数组</param>
public static int ExecuteSqlTransaction(List<string> SQLStringList)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction())
{

using (SqlCommand cmd = new SqlCommand())
{
try
{
//循环
int val = 0;
foreach (string sqlStr in SQLStringList)
{
PrepareCommand(cmd, conn, trans, CommandType.Text, sqlStr, null);
val += cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
trans.Commit();
return val;
}
catch
{
trans.Rollback();
return 0;
}
}
}
}
}


我这个有的,那个sqlhelper代码也不规范,我改了一些 不知道是不是原来那个了
引用 3 楼 ailin84 的回复:
C# code


        /// <summary>
        /// 执行多条SQL语句,实现数据库事务。
        /// </summary>
        /// <param name="SQLStringList">SQL语句数组</param>
        public static int ExecuteSqlTransaction(List<str……
基本上面目全非了,不过这个倒是可以用的。

            SqlParameter[] param = new SqlParameter[1];
            SqlConnection conn = new SqlConnection(SqlHelper.conn);
            SqlTransaction trans = conn.BeginTransaction();
            try
            {
                SqlHelper.ExecuteNonQuery(trans, CommandType.Text, "", param);
                SqlHelper.ExecuteNonQuery(trans, CommandType.Text, "", param);
                trans.Commit();
            }
            catch (Exception ex)
            {
                trans.Rollback();
            }


自己提交自己滚
赞同楼上的,自己提交自己滚~
自己提交自己滚~
不过你可以自己写一个sqlhelper类啊,只需要写一个之后可以一直用了,哈哈,这几天我也在学着写这个类呢
引用 5 楼 dz007 的回复:
C# code

            SqlParameter[] param = new SqlParameter[1];
            SqlConnection conn = new SqlConnection(SqlHelper.conn);
            SqlTransaction trans = conn.BeginTransaction();
     ……
如果自己提交自己滚,数据访问层和SqlHelper的耦合度比较高,不是很好。
该回复于2011-10-26 09:42:31被版主删除

问几个很基础的问题 有个复选框,当用户选中时提示,如果选择是就选中,如果选择否就让复选框不被选中! 在线马上结贴(100分):我的framework中没有ILDasm.exe谁有发一个给我 关于语音聊天 SQL 里有没有生成全球唯一标示常量的过程或含数 IIS 6 支持ssl的问题:连接不上 一个关于天数计算的问题。 请教struts高手 一个小问题! 【在线等候,如何在VFP中建立目录】 请问:如何自己的程序中控制其他程序界面窗口在桌面上显示的位置和大小? 调查单位换算问题 如何断点调试DLL文件? 如何判断IP地址是否属于某个地址段??? 在阻塞的socket上,recv和send会返回0值吗? 急!sql+delphi oracle9i手动启动问题 关于redhat liunx的几个小问题 mdi子窗体load的时候与设置值不同怎么解决 关于oracle9i可更新结果集的问题 为何用了表达式不能更新 哪位大侠提供一下JBuilder9的插件,多谢 关于多线程文件读写的问题 急。。。。 如何改变dialog的caption? 是weblogic的license问题么? 关于如何即准确又高效的显示错误! 请问用自动增加列时,它会不会自动处理并发问题 请教关于 磁盘阵列 的问题 网页中如何保存此页菜单的树打开状态到下一页?