语法错误异常详细信息:System.Data.OleDb.OleDbException:INSERT INTO语句中的语法错误

时间:2012-05-29 20:41:47

标签: asp.net sql

正如标题所说,我在尝试从ASP.NET页面对MS Access数据库执行以下插入查询时出现语法错误。

sqls = "INSERT INTO Invoice(Date, S_OF, Consignee_name, Vechile_type, Make, Model, 
                            Chassis_no, Transmission, Fuel_Type, Mile_age, Colour, 
                            Engine_type, Wheel_Drive, Accesories_options, FOB_Price, 
                            Fright_Price, Insurance, inspection, Port_of_Loading, 
                            Destination, Drive, Total)
        VALUES('" + date1.Text + "','" + Sof.Text + "','" + consigneee.Text + "','" + 
               dvtype.Text + "','" + make.Text + "','" + Model.Text + "','" + chassisno.Text + 
               "','" + dtransmision.Text + "','" + dfueltype.Text + "','" + mileage.Text + "','" 
               + dcolour.Text + "','" + enginetype.Text + "','" + dwheeldrive.Text + "','" 
               + labelc.Text + "','" + FobPrice.Text + "','" + frieghtprice.Text + "','" 
               + insurance.Text + "','" + inspection.Text + "','" + portofloading.Text 
               + "','" + portdestination.Text + "','" + ddrive.Text + "','" + total.Text + "')"

3 个答案:

答案 0 :(得分:1)

我只是在猜测,因为你没有提供错误信息,但你似乎在列名中有一些拼写错误。

"INSERT INTO Invoice(Date,S_OF,Consignee_name,Vechile_type,Make,...
                                              ^^^^^^^

您的意思是Vehicle吗?

Accesories_options

它拼写为Accessories

Fright_Price

你真的让人害怕吗?我确定你的意思是Freight_Price

答案 1 :(得分:0)

你可以String.Format(“INSERT INTO Invoice Values {0} {1} {2}”,value0,value1,value2)所以value0将替换为{0},value1将替换为{1},所以上。这样你可以更好地追踪错误。

此外,尝试使用store-procedure和参数来避免sql注入。有时花在它上面是值得的。

答案 2 :(得分:0)

以下是有人可能会破解您的数据库(SQL注入)。请注意,它是出于教育目的!不要试图执行它!

如果有人在您的总计文本框中输入此内容,您的数据可能会被删除:

'); delete from invoice; print ('hi

具有讽刺意味的是,几年前,我在网站上收到了错误消息,我在那里订购了我的汽车零件(Mopar零件销售商)。我得到错误,如#34; ... WHERE子句中的错误..."。因此,它对SQL注入攻击是开放的。我给他们发了电子邮件但从未再次向他们订购过。我希望,你不是在这里代表他们:)