2012-05-29 108 views
-4

正如標題所示,嘗試從ASP執行對MS Access數據庫的以下插入查詢時出現語法錯誤.NET頁面。語法錯誤異常詳細信息:System.Data.OleDb.OleDbException:INSERT INTO語句中的語法錯誤

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 + "')" 
+1

更改該查詢使用參數!你得到了什麼錯誤? –

+0

是的,請使用參數。閱讀SQL注入。 – iamkrillin

+3

發佈確切的錯誤訊息。有點諷刺的是,你使用的唯一標籤是'error-message',但你沒有在你的問題中發佈錯誤消息。 –

回答

1

我只是猜測這裏,因爲你沒有提供的錯誤信息,但你似乎有列名的幾個錯別字。

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

您的意思是Vehicle

Accesories_options 

應該拼寫爲Accessories

Fright_Price 

你是否真的責怪人們會害怕?我相信你的意思是Freight_Price這裏。

+0

* Bad speller of世界 - 解開!* :-) –

0

您可以String.Format(「INSERT INTO發票值{0} {1} {2}」,value0,value1,value2),因此value0將替換爲{0},value1將替換爲{1}並且等等。這樣你可以更好地跟蹤錯誤。

此外,嘗試使用存儲過程和參數來避免sql注入。這是值得的,有時花在它上面。

0

下面是如何有人可以入侵你的數據庫(SQL注入)。請注意,它是用於教育目的!不要試圖執行它!

如果有人進入你的文本框此,您的數據可能會被刪除:

'); delete from invoice; print ('hi 

諷刺的是,幾年前,我在網站上,我命令我的汽車零部件的錯誤消息(莫帕爾零件賣方)。我遇到了錯誤,如「... WHERE子句中的錯誤...」。所以,它對SQL注入攻擊是開放的。我向他們發送了電子郵件,但從未再次向他們發送過訂單我希望,你不是在這裏代表他們:)