看了几天了,就是看到SQL数据库处理语句那部分始终不知道什么意思,麻烦高手指点一下,谢谢,我不想用ORM,因为配置太麻烦,与其学习用它,不如自己动手写SQL语句处理。希望高手能解释一下ORDER.CS的思想,谢谢。
ORDER.CS中特别是这几个关于SQL语句处理的变量,不知道其工作原理。 
private const string SQL_INSERT_ORDER
private const string SQL_INSERT_ITEM
private const string SQL_SELECT_ORDER

解决方案 »

  1.   

    IDAL Order.cs
    只有2个方法
    void Insert(OrderInfo order);
    OrderInfo GetOrder(int orderId);DAL里的Order.cs
    也就是实现了这二个方法,一个是插入订单,一个是得到实体订单,没有其他删除,修改功能……
      

  2.   

    知道啊,我是想问一下,他那些SQL语句是怎么处理的?
      

  3.   


                    conn.Open();
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = strSQL.Append("SELECT @ID, @ERR").ToString();                // Read the output of the query, should return error count
                    using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) {
                        // Read the returned @ERR
                        rdr.Read();
                        // If the error count is not zero throw an exception
                        if (rdr.GetInt32(1) != 0)
                            throw new ApplicationException("DATA INTEGRITY ERROR ON ORDER INSERT - ROLLBACK ISSUED");
                    }
                    //Clear the parameters
                    cmd.Parameters.Clear();public void Insert
    里面的执行的部分,它执行的是多条语句(相当于存储过程),@ERR多条语句中的错误数,有错误就抛出异常.
    其实你想问的就是private const string SQL_INSERT_ORDER = "Declare @ID int; Declare @ERR int; INSERT INTO Orders VALUES(@UserId, @Date, @ShipAddress1, @ShipAddress2, @ShipCity, @ShipState, @ShipZip, @ShipCountry, @BillAddress1, @BillAddress2, @BillCity, @BillState, @BillZip, @BillCountry, 'UPS', @Total, @BillFirstName, @BillLastName, @ShipFirstName, @ShipLastName, @AuthorizationNumber, 'US_en'); SELECT @ID=@@IDENTITY; INSERT INTO OrderStatus VALUES(@ID, @ID, GetDate(), 'P'); SELECT @ERR=@@ERROR;";
    这句,多条语句执行,相当于存储过程.
      

  4.   

    谢谢stayslive,那条语句怎么能那样执行?能解释一下那条语句的原理麽?谢谢
      

  5.   


    它在DAL层不是有sqlhelper么,也就是拼接sql,然后使用sqlhelper类里的方法
      

  6.   

                using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringOrderDistributedTransaction)) {                // Insert the order status
                    strSQL.Append(SQL_INSERT_ORDER);
                    SqlParameter[] itemParms;
                    // For each line item, insert an orderline record
                    int i = 0;
                    foreach (LineItemInfo item in order.LineItems) {
                        strSQL.Append(SQL_INSERT_ITEM).Append(" @ID").Append(", @LineNumber").Append(i).Append(", @ItemId").Append(i).Append(", @Quantity").Append(i).Append(", @Price").Append(i).Append("); SELECT @ERR=@ERR+@@ERROR;");                    //Get the cached parameters
                        itemParms = GetItemParameters(i);                    itemParms[0].Value = item.Line;
                        itemParms[1].Value = item.ItemId;
                        itemParms[2].Value = item.Quantity;
                        itemParms[3].Value = item.Price;
                        //Bind each parameter
                        foreach (SqlParameter parm in itemParms)
                            cmd.Parameters.Add(parm);
                        i++;
                    }
    这个段能解释一下麽?
      

  7.   

    下了一次单,买来了多个东西……
    表 LineItemOrderId        LineNum            ItemId   Quantity   UnitPrice
    订单号(FK)     这个表的主键          物品ID   数量         单价
     
      

  8.   

    楼主,问下在SQL_SELECT_ORDER 中的o.CardType 字段在Order表中好象没有啊,这是怎么回事 啊,谢谢