petshop 3.0中的一个疑问...

TimLeaf 2009-03-11 05:50:29

// Create the connection to the database
using (SqlConnection conn = new SqlConnection(SQLHelper.CONN_STRING_DTC_ORDERS)) {

// Open the database connection

// Insert the order status
strSQL = SQL_INSERT_ORDER;
SqlParameter[] itemParms ;
// For each line item, insert an orderline record
int i = 0;
foreach (LineItemInfo item in order.LineItems) {
strSQL = strSQL + SQL_INSERT_ITEM + " @ID" + ", @LineNumber"+i + ", @ItemId" + i+ ", @Quantity" + i + ", @Price" + i + "); 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++;

}

conn.Open();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL + "SELECT @ID, @ERR";

// Read the output of the query, should return orderid and error count
using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)){

//Read the result
rdr.Read();

// If the error count is not zero throw an exception
if (rdr.GetInt32(1) != 0)
throw new Exception("DATA INTEGRITY ERROR ON ORDER INSERT - ROLLBACK ISSUED");

//Fetch the orderId
orderId = rdr.GetInt32(0);
}
//Clear the parameters
cmd.Parameters.Clear();
}

这是petshop 3.0 中 SQLServerDAL.Order类中 Insert 方法中的一段代码...
红色部分是抛出异常。但是我并没有发现这段代码有回滚的功能...
不像它异常中说的那样“ROLLBACK ISSUED”(不过我英文不太好,这句话的意思也不太确定)
希望大家指点一下。
...全文
90 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
踏雪听雨 2009-03-12
  • 打赏
  • 举报
回复
两个语句
INSERT INTO
SELECT @ID, @ERR
TimLeaf 2009-03-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 MicroDeviser 的回复:]
这里是单表操作啊,不须要事务啊
异常提示的不是事务回滚吧,大概是说你的这个操作没有生效吧,嘿嘿我英文也不好
[/Quote]
绝对不是单表操作...呵呵~
SQL_INSERT_ORDER 和 SQL_INSERT_ITEM
是插入到两个表中...

[Quote=引用 6 楼 liuyeede 的回复:]
大伙都是看了标题,不看内容就回答问题啊,最后搞得文不对题。
[/Quote]
也可能是我表述不清...
这个问题是我看petshop3.0时考虑的...
因为我照着做了一个小例子...并没有发生回滚...
但是它在抛出的异常中却仿佛说:执行回滚...
对此我产生疑问...这样petshop会在运用中产生问题:插入到两个表中的数据可能不一致。
所以拜托大家帮忙一下...呵呵~
liudanking 2009-03-12
  • 打赏
  • 举报
回复
把报错的信息粘贴上来吧,现在给的信息太少了
liuyeede 2009-03-11
  • 打赏
  • 举报
回复
大伙都是看了标题,不看内容就回答问题啊,最后搞得文不对题。
周公 2009-03-11
  • 打赏
  • 举报
回复
cmd.CommandText = strSQL + "SELECT @ID, @ERR";
这句有问题吧。
readfuture 2009-03-11
  • 打赏
  • 举报
回复
LZ的参数不完整吧;提示:数据完整性错误的命令插入-执行回滚
liuyeede 2009-03-11
  • 打赏
  • 举报
回复
ROLLBACK还有终止、取消的意思啊
MicroDeviser 2009-03-11
  • 打赏
  • 举报
回复
这里是单表操作啊,不须要事务啊
异常提示的不是事务回滚吧,大概是说你的这个操作没有生效吧,嘿嘿我英文也不好
TimLeaf 2009-03-11
  • 打赏
  • 举报
回复
throw new Exception("DATA INTEGRITY ERROR ON ORDER INSERT - ROLLBACK ISSUED");

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧