public int ExecuteTrans(string[] sqlstrs)
{
SqlConnection conn=new SqlConnection(connstr);
SqlCommand cmd=new SqlCommand(); try
{
conn.Open();
}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message+"\r\n connstr=\""+connstr+"\"");
} System.Data.SqlClient.SqlTransaction trans=conn.BeginTransaction();
try
{
cmd.Connection=conn;
cmd.Transaction=trans; foreach(string str in sqlstrs)
{
cmd.CommandText=str;
cmd.ExecuteNonQuery();
} trans.Commit();
return 0;
}
catch(System.Data.SqlClient.SqlException e)
{
trans.Rollback();
throw new Exception(e.Message+"\r\n sqlstr=\""+sqlstrs.ToString()+"\"");
}
finally
{
cmd.Dispose();
conn.Close();
} }

解决方案 »

  1.   

    使用自动事务[Transaction(TransactionOption.Requies)]
    public class xxx
    {
    }
      

  2.   

    参看如下代码:
    System.Data.SqlClient.SqlTransaction myTran = conn.BeginTransaction();
    sqlUpdateCommand1.Transaction = myTran;
    sqlInsertCommand1.Transaction = myTran;
    sqlDeleteCommand1.Transaction = myTran;
    try
    {
    sqlDa.Update(dt,"customer"); 
    myTran.Commit();
    return true;

    }
    catch(System.Data.SqlClient.SqlException ex)
    {
    myTran.Rollback();
    return false;

    finally
    {
    conn.Close();
    }
      

  3.   

    [Transaction(TransactionOption.Required)]
      

  4.   

    使用自动事务,能说的再相信些吗?
    我的代码如下
    private void 添加入库记录(参数)
     {
       string cmstr="insert into 入库记录 (数据库字段) values (参数)";
       int ii=sqlData.OtherCommand(cmstr)>0;
     }
    public bool 产品入库(参数)
     {
      string cmstr="update 库存 set 数量=参数";
      return sqlData.OtherCommand(cmstr)>0;
      添加入库记录(参数);
     }
    我想在更新库存的同时建立入库记录
    其中:"sqlData.OtherCommand(cmstr)>0"是"数据库连接类"中的方法通过返回值来判断是否执行.
      

  5.   

    try
    {
       //执行语句组
        myTran.Commit();
    }
    catch
    {
        trans.Rollback();
    }