for(int i = 0;i < dg_Cart.Items.Count; i++)
{
string str_ID=dg_Cart.Items[i].Cells[1].Text; //物品ID
TextBox txtSL = (TextBox)dg_Cart.Items[i].FindControl("Txt_Sqsl");//申请数量,又用户输入
string wpbh=dg_Cart.Items[i].Cells[2].Text.ToString();//物品编号
string zksl=dg_Cart.Items[i].Cells[8].Text.ToString();//在库数量
string str_Tmp = txtSL.Text;
int str_Tmp1 = new int();
str_Tmp1=int.Parse(str_Tmp);int sl=new int();
sl=int.Parse(zksl);
if (str_Tmp1 <= sl)//判断:如果申请数量小于或者等于在库数量,执行……
{
string strSql = "insert into SQ_LIST values ('"+str_ID+"','"+djh+"','"+wpbh+"','"+str_Tmp+"','"+sqrq+"','"+str_Sqr+"') ";
ExecuteSql(strSql);
}
else
Response.Write("<script language='javascript'>alert('有一项或多项物品申请数量超出!');window.location.href('AddToList.aspx');</script>");
}如果有任何一条不满足都不能进行提交,该如何做?
{
string str_ID=dg_Cart.Items[i].Cells[1].Text; //物品ID
TextBox txtSL = (TextBox)dg_Cart.Items[i].FindControl("Txt_Sqsl");//申请数量,又用户输入
string wpbh=dg_Cart.Items[i].Cells[2].Text.ToString();//物品编号
string zksl=dg_Cart.Items[i].Cells[8].Text.ToString();//在库数量
string str_Tmp = txtSL.Text;
int str_Tmp1 = new int();
str_Tmp1=int.Parse(str_Tmp);int sl=new int();
sl=int.Parse(zksl);
if (str_Tmp1 <= sl)//判断:如果申请数量小于或者等于在库数量,执行……
{
string strSql = "insert into SQ_LIST values ('"+str_ID+"','"+djh+"','"+wpbh+"','"+str_Tmp+"','"+sqrq+"','"+str_Sqr+"') ";
ExecuteSql(strSql);
}
else
Response.Write("<script language='javascript'>alert('有一项或多项物品申请数量超出!');window.location.href('AddToList.aspx');</script>");
}如果有任何一条不满足都不能进行提交,该如何做?
解决方案 »
- 问个很白的问题,关于窗口隐藏与显示
- 求救 splitterpanel 未将对象引用设置到对象的实例
- VSS中[对路径“bin\EduDragon.Persistent.dll”的访问被拒绝。]求助高手
- 问一个SQL的存贮过程
- 手动填充数据,为什么DataGridView不显示数据???
- 关于一个透明的解决方案
- 急!!!在线等待回复:C#怎么写来实现:禁止/启用计算机本地用户
- 求用ASP.netWEB页面实现套打的实现思路
- 有了解图档管理系统的吗?
- 用海康网络摄像头替换原来系统中USB摄像头功能求大神指点思路
- 哈夫曼编码问题,简单的一道题,愿意帮忙的进
- 我是菜鸟,高手请赐教,别用蛋砸我,解决就结帖
一种方法,使用DataSet进行批量的更新,就是把所有的数据在本地(DataSet)更新完毕之后,再写回数据库,缺点是多人更新的时候可能造成数据冲突。
第二种方法,
StringBuilder sb = new StringBuilder();
if (str_Tmp1 <= sl)//判断:如果申请数量小于或者等于在库数量,执行……
{
sb.Append("insert into SQ_LIST values ('"+str_ID+"','"+djh+"','"+wpbh+"','"+str_Tmp+"','"+sqrq+"','"+str_Sqr+"') \r\n");}
else
{
//err
return;
}
ExecuteSql(strSql);
把所有的sql语句拼完一起执行。缺点是有长度的限制,好像在几千个字符吧,另外,拼接字符串有可能会受到注入攻击。同样存在多人操作中的数据冲突问题。
第三种方法,和我上一贴中的一样,不过使用SqlTranaction。
2.将你操作的System.Data.SqlClient.SqlTransaction得到
System.Data.SqlClient.SqlTransaction trans=null;
try
{
trans=xxx.BeginTransaction();
for(int ...
...
trans.Commit();
}
catch(Exception ex)
{
trans.RollBack();
}
finally
{
你自己的最后操作..
trans=null;
}在循环之前定义一个事务,循环成功就提交,一个出错就回滚。
{
string str_ID=dg_Cart.Items[i].Cells[1].Text; //物品ID
TextBox txtSL = (TextBox)dg_Cart.Items[i].FindControl("Txt_Sqsl");//申请数量,又用户输入
string wpbh=dg_Cart.Items[i].Cells[2].Text.ToString();//物品编号
string zksl=dg_Cart.Items[i].Cells[8].Text.ToString();//在库数量
string str_Tmp = txtSL.Text;
int str_Tmp1 = new int();
str_Tmp1=int.Parse(str_Tmp);int sl=new int();
sl=int.Parse(zksl);
if (str_Tmp1 <= sl)//判断:如果申请数量小于或者等于在库数量,执行……
{
str_insert = str_insert + "insert into SQ_LIST values ('"+str_ID+"','"+djh+"','"+wpbh+"','"+str_Tmp+"','"+sqrq+"','"+str_Sqr+"') ;";}
else
Response.Write("<script language='javascript'>alert('有一项或多项物品申请数量超出!');window.location.href('AddToList.aspx');</script>");
return;
}ExecuteSql(str_insert);
最后 ExecuteSql(str_insert);应该写成
if (str_insert!="")
{
ExecuteSql(str_insert);
}
{
string str_ID=dg_Cart.Items[i].Cells[1].Text; //物品ID
TextBox txtSL = (TextBox)dg_Cart.Items[i].FindControl("Txt_Sqsl");//申请数量,又用户输入
string wpbh=dg_Cart.Items[i].Cells[2].Text.ToString();//物品编号
string zksl=dg_Cart.Items[i].Cells[8].Text.ToString();//在库数量
string str_Tmp = txtSL.Text;
int str_Tmp1 = new int();
str_Tmp1=int.Parse(str_Tmp);int sl=new int();
sl=int.Parse(zksl);
if (str_Tmp1 <= sl)//判断:如果申请数量小于或者等于在库数量,执行……
{
str_insert = str_insert + "insert into SQ_LIST values ('"+str_ID+"','"+djh+"','"+wpbh+"','"+str_Tmp+"','"+sqrq+"','"+str_Sqr+"') ;";
//==============================》每句insert语句最后有分号,将语句串起来
}
else
Response.Write("<script language='javascript'>alert('有一项或多项物品申请数量超出!');window.location.href('AddToList.aspx');</script>");
return; //======================================================》退出该事件
}
//执行数据库操作
if (str_insert!="")
{
ExecuteSql(str_insert);
}
else
{
Response.Write("<script language='javascript'>alert('有一项或多项物品申请数量超出!');window.location.href('AddToList.aspx');</script>");
return;
}加了两个大括号,呵呵