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:        }
 郁闷死了,找了好几个小时,没找出问题出在什么地方。

解决方案 »

  1.   

    我教你个方法
    Response.Write(sql)
    或者直接断点调试,把sql文输出出来看,一目了然,你这样的格式化语句,最终还是sql文执行少年要学会调试啊,你这个肯定是sql语句出错了
      

  2.   

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

  3.   

    把 VALUES 部分中的全角中文的逗号,替换为半角英文逗号,
      

  4.   


    我很多年不用关系数据库了。我记得在SQL Server的查询分析器程序中,或者哪怕是osql控制台程序中,如果你将复制粘贴的sql语句执行一下,它就会告诉你第多少列的字符逗号,有问题,而且还会有个小指针指向这个字符位置。你应该用调试方式来找问题,不要再重复可笑地“找了好几个小时”的过程啦。
      

  5.   

    你把sql语句输出来看一下就知道什么问题了嘛
      

  6.   

    下次遇到这种问题,把你的SQL语句拿出来,直接放到查询分析器里面执行,这样直观一点。
      

  7.   

    直接断点看看sql语句是怎么样,然后复制进去SQL SERVER里面试试不就行了,会告诉你哪里错的啊
      

  8.   

    楼主请调试.断点后,将执行的sql语句复制到sqlserver 查询器中。就知错在哪里了.
      

  9.   

    不是我说你,不要用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}是什么东西,按着我这种说服去做,记得全部给分我。
      

  10.   

                    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为正常赋值
      

  11.   

    1.sql打印出来到数据库执行下
    2.找到sql错误后修改程序写法
      

  12.   

    把得到的sql语句拿到数据库执行一下。一切问题就迎刃而解!
      

  13.   

    貌似你的位数对不上吧??values()跟前面的对上了吗
      

  14.   

    问题已解决,sql语句是没有问题。采用了一楼的方法,把它打印出来后,在查询分析器中分析。最后发现是:test0,UserId,test1,UserId这个值没有获取到,为空,所以在执行过程中出现了:test1,,test这样的语句。错误提示sql语句语法错误。然后我很狗血的一直在检查sql语法。