代码如下,是我从网上下载下来的public static int ExecuteSqlTran(List<String> SQLStringList)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                SqlTransaction tx = conn.BeginTransaction();
                cmd.Transaction = tx;
                try
                {
                    int count = 0;
                    for (int n = 0; n < SQLStringList.Count; n++)
                    {
                        string strsql = SQLStringList[n];
                        if (strsql.Trim().Length > 1)
                        {
                            cmd.CommandText = strsql;
                            count += cmd.ExecuteNonQuery();
                        }
                    }
                    tx.Commit();
                    return count;
                }
                catch
                {
                    tx.Rollback();
                    return 0;
                }
            }
        }我执行了5条insert语句,看到count也已经累加到5了,可接着就执行了tx.Rollback(),这个函数是不是有问题的啊

解决方案 »

  1.   

    catch(Exception ex)
    {
    //这里输出ex.Message 看什么错误
    tx.Rollback();
    return 0;
    }
      

  2.   

    catch(Exception ex)
    {
            tx.Rollback();
        return 0;
    }
    看ex提示内容,一般情况下是主键重复或者字段类型不匹配,还有可能是
    长度超出数据设定的范围了!
      

  3.   

    怪了,照着楼上的办法加了个ex.Message想看看错误信息居然好了,没什么都没改,就连执行的数据都是一样的.
    明天再试试看给分,谢谢楼上的两位了
      

  4.   

    自己调试一下吧,光是这样看不大看的出来,输出message看看
      

  5.   

    把断点打到catch那,监视一下ex.message,什么问题就能看出来了