Очень странное поведение OleDbDataReader

129
18 января 2020, 00:50

Всем доброго дня! Сразу суть вопроса - запрос в коде не отрабатывается верно - не приходят данные, проблема только с полем WWG_NAME, остальные варианты запросов с различными параметрами для всех других полей таблицы распознаются и способствуют возвращению корректного набора значений.

Т.е. если сформировать строку запроса и сделать запрос:

string wwgName= item.Name;
string queryString = @"SELECT WWG_PK, WWG_NAME, AWG_NAME " +
"FROM wwg_n_t WHERE WWG_NAME LIKE '*"+ wwgName+ "*';";
query = new OleDbCommand(queryString, connection);
dataReader = query.ExecuteReader();
// если есть данные
if (dataReader.HasRows)
{
    //  обработка данных
}

То dataReader.HasRows будет равен false, что изрядно меня расстраивает, т.к. если взять эту же сформированную строку запроса (из Debug), она отлично отрабатывает в конструкторе запросов MS Access и выдает 10 записей минимум. Еще больше расстраивает то, что этот код работал вчера, и переписывать всё "на адаптер Sqldata вместо sqldatreader", как советуют тут - нет совершенно никакого желания.

Конекшн вида:

OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.16.0; Data Source=" + path_to_base + ";");

Если вы сталкивались с такой некорректной работой студии/OleDb и победили их, буду очень благодарен за информацию.

Answer 1

В документации SQL server нет никакой звёздочки в LIKE:

Пишите так:

LIKE '%"+ wwgName+ "%';"; 

Хм.. а в ms access есть.

Также у вас проект поддерживает возможности c#6 по интерполяции строк, так что вы можете писать в более кратком и удобном виде:

string queryString = $@"SELECT WWG_PK, WWG_NAME, AWG_NAME FROM wwg_n_t WHERE WWG_NAME LIKE '%{item.Name}%';";
READ ALSO
Открыть новое окно/вкладку с новым пользователем

Открыть новое окно/вкладку с новым пользователем

В автотесте Есть адрес: https://flowtimeqapnmsoftlabs

111
Заполнение матрицы с помощью функции

Заполнение матрицы с помощью функции

Хотелось бы узнать, как можно заполнить элементы матрицы, используя некоторую функцию, которая генерирует числа в заданном диапазонеВ C++ данный...

93
Как получить настройку из asset

Как получить настройку из asset

У меня есть файл с конфигурацией с типом assetВ нем есть поле App license, в нее вставляется строка с ключом

133
c# foreach не корректно работает с массивом CheckBox?

c# foreach не корректно работает с массивом CheckBox?

Выходит исключение в виде названия данного портала, при отладке он бесконечно бегает внутри foreach с 1-м элементом, не переходя к остальнымС...

138