【发布时间】:2018-07-11 14:17:27
【问题描述】:
我正在尝试将密码插入 MS Access 数据库,但运行时出现以下错误,但由于某种原因无法使 ExecuteNonQuery() 函数工作。
我正在尝试将文本框 password 中的字符串插入到表 Password 中的列 password 中。
我收到此错误:
System.Data.OleDb.OleDbException (0x80040E14):INSERT INTO 语句中的语法错误。 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult 小时) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,对象和 executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(对象和执行结果) 在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior 行为,对象和 executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法) 在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery() 在 C:\Users\Mahir\source\repos\Insert Test\Insert Test\Form1.cs:line 43 中的 Insert_Test.Form1.pass_btn_Click(Object sender, EventArgs e)
这是我使用的代码:
private OleDbConnection connection = new OleDbConnection();
string database = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\\password.accdb";
connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + database + ";Jet OLEDB:Database Password=12345678;";
try {
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "INSERT INTO Password ([password]) VALUES('" + password.Text + "')";
command.ExecuteNonQuery(); // this is line 43
MessageBox.Show("Success");
connection.Close();
} catch (Exception ex) {
MessageBox.Show(Convert.ToString(ex));
}
我使用的数据库是 MS Access 2010 数据库,名为“password.accdb”,密码为“12345678”。
这里是完整代码:https://pastebin.com/D1xQ2LVg
【问题讨论】:
-
仅供参考 - 您的代码容易受到 SQL 注入的攻击。始终,始终使用参数化查询。
-
错误信息是
Syntax error in INSERT INTO statement,所以检查password.text和command.CommandText的值是什么