DataRow row = this.OrderGoodsDetails.Rows[i];
_detailSql += string.Format(@"INSERT INTO OrderOds_Detail(OrdersNumber,ProductsID,ProductsName,ProductsColor,ProcductsPrint,NUM,PRICE,SUM,REMARK,Operator,Changed_Date,Is_USED,Version) VALUES('{0}',{1},'{2}','{3}','{4}',{5},{6},{7},'{8}',{9},getdate(),'1',0);",ordersnumber,row["ProductsID"],row["ProductsType"],row["ProductsColor"],ProcductsPrint,row["NUM"],row["PRICE"],row["SUM"],row["REMARK"],UserId);//ordersnumber为正常赋值
异常详细信息: System.Data.SqlClient.SqlException: ',' 附近有语法错误。源错误:
行 367: + _detailSql + " end;";
行 368: }
行 369: DBclass.ExecSql(sql);
行 370: Response.Redirect("OrderManage.aspx");
行 371: }
郁闷死了,找了好几个小时,没找出问题出在什么地方。
Response.Write(sql)
或者直接断点调试,把sql文输出出来看,一目了然,你这样的格式化语句,最终还是sql文执行少年要学会调试啊,你这个肯定是sql语句出错了
//DataRow row = this.OrderGoodsDetails.Rows[i];
//_detailSql += string.Format(@
string sql = "INSERT INTO [OrderOds_Detail] ([OrdersNumber] ,[ProductsID] ,[ProductsName] ,[ProductsColor] ,[ProcductsPrint] ,[NUM] ,[PRICE] ,[REMARK] ,[Operator] ,[Changed_Date],[Is_USED,Version]) VALUES ('" +
ordersnumber + "','" + row["ProductsID"] + "','" + row["ProductsType"] + "','" + row["ProductsColor"] + "','" + ProcductsPrint + "','" + row["NUM"] + "','" + row["PRICE"] + "','" + row["REMARK"] + "','" + UserId + "',getdate() ,'1' ,0) ";
为何有两个相同的字段?
再加上它是关键词,需要用"[xxx]"括起来。
我很多年不用关系数据库了。我记得在SQL Server的查询分析器程序中,或者哪怕是osql控制台程序中,如果你将复制粘贴的sql语句执行一下,它就会告诉你第多少列的字符逗号,有问题,而且还会有个小指针指向这个字符位置。你应该用调试方式来找问题,不要再重复可笑地“找了好几个小时”的过程啦。
你直接这样:
"INSERT INTO OrderOds_Detail(OrdersNumber,ProductsID,ProductsName,ProductsColor,
ProcductsPrint,NUM,PRICE,SUM,REMARK,Operator,Changed_Date,Is_USED,Version)"
VALUES('"+ordersnumber+"',"+row["ProductsID"]+",'"+row["ProductsType"]+"',
'"+row["ProductsColor"]+"','"+ProcductsPrint,row["NUM"]+"',"+row["PRICE"]+",
"+row["SUM"]+","+row["REMARK"]+",'"+UserId+"',{9},getdate(),'1',0);"少了个参数,看看{9}是什么东西,按着我这种说服去做,记得全部给分我。
_detailSql += string.Format(@"INSERT INTO OrderOds_Detail(OrdersNumber,ProductsID,ProductsName,ProductsColor,ProcductsPrint,NUM,PRICE,SUM,REMARK,Operator,Changed_Date,Is_USED,Version) VALUES('{0}',{1},'{2}','{3}','{4}',{5},{6},{7},'{8}',{9},getdate(),'1',0);",ordersnumber,row["ProductsID"],row["ProductsType"],row["ProductsColor"],ProcductsPrint,row["NUM"],row["PRICE"],row["SUM"],row["REMARK"],UserId);//ordersnumber为正常赋值
注意逗号必须为英文的,改成 DataRow row = this.OrderGoodsDetails.Rows[i];
_detailSql += string.Format(@"INSERT INTO OrderOds_Detail(OrdersNumber,ProductsID,ProductsName,ProductsColor,ProcductsPrint,NUM,PRICE,SUM,REMARK,Operator,Changed_Date,Is_USED,Version) VALUES('{0}',{1},'{2}','{3}','{4}',{5},{6},{7},'{8}',{9},'{10}','1',0);",ordersnumber,row["ProductsID"],row["ProductsType"],row["ProductsColor"],ProcductsPrint,row["NUM"],row["PRICE"],row["SUM"],row["REMARK"],UserId,getdate());//ordersnumber为正常赋值
2.找到sql错误后修改程序写法