看了几天了,就是看到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
ORDER.CS中特别是这几个关于SQL语句处理的变量,不知道其工作原理。
private const string SQL_INSERT_ORDER
private const string SQL_INSERT_ITEM
private const string SQL_SELECT_ORDER
只有2个方法
void Insert(OrderInfo order);
OrderInfo GetOrder(int orderId);DAL里的Order.cs
也就是实现了这二个方法,一个是插入订单,一个是得到实体订单,没有其他删除,修改功能……
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;";
这句,多条语句执行,相当于存储过程.
它在DAL层不是有sqlhelper么,也就是拼接sql,然后使用sqlhelper类里的方法
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++;
}
这个段能解释一下麽?
表 LineItemOrderId LineNum ItemId Quantity UnitPrice
订单号(FK) 这个表的主键 物品ID 数量 单价