C# 尝试插入MS Access数据库时出错

C# 尝试插入MS Access数据库时出错,c#,sql,database,ms-access,oledb,C#,Sql,Database,Ms Access,Oledb,我正在开发一个使用关系数据库的程序。在一种特殊的形式中,我试图将新产品信息插入数据库 using System.Data.OleDb; 当我尝试保存新产品时,此代码会运行 connection.Open(); OleDbCommand command = new OleDbCommand(); command.Connection = connection; string query = "insert into Products (ProductName,ProductSKU,RP,WP,S

我正在开发一个使用关系数据库的程序。在一种特殊的形式中,我试图将新产品信息插入数据库

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.OLEDBEException(0x80040E14):中的语法错误。” 插入到语句中。”

(然后是一堆我认为不重要的东西)

为庞大的SQL查询道歉。我在程序中的其他几个地方使用了完全相同的insertsql查询方法,它们都工作得很好。但是,此示例会导致此错误。通过对SQL查询的各个部分进行“注释”的繁琐过程,我发现错误在于“操作”字段。我已检查我的数据库中的数据类型是否正确,并且我正在使用“”标点符号包围正在插入数据库的文本字符串

using System.Data.OleDb;
我想我已经检查了所有的东西,为什么我仍然得到这个错误

非常感谢,如果需要更多信息,请告诉我;)

操作
是OLE DB中的一个提供程序。您需要将其与方括号一起使用,如
[Action]
,将其更改为非保留字

但更重要的是 你应该经常使用。这种类型的字符串连接对攻击是开放的


也可以使用来自动处理您的
OleDbConnection
OleDbCommand
,而不是手动调用
.Close()
方法。

非常感谢@Soner Gönül的帮助。我已经让它工作了,但我将看看您让我大开眼界的美妙的参数化查询!