2013-06-08 3 views
4

У меня есть этот запрос для Ms Access и im, используя команды C# и Ole DB. Он работает на Ms Access, но когда я передаю запрос с C# с помощью OleDB, ничего не произошло. Во всяком случае, вот мой код:MS Access SQL LIKE-запрос от 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(); 
} 
+0

Nothings происходит? Вы получили сообщение об ошибке? Вы действительно выполнили запрос или просто сохранили его в переменной 'sqlQuery'? –

+0

Whe n Я запускаю запрос из Ms Access, его выполнил, но когда я использовал этот запрос для C#, ничего не происходит. Нет ошибки. Хорошо, я отредактирую свой код. – ViFer

+0

Можете ли вы предоставить больше кода? –

ответ

7

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

+0

Спасибо! Теперь его работа. Фактически я использовал% до, но я изменил его на * после некоторых исследований о доступе. – ViFer

+0

Извините, что я не могу проголосовать. Моя репутация - это всего лишь 8. И кто-то изменил мой вопрос. :( – ViFer

+0

Вау! Как получилось? Хе-хе! Голосовать до конца! :) – ViFer

1

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

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