Название: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 13:06 Доброго времени суток, All.
Вот такая конструкция: Код:
Делал так: "SELECT * FROM 'p_tovar' " И через параметр и б...я, как только не извращался >:( нифига не работает. Хотя в другой программе все пашет. ??? И это только селекты, апдейты и инсерты работают нормально. У кого какие мысли по этому поводу? Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: lit-uriy от Декабрь 04, 2008, 13:09 а если списо таблиц вывести, твоя таблица в списке будет?
(может это из-за одиночных кавычек) Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 13:12 а если списо таблиц вывести, твоя таблица в списке будет? Что имелось в виду ?(может это из-за одиночных кавычек) Если через коммандную строку то все таблицы видны. Код: sqlite> .tables Код: sqlite> SELECT id, checknumber FROM 'p_tovar' WHERE 'p_tovar'.'schkod' = '2900000113'; ругается что такой таблицы нет. Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: spirit от Декабрь 04, 2008, 13:22 попробуй запрос переписать вот так
Цитировать "SELECT id, checknumber FROM p_tovar WHERE p_tovar.schkod = :schkod" Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 14:09 попробуй запрос переписать вот так Результат тот-же. Цитировать "SELECT id, checknumber FROM p_tovar WHERE p_tovar.schkod = :schkod" Даже пробовал так: Код: QString sql(QString("SELECT id, checknumber FROM p_tovar WHERE p_tovar.schkod = %1").arg(value)); Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: spirit от Декабрь 04, 2008, 14:13 а что выдает такой запрос?
Цитировать SELECT * FROM p_tovar Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 14:18 а что выдает такой запрос? пусто.Цитировать SELECT * FROM p_tovar query.size() = -1 Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: spirit от Декабрь 04, 2008, 14:20 вопрос конечно идиотский, а база-то открыта? :)
Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 14:26 вопрос конечно идиотский, а база-то открыта? :) Код: QSqlDatabase db = QSqlDatabase::addDatabase( ParameterSQL.DriverName ); Если убрать файл базы данных то ругается (Не удалось подключиться к локальной базе данных.) Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: spirit от Декабрь 04, 2008, 14:28 а в sqlbrowser'e запросы к этой табле обрабатываются?
ps.sqlbrowser кьютишный экзампл в папке demos/sqlbrowser. Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 14:31 а в sqlbrowser'e запросы к этой табле обрабатываются? да все работает и показывает заголовки таблицы и записи.ps.sqlbrowser кьютишный экзампл в папке demos/sqlbrowser. Я же писал выше - что в других прогах работает все. Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: spirit от Декабрь 04, 2008, 14:34 напиши простенькое тестовое приложение с реальными параметрами, т.е. жестко задай имя базы, драйвер и т.д. и глянь результат.
что-то типа такого Код
Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: ритт от Декабрь 04, 2008, 14:35 похоже, что-то у тебя накосячено...
зы. вместо if (ParameterSQL.DriverName != "QSQLITE") лучше бы if (db.driverName() != "QSQLITE") Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 14:38 напиши простенькое тестовое приложение с реальными параметрами, т.е. жестко задай имя базы, драйвер и т.д. и глянь результат. Те же яйца - вид сбоку! Нифига нет.Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: ритт от Декабрь 04, 2008, 15:08 тогда прикладывай компилябельный проект - сообща победим :)
Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 15:09 тогда прикладывай компилябельный проект - сообща победим :) Кстати !Попутно выяснилось что в селектах параметры работают только числовые, если передаешь число - селект срабатывает. тескт - селект возвращает пустоту. А если вообще без параметров то муть какаятовообще - одни выдают результат другие нет. Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: spirit от Декабрь 04, 2008, 15:13 попробуй передавать в bindValue/addBindValue QVariant.
Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 15:21 C QVariant не прокатило.
Вообщем нах это все - перепишу я этот блок заново. Но кажется мне что все повториться заново. Если будут предположения попробую их реализовать. Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: spirit от Декабрь 04, 2008, 15:24 я пример постил раньше, че с ним тоже не пашет?
если нет, выложи структуру базы. Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: ритт от Декабрь 04, 2008, 15:24 а что выдает такой запрос? пусто.Цитировать SELECT * FROM p_tovar query.size() = -1 QSQLITE не поддерживает QuerySize (как и NamedPlaceholders, кстати) - поэтому тебе правильно -1 и возвращается. кури QSqlDriver::hasFeature зы. QSqlQuery query(sql, QSqlDatabase::database()) сразу выполнит запрос. надеюсь, ты не кзекаешь его тут же повторно... Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 15:45 а что выдает такой запрос? пусто.Цитировать SELECT * FROM p_tovar query.size() = -1 QSQLITE не поддерживает QuerySize (как и NamedPlaceholders, кстати) - поэтому тебе правильно -1 и возвращается. кури QSqlDriver::hasFeature зы. QSqlQuery query(sql, QSqlDatabase::database()) сразу выполнит запрос. надеюсь, ты не кзекаешь его тут же повторно... QSqlQuery query(sql, QSqlDatabase::database()) - выполняется без екзека потом :) Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 15:52 напиши простенькое тестовое приложение с реальными параметрами, т.е. жестко задай имя базы, драйвер и т.д. и глянь результат. что-то типа такого Код
Структура: Код: CREATE TABLE "p_tovar" ( "checknumber" TEXT, - это было когда я пробовал в начале сейчас я его поменял на интежер. Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 04, 2008, 16:02 Re: Константин
Цитировать QSQLITE не поддерживает QuerySize (как и NamedPlaceholders, кстати) - поэтому тебе правильно -1 и возвращается. А как же тогда отслеживать что селект вернул не пустую таблицу ?кури QSqlDriver::hasFeature Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: spirit от Декабрь 04, 2008, 16:14 в общем не знаю, что ты делаешь, но все работает
Код результат: Цитировать true true true true "2" //то что надо "checknumber2" //то что надо Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: ритт от Декабрь 04, 2008, 21:15 Re: Константин Цитировать QSQLITE не поддерживает QuerySize (как и NamedPlaceholders, кстати) - поэтому тебе правильно -1 и возвращается. А как же тогда отслеживать что селект вернул не пустую таблицу ?кури QSqlDriver::hasFeature никак. только двигаясь next()'ами до достижения вранья :) Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 05, 2008, 09:27 Блок переписал заново, изменил структуру базы данных.
Все заработало с одной поправкой: Код Так вот - если в строке 2 в параметре стоит "строка" то работает нормально, а если переменная типа QString lsValue = "строка", то возвращает пустой набор данных. Победить эту проблемму пока не удалось, пробую различные варианты конвертации в QVariant но безрезультатно. Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: spirit от Декабрь 05, 2008, 09:38 опять таки повторюсь
Код работает! :) что за версия кьюти? Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 05, 2008, 09:46 QT 4.4.3
Код Не работает !!! Код Работает ... Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: spirit от Декабрь 05, 2008, 09:49 выложи пример компилябельный.
и файл базы приклепи. Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: -QT- от Декабрь 05, 2008, 13:25 Всем спасибо за столь бурное участие в решении моей проблемы.
В общем дело я так понимаю было не в бобине :D ;D Железяка в порт скидывала строку и один непечатаемый символ в конце из 0х00 - 0х0F Ща идет борьба с железом - если победы не будет подпилим софт. :D :D Название: Re: SQLite - select возвращает пустую таблицу, а это не так ! Отправлено: Lucky_spirit от Апрель 27, 2012, 12:23 Не сочтите за ПиАр. Вижу, что тема уже старая, но всё же может кому-то поможет моя статья. Просто недавно сам мучался с запросами и в этой теме искал ответ, но сделал немного по-другому. Меньше запросов на SQL, а больше запросов самого Qt - в итоге всё удалось и работает без ошибок. Статья находится здесь: http://cpp-qt.at.ua/news/qt_i_raboty_s_bazami_dannykh_sqlite/2012-04-27-2 (http://cpp-qt.at.ua/news/qt_i_raboty_s_bazami_dannykh_sqlite/2012-04-27-2). Еще раз прошу не принимать, как спам или подобное. Если ссылку нельзя - оставьте её, как текст.
|