\我在access数据库表(数据)中有三列,如下所示

我只想根据SQL查询中WHERE子句中的两个条件删除一些行;例如,delete row when NAME = "A“and Date = "1/1/2017”
我使用了DELETE from DATA Where Name='A' and Date='1/1/2017',这给出了“类型不匹配错误”!
以下是C#中的代码:
using (OleDbConnection thisConnection = new OleDbConnection(connectionname))
{
string deletequery = " DELETE FROM DATA WHERE [Name] = 'A' And [Date] = '1/1/2017';
OleDbCommand myAccessCommandDelete = new OleDbCommand(deletequery, thisConnection);
thisConnection.Open();
myAccessCommandDelete.ExecuteNonQuery();
thisConnection.Close();
}发布于 2017-02-20 19:00:05
将查询中使用的值传递到数据库引擎的最佳方法是通过参数集合精确指定参数的类型
using (OleDbConnection thisConnection = new OleDbConnection(connectionname))
{
string deletequery = @"DELETE FROM DATA WHERE [Name] = @name And
[Date] = @date";
OleDbCommand myAccessCommandDelete = new OleDbCommand(deletequery, thisConnection);
thisConnection.Open();
myAccessCommandDelete.Parameters.Add("@name", OleDbType.VarWChar).Value = "A";
myAccessCommandDelete.Parameters.Add("@date", OleDbType.Date).Value = new DateTime(2017,1,1);
myAccessCommandDelete.ExecuteNonQuery();
// not needed -> thisConnection.Close();
}这样,您就不需要为值的解释(从字符串到日期的转换)留出空间,而是可以准确地告诉数据库引擎您的值是什么。当然,如果指定了正确的类型,就不会出现类型不匹配错误
https://stackoverflow.com/questions/42342546
复制相似问题