首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQL Query从Access中删除数据- C#

使用SQL Query从Access中删除数据- C#
EN

Stack Overflow用户
提问于 2017-02-20 18:49:18
回答 1查看 1K关注 0票数 0

\我在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#中的代码:

代码语言:javascript
复制
 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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-20 19:00:05

将查询中使用的值传递到数据库引擎的最佳方法是通过参数集合精确指定参数的类型

代码语言:javascript
复制
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();
}

这样,您就不需要为值的解释(从字符串到日期的转换)留出空间,而是可以准确地告诉数据库引擎您的值是什么。当然,如果指定了正确的类型,就不会出现类型不匹配错误

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42342546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档