Insert提示插入成功,但是表里却没有数据

wang729786478 2010-11-13 05:29:24
public int AddDrawMaterialDetail(List<tb_DrawMaterialDetial> tb_DrawMaterlaiDetailList)
{
int count = 0;
SqlConnection conn = new SqlConnection(SqlHelper.ConnectionString);

conn.Open();
SqlTransaction sqlt = conn.BeginTransaction();//通过SqlConnection的BeginTransaction方法创建名为st的对象Transaction
SqlCommand cmd = conn.CreateCommand();
cmd.Transaction = sqlt;//将SqlTransaction对象分配给SqlCommand对象的Transaction属性

try {
foreach (tb_DrawMaterialDetial tb_DrawMaterlaiDetail in tb_DrawMaterlaiDetailList)
{
SqlParameter[] cmdParmsDrawDetail =
{
new SqlParameter(ConstantStorag.SYMBOL_AT + ConstantStorag.TB_DRAWMATERIALDETAIL_DRAWMATERIALID,tb_DrawMaterlaiDetail.DrawMaterialID),
new SqlParameter(ConstantStorag.SYMBOL_AT + ConstantStorag.TB_DRAWMATERIALDETAIL_GOODSID,tb_DrawMaterlaiDetail.GoodsID),
new SqlParameter(ConstantStorag.SYMBOL_AT + ConstantStorag.TB_DRAWMATERIALDETAIL_PRICE,tb_DrawMaterlaiDetail.Price),
new SqlParameter(ConstantStorag.SYMBOL_AT + ConstantStorag.TB_DRAWMATERIALDETAIL_QUANTITY,tb_DrawMaterlaiDetail.Quantity)
};
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = ConstantStorag.PROC_DRAWMATERIALDETAIL_INSERT;
cmd.Parameters.Clear();
if (cmdParmsDrawDetail != null)
{
foreach (SqlParameter parm in cmdParmsDrawDetail)
cmd.Parameters.Add(parm);
}
count = cmd.ExecuteNonQuery();

if (count <= 0)
{
sqlt.Rollback();
return count;
}
}
sqlt.Commit(); //事务提交
}
catch (Exception ex)
{
count = -1;
sqlt.Rollback();//回滚事物
}
return count;
}


count最后返回来的是2,传到页面后提示操作成功,但是去数据库看了下,却是没有数据 希望各位大大能给予帮助
...全文
3880 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang729786478 2010-11-15
  • 打赏
  • 举报
回复
问题解决了....竟然是for写成了inserted.. 这种问题 谢谢各位啦 哈哈
wwwzjuteducn 2010-11-13
  • 打赏
  • 举报
回复
进行单步调式试一下
phil999 2010-11-13
  • 打赏
  • 举报
回复
很明显是事务没有提交,单步跟一下看看是什么问题
kinglot 2010-11-13
  • 打赏
  • 举报
回复
怎么看你的代码那么混乱呢?没有测试,你看看下面代码

public int AddDrawMaterialDetail(List<tb_DrawMaterialDetial> tb_DrawMaterlaiDetailList)
{
int count = 0;
SqlConnection conn = new SqlConnection(SqlHelper.ConnectionString);
conn.Open();
SqlTransaction sqlt = conn.BeginTransaction();//通过SqlConnection的BeginTransaction方法创建名为st的对象Transaction
SqlCommand cmd = conn.CreateCommand();
cmd.Transaction = sqlt;//将SqlTransaction对象分配给SqlCommand对象的Transaction属性

try {
foreach (tb_DrawMaterialDetial tb_DrawMaterlaiDetail in tb_DrawMaterlaiDetailList)
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = ConstantStorag.PROC_DRAWMATERIALDETAIL_INSERT;
cmd.Parameters.Clear();

SqlParameter[] cmdParmsDrawDetail =
{
new SqlParameter(ConstantStorag.SYMBOL_AT + ConstantStorag.TB_DRAWMATERIALDETAIL_DRAWMATERIALID,tb_DrawMaterlaiDetail.DrawMaterialID),
new SqlParameter(ConstantStorag.SYMBOL_AT + ConstantStorag.TB_DRAWMATERIALDETAIL_GOODSID,tb_DrawMaterlaiDetail.GoodsID),
new SqlParameter(ConstantStorag.SYMBOL_AT + ConstantStorag.TB_DRAWMATERIALDETAIL_PRICE,tb_DrawMaterlaiDetail.Price),
new SqlParameter(ConstantStorag.SYMBOL_AT + ConstantStorag.TB_DRAWMATERIALDETAIL_QUANTITY,tb_DrawMaterlaiDetail.Quantity)
};
cmd.Parameters.Add(cmdParmsDrawDetail);
count += cmd.ExecuteNonQuery();
}
sqlt.Commit(); //事务提交
}
catch (Exception ex)
{
count = -1;
sqlt.Rollback();//回滚事物
}
finally{conn.close();cmd.dispaly();}
return count;
}
jmh521 2010-11-13
  • 打赏
  • 举报
回复
..输出SQL语句看看..看是不是完整..
再用SQL语句,在查询分析器里试试,,,肯定你疏忽什么了..耐心点..
wang729786478 2010-11-13
  • 打赏
  • 举报
回复
来人吧..帮帮忙吧..这都快到下班点了
种草德鲁伊 2010-11-13
  • 打赏
  • 举报
回复
期间出现异常,事务已经回滚了,不太了解会不会影响到触发器。
wang729786478 2010-11-13
  • 打赏
  • 举报
回复
在tb_DrawMaterlaiDetail这个表中添加了触发器,当这张表发生修改的时候向tb_b添加数据,最后tb_b已经成功,但是发现这张表中却没数据... 所以sql没问题的吧?
种草德鲁伊 2010-11-13
  • 打赏
  • 举报
回复
sql执行肯定有错误了,只不过异常都被捕获了,没往上抛..

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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