c# - 在 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 中(以句点作为分隔符,但我不知道这是否只是实用程序的一种行为)。
如果我从日期字段中省略正斜杠,它可以工作但返回零记录(即使我知道有)。
解决方案
试试这个,忘记日期时间地狱
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));
只需使用参数并忘记自己格式化它们。
该框架可以为您提供帮助并提供已经过测试并像魅力一样工作的解决方案
推荐阅读
- node.js - 在插入数据库之前删除 _id 属性(使用节点和猫鼬)
- google-cloud-sql - Google Coud SQL Postgres 数据库终止进程并进入恢复模式
- python - python将字典值保存到数据库
- javascript - 如何将国际拨号代码与输入一起提取?
- java - DynamoDB 文档字段的 DynamoDBTypeConverter
- python-3.x - 如果子包与某些系统包/模块同名,为什么 pkgutil.walk_packages() 给我错误的模块
- oauth-2.0 - 如何使用自定义配置 hyda.yaml 文件在 docker 上运行 ory/hydra
- sql - 无法解决问题“您只能在 READ COMMITTED 或 REPEATABLE READ 隔离级别中指定 READPAST 锁”
- youtube-data-api - Youtube 直播 API 给出 livePermissionBlocked 错误
- ios - 从 xcrun xctrace list devices 获取输出