OleDB INSERT命令错误

我有一个数据库(我使用MS ACCESS)我有这个插入代码,我可以读取数据但写入时出错,我按照说明但它不起作用这里是我的代码

OleDbConnection con = new OleDbConnection(@" provider=Microsoft.ace.Oledb.12.0; data source=\\sisc-erelim\4_Printing\VTDB\DB\VirginiTEADB2.accdb; Persist Security Info=False"); private void button1_Click(object sender, EventArgs e) { try { OleDbCommand cmd = new OleDbCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = "INSERT INTO Accountstbl (Username, Password)" + "VALUES ('" + textBox1.Text + "','" + textBox2.Text + "')"; cmd.Parameters.AddWithValue("@Username", textBox1.Text); cmd.Parameters.AddWithValue("@Password", textBox2.Text); cmd.Connection = con; con.Open(); cmd.ExecuteNonQuery(); } catch (Exception ex) { textBox1.Text = ex.ToString(); } 

我总是遇到这个错误,

 System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement. at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() at VirginiTEAcorp.Form3.button1_Click(Object sender, EventArgs e) in C:\Documents and Settings\12-014s\My Documents\applications\Database\WindowsFormsApplication1\Form3.cs:line 34 

您定义了@Username@Password参数,但您从未在sql命令中使用过。

怎么样?

 cmd.CommandText = "INSERT INTO Accountstbl (Username, [Password]) VALUES (@Username, @Password)"; cmd.Parameters.AddWithValue("@Username", textBox1.Text); cmd.Parameters.AddWithValue("@Password", textBox2.Text); cmd.Connection = con; con.Open(); cmd.ExecuteNonQuery(); 

此外,您应该在sql命令的方括号中使用Password ,如[Password]因为它是MS Access中的reserved keyword

如果你不这样做可能会导致错误;

关键字“密码”附近的语法不正确

尝试改变这种方式

  cmd.CommandText = "INSERT INTO Accountstbl (Username, Password) VALUES (@Username,@Password)"; 

insert语句中需要一个空格:

 ssword)" + "VALUES ('" 

例如,在您的语句中,您已连接而不允许空格。

应该:

 ssword)" + " VALUES ('" 

例如。

你可以这样:

 cmd.CommandText = "INSERT INTO Accountstbl (Username, [Password]) VALUES (@Username,@Password)"; cmd.Parameters.AddWithValue("@Username", textBox1.Text); cmd.Parameters.AddWithValue("@Password", textBox2.Text); 

我希望这会奏效。

开心点。