插入语句中的语法错误.c#

本文关键字:错误 语法 语句 插入 | 更新日期: 2023-09-27 18:04:32

当我试图更新我的MS Access数据库时,插入语句发生语法错误。

  • 数据库名称= student
  • 表名=学生表
代码:

private void button1_Click(object sender, EventArgs e)
{           
        connection.Open();
        OleDbCommand command = new OleDbCommand();
        command.Connection = connection;
        command.CommandText = "INSERT INTO student table([Name],[Class])" + "values('" + textBox1 + "','" + textBox2 + "')";
        connection.Close();
        command.ExecuteNonQuery();
        MessageBox.Show("Data Saved");           
}

插入语句中的语法错误.c#

如果您的表名不止一个单词,您需要使用方括号,如[student table]

但更重要的是,您应该始终使用参数化查询。这种字符串连接容易受到SQL注入攻击。

使用using语句自动处理连接和命令,而不是手动调用CloseDispose方法。

private void button1_Click(object sender, EventArgs e)
{
    using(var connection = new OleDbConnection(connection))
    using(var command = connection.CreateCommand())
    {
        command.CommandText = @"INSERT INTO [student table]([Name],[Class]) 
                                VALUES(?, ?)";
        command.Parameters.AddWithValue("?", textBox1);
        command.Parameters.AddWithValue("?", textBox2);
        connection.Open();
        int count = command.ExecuteNonQuery(); 
        if(count > 0)
           MessageBox.Show("Data Saved");  
    }        
}

顺便说一下,我怀疑如果这些textBox1textBox2TextBox不是一个变量,你需要使用它们与它们的.Text属性。

  • 1你需要使用textBox1.TexttextBox2.Text代替textBox1textBox2

  • 第二,在执行命令前不要关闭连接。

  • 第三次使用参数

总结一下:

OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "INSERT INTO [student table] ([Name],[Class]) values(@par1,@par2)";
command.Paramaters.Add("@par1",textBox1.Text);  
command.Paramaters.Add("@par2",textBox2.Text);    
command.ExecuteNonQuery();
connection.Close();