С# OleDBDatReader не возвращает никаких данныхC#

Место общения программистов C#
Ответить
Anonymous
 С# OleDBDatReader не возвращает никаких данных

Сообщение Anonymous »

У меня есть запрос, который отлично работает, когда я запускаю его в Oracle SQL Developer, однако тот же запрос, по-видимому, не дает результатов, когда на сцену выходит OleDbDataReadeer - когда я отлаживаю и F11 опускаюсь до " while (dr.Read( ))", он полностью пропускает его и переходит прямо к "dr.Close()". Ниже мой код;

Код: Выделить всё

con.Open();
OleDbCommand sessioncmd = new OleDbCommand();
sessioncmd.Connection = con;
sessioncmd.CommandType = CommandType.Text;
sessioncmd.CommandText =        " SELECT " +
" NEXTSESS.S_ID" +
" ,NEXTSESS.S_REFERENCE " +
" ,NEXTSESS.S_ACADEMICYEAR " +
" FROM sessiontable SESS join (select s_id, s_reference, s_academicyear,s_name from sessiontable where s_type='AYEAR' and s_academicyear>=to_char(sysdate, 'YYYY'))  nextsess " +
" on nextsess.s_academicyear = SUBSTR(SESS.S_NAME, INSTR(SESS.S_NAME, '/') + 1) " +
" WHERE S_TYPE = 'AYEAR'  " +
" AND TO_DATE(SYSDATE) between sess.s_start and sess.s_end ";

OleDbDataReader dr = sessioncmd.ExecuteReader();
while (dr.Read())
{
decimal SessID = dr.GetDecimal(0);
string SessRef = "\'" + string.Join("\', \'", dr.GetString(1)) + "\'";
string UnquotedSessRef = dr.GetString(1) ;
string SessAcademicYear = dr.GetString(2);

SessionsList.Add(new Sessions
{
S_ID = dr.GetDecimal(0),
S_REFERENCE = "\'" + string.Join("\', \'", dr.GetString(1)) + "\'",
S_ACADEMICYEAR = dr.GetString(2)
});

}
dr.Close();
В качестве теста я использовал более короткую версию запроса для текста команды (показанного ниже), который вообще возвращает другой набор результатов, но просто хотел протестировать, и это читается нормально с помощью DataReader;

Код: Выделить всё

sessioncmd.CommandText =  SELECT
SESS.S_ID
,SESS.S_REFERENCE
,SESS.S_ACADEMICYEAR
FROM sessiontable SESS
WHERE S_TYPE = 'AYEAR'
and s_academicyear=to_char(sysdate, 'YYYY') + 1
Я могу ошибаться, но буду ли я прав в том, что DataReader не принимает длинные строки? Я в растерянности, так как запрос определенно извлекает данные при запуске непосредственно в БД, и я также пытался использовать DataAdapter, но все равно безрезультатно. Любые указатели будут оценены по достоинству. Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/784 ... g-any-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»