两张表
订单表 和 订单明细表trans = conn.BeginTransaction();
try  
{  
  添加订单表;  
  循环添加明细表; (在此处如何获取添加订单表的ID)
  trans.commit();  
}突然卡壳,请问各位有什么方法去获取

解决方案 »

  1.   

    楼主
    trans.commit();   
    应该放到外面来再者,你如果卡壳了之后执行事务回滚的话
    不会插入数据的
      

  2.   

        在 oracle 里面 有一条sql 语句 叫  insert into table ()value() return id
      

  3.   


    trans = conn.BeginTransaction();
    try   
    {   
      添加订单表;   
      循环添加明细表; (在此处如何获取添加订单表的ID)
      trans.commit();   
    }
    catch
    {
      trans.transRollback();
      MessageBox.Show("操作失败");
    }
    finally
    {}
    这样写应该没问题哦
      

  4.   

    Sql里面有个系统变量  @@identity在你插入数据后马上把@@identity赋值给你要返回的Sql变量
    在程序中接收就可以了oracle 楼上有
      

  5.   

    这要看你Orderid的命名规则 下面是我的做法 SqlParameter[] pars; 
                string ReserveIDS = "select dbo.funcNewTInquiryID('" + DateTime.Now.ToString("yyyyMMdd") + "')";
                string strSql = "insert into TBL_Ticket_Inquiry (InquiryID,TicketType,ToDate,ToDepar,ToDesti,ToFlightNo,ToTime,HomeDate,HomeDepar,HomeDesti,HomeFlightNo,Inquiry,HomeTime,Email,InquiryDate,UseSite,AnswerFlg)"
                    + " values (@InquiryID,@TicketType,@ToDate,@ToDepar,@ToDesti,@ToFlightNo,@ToTime,@HomeDate,@HomeDepar,@HomeDesti,@HomeFlightNo,@Inquiry,@HomeTime,@Email,@InquiryDate,@UseSite,@AnswerFlg)";
                SqlConnection conn = new SqlConnection(strCnn);
                conn.Open();
                SqlTransaction trans = conn.BeginTransaction();
                try
                { 
                    DataSet ds = SqlHelper.ExecuteDataset(trans, CommandType.Text, ReserveIDS, null);
                    this.InquiryID = ConvertType.GetString(ds.Tables[0].Rows[0][0]);
                    pars = setParameters();
                    SqlHelper.ExecuteNonQuery(strCnn, CommandType.Text, strSql, pars);
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    //其他异常
                    throw ex;
                }
                finally
                {
                    conn.Close();
                }
                Logs.SaveLog(strCnn, strSql, "I", AnswerUser, EditorType, pars);
                return true;
      

  6.   

    好,结帖,刚是自己搞错了
    SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(sql+"SELECT @@IDENTITY;", conn);
    DataTable dt = new DataTable();
    mySqlDataAdapter.Fill(dt);if (dt.Rows.Count != 0)
    {
         intId = Convert.ToInt32(dt.Rows[0][0]);
    }
      

  7.   

    SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(sql+"(这里最好加空格)SELECT @@IDENTITY;", conn);