C# 删除ms access数据库中的记录

C# 删除ms access数据库中的记录,c#,C#,我已使用此代码从MS Access数据库表中删除记录。程序正在成功运行,但未删除数据库中的记录 private void button3_Click_2(object sender, EventArgs e) { connection.Open(); OleDbCommand command = new OleDbCommand(); command.Connection = connection; String query

我已使用此代码从MS Access数据库表中删除记录。程序正在成功运行,但未删除数据库中的记录

private void button3_Click_2(object sender, EventArgs e)
    {
        connection.Open();
        OleDbCommand command = new OleDbCommand();
        command.Connection = connection;
        String query=" delete from [student table] where Name="+txtname.Text+"";
        command.CommandText= query;
       MessageBox .Show ("Data deleted");
        connection.Close();

    }

以下代码应该可以工作:

using (var myConnection = new OleDbConnection(myConnectionString))
using (var myCommand = myConnection.CreateCommand())
{
    var nameParam = new OleDbParameter("@name", txtname.Text);

    myCommand.CommandText = "DELETE FROM [student table] WHERE (Name) = @name";
    myCommand.Parameters.Add(nameParam);

    myConnection.Open();
    myCommand.ExecuteNonQuery();
}

1) 你永远不会执行命令。2) 您希望通过从不将用户提供的输入直接附加到查询语句来防范SQL注入攻击。我在Access中使用了“delete*from…”,但我记不起这是可选的还是必需的,我也不知道它是否在Access的最新版本中被修改过,所以我删除了它,但是要记住这一点在显示messagebox之前。您必须像其他人建议的那样执行查询,但我建议将Name=”“更改为like语句。如果用户提供搜索字符串,您必须进行更慷慨的匹配。在delete from语句中也没有*。还可以像dbo_学生一样访问access数据表(对于dbo模式),而不只是键入学生作为表名。这就是我在vba宏中删除记录的方式。