首页 > 解决方案 > 在 C# 中查询 dBase 文件

问题描述

我的问题特别是我无法按日期字段过滤。

这是我的代码:

string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Tools;Extended Properties=dBASE IV;User ID=Admin;Password=;";

using (OleDbConnection con = new OleDbConnection(connstr))
{
    string sql = "select USERNUMBER,FIRSTNAME,LASTNAME, LASTACCESS from EMP WHERE TERMINATED=\"Y\" AND [LASTACCESS]<\"2001/10/20\"";
    OleDbCommand cmd = new OleDbCommand(sql, con);

    con.Open();
    OleDbDataReader reader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

如果我省略日期字段,它工作正常。我只是无法弄清楚格式是什么。如果我使用 dbf 查看器实用程序查看表,则 LASTACCESS 字段位于 dd.mm.yyyy 中(以句点作为分隔符,但我不知道这是否只是实用程序的一种行为)。

如果我从日期字段中省略正斜杠,它可以工作但返回零记录(即使我知道有)。

标签: c#dbase

解决方案


试试这个,忘记日期时间地狱

string sql = "select USERNUMBER,FIRSTNAME,LASTNAME, LASTACCESS from EMP WHERE TERMINATED=\"Y\" AND [LASTACCESS]<@StartDate";
OleDbCommand cmd = new OleDbCommand(sql, con);
cmd.Parameters.AddWithValue("@StartDate", new DateTime(2001, 10, 20));

只需使用参数并忘记自己格式化它们。

该框架可以为您提供帮助并提供已经过测试并像魅力一样工作的解决方案


推荐阅读