[英]Failing to insert data into MS Access database (syntax error in INSERT INTO statement.)
我编写了以下代码,将数据插入到Microsoft Access数据库中,但是失败了,并引发以下错误:
INSERT INTO语句中的语法错误。
这是我的代码:
// Open the connection to the database.
connection.Open();
OleDbCommand dbcmd = new OleDbCommand();
dbcmd.Connection = connection;
// Inserting Data.
dbcmd.CommandText = "insert into ConveyanceBill1 (empname, from) values('" + txtEmployee.Text + "','" + txtFrom.Text + "')";
dbcmd.ExecuteNonQuery();
MessageBox.Show("Sucessfully Added!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
connection.Close();
但是,如果我更改此行:
// Inserting Data.
dbcmd.CommandText = "insert into ConveyanceBill1 (empname, from) values('" + txtEmployee.Text + "','" + txtFrom.Text + "')";
此行:
// Inserting Data.
dbcmd.CommandText = "insert into ConveyanceBill1 (empname, designation) values('" + txtEmployee.Text + "','" + txtDesignation.Text + "')";
它完美地工作。 我找不到为什么它不起作用。这是我在设计视图中的数据库表:
我做了很多尝试,但是我仍然不明白为什么它不起作用。
FROM
是Microsoft OLE DB提供程序中的保留关键字 。 您可能希望将其与[FROM]
类的方括号一起使用。 但是,作为最佳实践,请将其更改为非保留字。
您应该始终使用参数化查询 。 这类字符串连接对SQL注入攻击开放。
也可以使用using
语句自动处理OleDbConnection
和OleDbCommand
而不是手动调用Close
或Dispose
方法。
using(var connection = new OleDbConnection(conString))
using(var dbcmd = connection.CreateCommand())
{
dbcmd.CommandText = "insert into ConveyanceBill1 (empname, from) values(?, ?)";
dbcmd.Parameters.Add("?", OleDbType.VarWChar).Value = txtEmployee.Text;
dbcmd.Parameters.Add("?", OleDbType.VarWChar).Value = txtFrom.Text;
connection.Open();
int effectedRows = dbcmd.ExecuteNonQuery();
if(effectedRows > 0)
{
MessageBox.Show("Sucessfully Added!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
“ from”是Microsoft访问的保留字,将其更改为非保留字(例如“ desfrom”) ,它应该可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.