sql语句:',' 附近有语法错误。 各位大侠,帮我看看啊

mianrong 2013-07-01 11:23:22

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: }


郁闷死了,找了好几个小时,没找出问题出在什么地方。
...全文
4533 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
mianrong 2013-07-02
  • 打赏
  • 举报
回复
问题已解决,sql语句是没有问题。 采用了一楼的方法,把它打印出来后,在查询分析器中分析。 最后发现是:test0,UserId,test1,UserId这个值没有获取到,为空,所以在执行过程中出现了:test1,,test这样的语句。 错误提示sql语句语法错误。然后我很狗血的一直在检查sql语法。。。。。。。
persuit666 2013-07-02
  • 打赏
  • 举报
回复
1.sql打印出来到数据库执行下 2.找到sql错误后修改程序写法
EnForGrass 2013-07-02
  • 打赏
  • 举报
回复
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为正常赋值 注意逗号必须为英文的, 改成 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为正常赋值
吴青峰 2013-07-02
  • 打赏
  • 举报
回复
不是我说你,不要用string.Format这个,因为它会默认你参数不对。 你直接这样: "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}是什么东西,按着我这种说服去做,记得全部给分我。
  • 打赏
  • 举报
回复
楼主请调试.断点后,将执行的sql语句复制到sqlserver 查询器中。就知错在哪里了.
H_Gragon 2013-07-02
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
把 VALUES 部分中的全角中文的逗号,替换为半角英文逗号,
试试!
lionjian 2013-07-02
  • 打赏
  • 举报
回复
直接断点看看sql语句是怎么样,然后复制进去SQL SERVER里面试试不就行了,会告诉你哪里错的啊
Change_L 2013-07-02
  • 打赏
  • 举报
回复
引用 5 楼 myhope88 的回复:
你把sql语句输出来看一下就知道什么问题了嘛
+ +
x_jefferson 2013-07-02
  • 打赏
  • 举报
回复
不怪楼主。我盯着看了5个小时,也没找到错。
  • 打赏
  • 举报
回复
下次遇到这种问题,把你的SQL语句拿出来,直接放到查询分析器里面执行,这样直观一点。
myhope88 2013-07-02
  • 打赏
  • 举报
回复
你把sql语句输出来看一下就知道什么问题了嘛
  • 打赏
  • 举报
回复
引用 楼主 mianrong 的回复:
郁闷死了,找了好几个小时,没找出问题出在什么地方。
我很多年不用关系数据库了。我记得在SQL Server的查询分析器程序中,或者哪怕是osql控制台程序中,如果你将复制粘贴的sql语句执行一下,它就会告诉你第多少列的字符逗号,有问题,而且还会有个小指针指向这个字符位置。你应该用调试方式来找问题,不要再重复可笑地“找了好几个小时”的过程啦。
  • 打赏
  • 举报
回复
把 VALUES 部分中的全角中文的逗号,替换为半角英文逗号,
insus 2013-07-02
  • 打赏
  • 举报
回复
refer:


//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]"括起来。

Jdragon 2013-07-02
  • 打赏
  • 举报
回复
貌似你的位数对不上吧??values()跟前面的对上了吗
Regan-lin 2013-07-02
  • 打赏
  • 举报
回复
自己放到数据库试下,我看估计是你的参数配置出问题!
E次奥 2013-07-02
  • 打赏
  • 举报
回复
把得到的sql语句拿到数据库执行一下。一切问题就迎刃而解!
青春code 2013-07-02
  • 打赏
  • 举报
回复
有时候不是你不懂,只是你没有看出来。也许问题很简单,要学会分析问题啊
饕餮123 2013-07-01
  • 打赏
  • 举报
回复
我教你个方法 Response.Write(sql) 或者直接断点调试,把sql文输出出来看,一目了然,你这样的格式化语句,最终还是sql文执行 少年要学会调试啊,你这个肯定是sql语句出错了

62,233

社区成员

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

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

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

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