Название: MySQL ошибка при выполнении запроса, возвращающего NULL Отправлено: z11t3 от Октябрь 11, 2010, 11:48 Два запроса:
Цитировать sqlQuery.prepare("SELECT * FROM ti ORDER BY tiid DESC LIMIT 1"); Вылетает следующий эксцепшн:sqlQuery.exec(); sqlQuery.next(); Archiver.countTI = sqlQuery.value(0).toInt();//полученное количество записей в текущей рабочей таблице sqlQuery.prepare("SELECT * FROM messages ORDER BY msgid DESC LIMIT 1"); sqlQuery.exec();//ВЫЛЕТАЕТ ТУТ sqlQuery.next(); Archiver.countMS = sqlQuery.value(0).toInt();//так-же для сообщений (http://img189.imageshack.us/img189/8664/47208465.th.jpg) (http://img189.imageshack.us/i/47208465.jpg/) Таблица ti содержит примерно 700к записей. Таблица messages содержит примерно 0 записей. Как обойти сей момент кодом? Пробовал: Цитировать if (sqlQuery.exec()) Что-то никак не найду в документации нужной инфы, ну не создавать же в конце концов запись в таблице =({ sqlQuery.next(); Archiver.countMS = sqlQuery.value(0).toInt();//так-же для сообщений } else Archiver.countMS = 0; Есть идея запросить размер так: Цитировать sqlQuery.prepare("SELECT COUNT(*) FROM tc"); Но она несколько не устраивает1) запрос этот дольше вышеприведенного 2) не гаратируется точность (проверено для таблиц >>1M записей) Название: Re: MySQL ошибка при выполнении запроса, возвращающего NULL Отправлено: shirushizo от Октябрь 11, 2010, 17:47 Код: f (sqlQuery.exec()) bool QSqlQuery::exec() возвращает true, если запрос выполнен успешно, даже при нулевом количестве возвращаемых записей, а bool QSqlQuery::next() возвращает true, если курсор не вышел за датасэт. Так должно сработать: Код: if (sqlQuery.next()) |