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 являются знак вопроса (?), Который соответствует любому символу в одном поле, и знак числа (#), который соответствует любой цифре в одном поле.