7

我对 Ms Access 和我使用 C# 和 Ole DB 命令有此查询。它适用于 Ms Access 但是当我使用 OleDB 从 C# 传递查询时,什么也没发生。无论如何,这是我的代码:

SQL查询

SELECT * FROM tblIssue WHERE  id LIKE '*2*' AND dateChecque LIKE '**'AND +
issueTo LIKE '**' AND byTheName LIKE '**' AND bankName LIKE '**' AND accountNo LIKE '**' +
AND checqueNo LIKE '**' AND amount LIKE '**' AND being LIKE '**'   AND whoDeleted LIKE '**' +
AND whyDeleted LIKE '**' AND dateCreated LIKE '**';

C# 代码

try
{
    DataTable newDt = new DataTable();
    OleDbDataAdapter newSda = new OleDbDataAdapter(sqlQuery , conn);
    newSda.Fill(newDt);

    if (newDt.Rows.Count > 0)
    {
        dataGridView1.DataSource = newDt.DefaultView;
        _hasData = true;
    }
    else
    {
        _hasData = false;
    }
}
catch (Exception error)
{
    MessageBox.Show(error.ToString()); conn.Close();
}
4

2 回答 2

11

从 Microsoft Access 应用程序本身执行的查询通常使用*?作为LIKE运算符的通配符。从外部应用程序到 Access 数据库的 OleDb 连接应改用通配符%_通配符。(后者实际上是其他 SQL 方言中比较常用的通配符。)

于 2013-06-08T14:10:07.087 回答
1

来自http://technet.microsoft.com/en-us/library/cc966377.aspx

Microsoft Jet 将部分匹配(或“通配符”)字符与 Like 运算符一起使用,这与大多数 SQL 方言中使用的字符不同。星号 (*) 字符匹配零个或多个字符,相当于 ANSI SQL 中的百分号 (%) 字符。其他 Microsoft Jet 部分匹配字符是问号 (?),它匹配单个字段中的任何字符,以及数字符号 (#),它匹配单个字段中的任何数字。

于 2013-09-27T13:09:00.633 回答