-4

正如标题所说,我在尝试从 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 + "')"
4

3 回答 3

1

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

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

你的意思是Vehicle

Accesories_options

应该拼写Accessories

Fright_Price

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

于 2012-05-29T20:44:39.363 回答
0

您可以 String.Format("INSERT INTO Invoice Values {0}{1}{2}", value0, value1, value2 ) 这样 value0 将替换为 {0},value1 将替换为 {1} 等等。这样您就可以更好地跟踪错误。

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

于 2012-05-29T20:51:46.757 回答
0

以下是某人如何侵入您的数据库(SQL 注入)。请注意,它是为教育目的而提供的!不要试图执行它!

如果有人将此输入到您的文本框中,您的数据可能会被删除:

'); delete from invoice; print ('hi

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

于 2012-05-29T22:31:54.883 回答