Здравствуйте, гость ( Вход | Регистрация )
reich | Дата 21.8.2009, 13:19 |
Так столбцов все-таки 13 или 12? Если 12, то ты обращаешься к несуществующему (нумерация с 0 же). Что выдаст это:
столбцов всего 29. Но после обращения к 12-му все идет коту под хвост И на будущее. Не пользуйся такими конструкциями: for ( int i = 0; i < dbq.numRowsAffected(); i++ ) Здесь функция numRowsAffected() будет вычисляться при каждой итерации. Именно в этой ситуации либо инициализируй переменную до цикла, либо используй while(dbq.next()). Во-вторых функция numRowsAffected() не для SELECT-Statement, а для UPDATE, DELETE... Для SELECT есть size(), если драйвером поддерживается При моем запросе size() возвращает -1 MoPDoBoPoT, изменил конструкцию с
на
все заработало. Спасибо. |
|
MoPDoBoPoT | Дата 21.8.2009, 13:11 |
Так столбцов все-таки 13 или 12? Если 12, то ты обращаешься к несуществующему (нумерация с 0 же). Что выдаст это:
И на будущее. Не пользуйся такими конструкциями: for ( int i = 0; i < dbq.numRowsAffected(); i++ ) Здесь функция numRowsAffected() будет вычисляться при каждой итерации. Именно в этой ситуации либо инициализируй переменную до цикла, либо используй while(dbq.next()). Во-вторых функция numRowsAffected() не для SELECT-Statement, а для UPDATE, DELETE... Для SELECT есть size(), если драйвером поддерживается |
|
reich | Дата 21.8.2009, 11:19 |
Если взять вот такой вот код(выборка та же, что и в предыдущем посте), то корректно работает только до qDebug() << dbq.value( 11 ); QSqlQuery::numRowsAffected() возвращает 2 Если не получать 12-й элемент, то нормально проходит 2 итерации цыкла. А если с 12-м элементом, то только 1 итерация
|
|
reich | Дата 21.8.2009, 10:43 |
БД: MSSQL Qt 4.5.2 Windows XP sp2 Пытаюсь взять данные из MSSQL. Тип поля text. Есть класс для работы с БД, который содержит метод для получения значения ячейки:
dbq - QSqlQuery Вызываю его таким образом:
12 - столбец в таблице БД. dt - структура. resume_dmpt_long - QString; Запрос большой, все значения получаю нормально, а вот при получении этого значения(поле text) происходит непонятно что. Например, запрос возвращает 2 строки. Все записывается в структуру нормально, если заэкранировать получение этого поля text. Если не экранировать, то в цыкле получения данных происходит только первая итерация и затем выход из цыкла. В чем тут может быть проблема? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 15:17 |