gpt4 book ai didi

c# - 如何使用 c# 从 Microsoft Access 表中删除一行

转载 作者:行者123 更新时间:2023-12-04 05:01:26 25 4
gpt4 key购买 nike

我试过这段代码:

string sql = " DELETE FROM HotelCustomers WHERE [Room Number] =" +  textBox1.Text;
OleDbConnection My_Connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\\Users\\Documents\\HotelCustomersOld.mdb");

My_Connection.Open();

OleDbCommand My_Command = new OleDbCommand(sql, My_Connection);
My_Command.ExecuteNonQuery();

Error: Data type mismatch in criteria expression, at the line: My_Command.ExecuteNonQuery();

最佳答案

使用参数化查询来避免各种错误

   string sql = " DELETE FROM HotelCustomers WHERE [Room Number] =?";
using(OleDbConnection My_Connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\\Users\\Documents\\HotelCustomersOld.mdb"))
{
My_Connection.Open();
OleDbCommand My_Command = new OleDbCommand(sql, My_Connection);
My_Command.Parameters.Add("@p1", textBox1.Text);
My_Command.ExecuteNonQuery();
}

在您的情况下,Room NUMber 字段是 Text 类型,因此您需要将值括在单引号中,但这确实是错误的。您将代码暴露给用户在文本框中编写的恶意文本。一个很简单的 funny example here

关于c# - 如何使用 c# 从 Microsoft Access 表中删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16111366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com