簡體   English   中英

嘗試插入MS Access數據庫時出錯

[英]Error when trying to insert into MS Access Database

我正在開發一個使用關系數據庫的程序。 我試圖以一種特殊的形式將新產品信息插入數據庫。

using System.Data.OleDb;

當我嘗試保存新產品時,此代碼將運行...

connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string query = "insert into Products (ProductName,ProductSKU,RP,WP,Stock,FPS,Ammo,MagazineCap,HopUp,Range,Brand,Colour,Action,Features) values('" + txt_ProductName.Text + "','" + txt_SKU.Text + "'," + txt_RP.Text + "," + txt_WP.Text + "," + numericUpDown_Inventory.Value + "," + cobo_FPS.Text + ",'" + cobo_Ammo.Text + "'," + cobo_MagazineCap.Text + ",'" + cobo_HopUp.Text + "'," + cobo_Range.Text + ",'" + cobo_Brand.Text + "','" + cobo_Colour.Text + "','" + cobo_Action.Text + "','" + txt_Features.Text + "')";
//Action field currently causes an error
MessageBox.Show(query);
command.CommandText = query;
command.ExecuteNonQuery();
connection.Close();

...並引發錯誤

“錯誤System.Data.OleDb.OleDbException(0x80040E14):INSERT INTO語句中的語法錯誤。”

(然后是一堆我認為不重要的東西)

對於龐大的SQL查詢的道歉。 我在程序的其他幾個位置使用了完全相同的方法,即在其他幾個位置使用插入SQL查詢,它們都可以正常工作。 但是,此示例導致此錯誤。 通過“注釋掉” SQL查詢各個部分的繁瑣過程,我發現錯誤在於“ Action”字段。 我檢查了數據庫中的數據類型是否正確,並且使用的是''標點符號來包圍要插入到數據庫中的文本字符串。

我想我已經檢查了所有內容,所以為什么我仍然收到此錯誤?

在此先感謝您,如果需要更多信息,請告訴我;)

Action是OLE DB提供程序中的保留關鍵字 您需要將其與[Action]類的方括號一起使用。 最佳做法是將其更改為非保留字。

但更重要

您應該始終使用參數化查詢 這類字符串連接對SQL注入攻擊開放。

也可以使用using語句自動處理OleDbConnectionOleDbCommand而不是手動調用.Close()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM