c# - asp.net oledb命令返回所有行

标签 c# asp.net ms-access

我正在使用 Oledbconnection 连接到 Microsoft Access 数据库,并使用 OleDbCommand 检索一些信息。我在数据库中有一个名为retrieveInfo 的查询,它检索3 行数据。字段中有一些重复项,但这就​​是它应该的样子。我的数据如下所示:

 Name          Email
 A             A@gmail.com
 B             A@gmail.com
 B             C@gmail.com

我的 C# 代码如下所示:

DataTable dt = new DataTable();
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
    string query = "SELECT * FROM retrieveInfo";
    try
    {
        conn.Open();
        DataTable info = new DataTable();
        OleDbCommand command = new OleDbCommand(query, conn);
        OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command);
        info.Clear();
        dataAdapter.Fill(info);
    }

我在 MS Access 中运行了查询retrieveInfo,它返回了 3 行,如上所示。但是,当我使用 C# 运行此命令并将数据加载到数据表中时,它只显示 2 行。数据表只有第一行和第二行。不知道这和原来的表属性有什么关系,还是我的C#代码写错了?我还尝试使用数据读取器、执行读取器并使用 while 循环来读取数据。但它也只返回 2 行。

如有任何帮助,我们将不胜感激!

谢谢

最佳答案

您有可能在retrieveInfo 定义中的某处使用“LIKE”语句,无论是在该查询本身还是在其子查询之一中。 OleDbDataAdapter 无法解析 MS Access LIKE 语句,因为它是用 Access SQL 编写的。您需要使用 ANSI LIKE(请参阅链接)。

Stackoverflow Explanation

现在我用

Like "oldmcdonal%" Or Like "oldmcdonal*"

无论是在 MS Access 中还是通过 .net 代码执行,这都会提供预期的结果集。

关于c# - asp.net oledb命令返回所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39301755/

相关文章:

c# - 存储到表达式中时枚举的类型是什么

c# - 不使用 try/catch 自动记录未处理的异常

c# - 在 Windows Phone 后台播放音频

c# - 为什么我在尝试创建用户时收到无效对象名称错误?

asp.net - HttpUtility.UrlEncode() 可以防止开放重定向攻击吗?

c# - 如何将外部 .exe 添加到我的 C# 项目中?

c# - 如何将以毫秒为单位的日期时间插入到 Access 数据库中?

C# 将 MS Access 数据库同步到 sql server

c# - 你如何为单元测试最小化一个类

c# - 异步死锁?