MS Access SQL как запрос из C#

У меня есть этот запрос для MS Access и я использую команды C# и Ole DB. Это работает на Ms Access, но когда я передаю запрос из C# с помощью OleDB, ничего не происходит. В любом случае вот мой код:

Запрос 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();
}

2 ответа

Решение

Запросы, выполняемые из самого приложения Microsoft Access, обычно используют * а также ? в качестве символов подстановки для LIKE оператор. Соединения OleDb с базой данных Access из внешнего приложения должны использовать % а также _ подстановочные знаки вместо. (Последние на самом деле являются наиболее часто используемыми подстановочными знаками в других диалектах SQL.)

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

Microsoft Jet использует символы частичного совпадения (или "подстановочные знаки") с оператором Like, которые отличаются от тех, которые используются в большинстве диалектов SQL. Символ звездочки (*) соответствует нулю или более символов и эквивалентен символу процента (%) в ANSI SQL. Другими символами частичного совпадения Microsoft Jet являются знак вопроса (?), Который соответствует любому символу в одном поле, и знак числа (#), который соответствует любой цифре в одном поле.

Другие вопросы по тегам