解决方案 »

  1.   

    我觉得你应该不懂什么叫事务.. 甚至ado.net...可能连连接数据库也不会不然这样吧  你把你现在有的代码(ado.net连接数据库执行insert)的代码发来.然后我在你的代码的基础上帮你改改你看如何?
      

  2.   

    当然我们还有别的写法..比如
    begin try
      begin tran
              insert xxoo values('xxoo')
              declare @id int
              select @id=@@identity
              insert xxoo_sub values(@id,'xxooAgain')
      commit tran
    end try
    begin catch
      select  ERROR_MESSAGE() AS ErrorMessage
      rollback tran
    end catch
      

  3.   

     public bool TransExcute(string sql1,string sql2,params SqlParameter[] paras)
            {
                SqlTransaction tran = Conn.BeginTransaction();
                try
                {
                    int temp = 0;                SqlCommand cmd = Conn.CreateCommand();
                    cmd.Transaction = tran;
                    cmd.CommandText = sql1;
                    temp = cmd.ExecuteNonQuery();
                    cmd.CommandText = sql2;
                    temp += cmd.ExecuteNonQuery();
                    if (paras != null && paras.Length > 0)
                    {
                        cmd.Parameters.AddRange(paras);
                    }
                    if (temp < 2)
                    {
                        tran.Rollback();
                        return false;
                    }
                    else
                    {
                        tran.Commit();
                        return true;
                    }
                }
                catch
                {
                    
                    tran.Rollback();
                }
                finally
                {
                    CloseConn();
                }
                return false;
            }
      

  4.   

    Oracle的话好办 直接用取序列  作为参数传入sql中
      

  5.   

    最好的解决方法是写一个存储过程来执行,当然,如果只是应对当前的紧急情况,也可以写两条sql语句实现功能