У меня есть запрос, который, кажется, возвращает неправильные данные из OleDbDataReader.Я включил фактический код ниже (с измененным идентификатором пользователя и паролем).Я работаю на Oracle Express 10g.
Если я запускаю приведенный ниже SQL-код в Oracle Web Admin Utility из Toad или если я изменяю приведенный ниже код на OracleConnection, все 4 возвращаемые записи имеютзначения в столбце «answer_text».
Однако из OleDbDataReader этот код создает исключение для второй записи, где он возвращает ноль для «answer_text» вместо ожидаемого значения: «Это второе открытое окнозаконченный комментарий. Теперь все становится по-настоящему сумасшедшим. "
Данное поле определено как CLOB в базе данных.
Итак, мой вопрос, является ли поставщик OraOLEDB просто ненадежным?Это действительно грязное поведение.3 из 4 записей возвращают данные правильно.Простое изменение OracleConnection с помощью OleDbConnection и удаление «Provider» из строки подключения, кажется, работает нормально.
Я не думаю, что мой клиент хочет сделать это, однако, по причинам распространения / поддержки.Oracle - только один из 4 поставщиков баз данных, которых мы поддерживаем, и этот код отлично работает для остальных.
Это известная ошибка?Есть какие-то тайные настройки, которые мне не хватает?У меня нет особого опыта работы с Oracle, и я не смог найти ничего из поиска этой проблемы.Любой совет будет оценен.
var connection = new OleDbConnection("Provider=OraOLEDB.Oracle;Data Source=localhost;User Id=x;Password=x;");
connection.Open();
var command = connection.CreateCommand();
command.CommandText = "select response_id, item_id, subitem_id, answer_id, answer_text, other_text, column_answer_id from sur_response_answer where item_id in (180, 181)";
var reader = command.ExecuteReader();
while (reader.Read())
{
if (reader.IsDBNull(reader.GetOrdinal("answer_text")))
throw new Exception("This should not be happening");
}