C# 删除ms access数据库中的记录
我已使用此代码从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
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宏中删除记录的方式。