Название: Sqlite Create Table в QSqlQuery Отправлено: EgorRa от Август 30, 2010, 20:21 Когда делаю запрос на создание таблицы, query возвращает false. Не могу понять почему( Запрос выполняется, таблица создается, а сообщение выскакивает(
Вот листинг функции: Код: void GenerateNewBase::createTableCourse() Объясните в чем моя ошибка плизз Название: Re: Sqlite Create Table в QSqlQuery Отправлено: Пантер от Август 30, 2010, 20:35 1. Не создавай QSqlQuery в куче, но это так, к ошибке не относится.
2. Дай сюда вывод query->lastError ().text (). Нужно будет подключить #include <QtSql/QSqlError>. Название: Re: Sqlite Create Table в QSqlQuery Отправлено: EgorRa от Август 30, 2010, 20:55 Там пусто(
А почему не стоит создавать запрос в куче? Название: Re: Sqlite Create Table в QSqlQuery Отправлено: Пантер от Август 30, 2010, 20:58 Как подключаешься к базе? Данной таблицы в ней точно нет?
Название: Re: Sqlite Create Table в QSqlQuery Отправлено: BRE от Август 30, 2010, 20:59 Там пусто( А зачем? Что бы его потом удалить через delete? :)А почему не стоит создавать запрос в куче? Название: Re: Sqlite Create Table в QSqlQuery Отправлено: Пантер от Август 30, 2010, 21:09 Там пусто( А зачем? Что бы его потом удалить через delete? :)А почему не стоит создавать запрос в куче? Название: Re: Sqlite Create Table в QSqlQuery Отправлено: EgorRa от Август 30, 2010, 21:12 Как подключаешься к базе? Данной таблицы в ней точно нет? Я создаю весь файл заново: Код: bool checkAvailabilityDatabase(const QString baseName) GenerateNewBase.cpp Код:
Типа, если файла нет, то создаю его. Естественно для создания нужной ситуации я его удаляю базу перед запуском. Название: Re: Sqlite Create Table в QSqlQuery Отправлено: BRE от Август 30, 2010, 21:16 Код
Название: Re: Sqlite Create Table в QSqlQuery Отправлено: Пантер от Август 30, 2010, 21:18 Блин, опередил. :)
Название: Re: Sqlite Create Table в QSqlQuery Отправлено: Пантер от Август 30, 2010, 21:19 Проверку на наличие базы можешь не делать. Если база создана и созданы таблицы, повторное их создание просто проигнорируется.
Название: Re: Sqlite Create Table в QSqlQuery Отправлено: EgorRa от Август 30, 2010, 21:25 Код
упс))) завтыкал(( ошибку исправил Код: QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","localConnect"); но результат не изменился((( Проверку на наличие базы можешь не делать. Если база создана и созданы таблицы, повторное их создание просто проигнорируется. В данной программе мне важно сообщить пользователю об отсутствии файла)))База создается, таблица создается. А ошибка все равно выскакивает( Название: Re: Sqlite Create Table в QSqlQuery Отправлено: Пантер от Август 30, 2010, 21:36 Сделай небольшой компилябельный пример с данной ошибкой и сюда выложи.
Название: Re: Sqlite Create Table в QSqlQuery Отправлено: BRE от Август 30, 2010, 21:46 А что сообщает lastError() после выполнения exec()?
Название: Re: Sqlite Create Table в QSqlQuery Отправлено: EgorRa от Август 30, 2010, 22:24 Сделай небольшой компилябельный пример с данной ошибкой и сюда выложи. ВотНазвание: Re: Sqlite Create Table в QSqlQuery Отправлено: EgorRa от Август 30, 2010, 22:25 А что сообщает lastError() после выполнения exec()? Там пусто( Нашел ошибку)) все оказалось так просто(((( if(!query->exec("CREATE TABLE course(course_pk INTEGER PRIMARY KEY, name TEXT, number INTEGER NOT NULL," " position INTEGER NOT NULL UNIQUE)")); Название: Re: Sqlite Create Table в QSqlQuery Отправлено: Kuper от Сентябрь 21, 2010, 14:26 А что сообщает lastError() после выполнения exec()? Там пусто( Нашел ошибку)) все оказалось так просто(((( if(!query->exec("CREATE TABLE course(course_pk INTEGER PRIMARY KEY, name TEXT, number INTEGER NOT NULL," " position INTEGER NOT NULL UNIQUE)")); А можно для тех кто на бронепоезде, в чем ошибка была? Только в "." и "->"? Аналогичная ситуация: db = QSqlDatabase::addDatabase("QSQLITE", "LocalConnaction"); db.setDatabaseName(QString("TestDB")); if (db.open()) { QSqlQuery query(QSqlDatabase::database("LocalConnaction")); if ( query->exec("CREATE TABLE test(id INTEGER)") ) { ui->TBStatus->setText("Fail. Query error: " + query.lastError().text() + "DB error: " + db.lastError().text()); } else { ui->TBStatus->setText("Query OK"); } } Получаю следующий текст: Fail. Query error: DB error: (Т.е ошибок нет) Название: Re: Sqlite Create Table в QSqlQuery Отправлено: BRE от Сентябрь 21, 2010, 14:31 А так компилируется?
Название: Re: Sqlite Create Table в QSqlQuery Отправлено: Kuper от Сентябрь 21, 2010, 14:36 А так компилируется? Сорри. Стоило запостить сообщение, что бы понять свою ошибку. 2 ошибки. 1. query->exec конечно же не компилится, это я проверял и забыл убрать. Правильно query.exec 2. Получаю следующий текст: Fail. Query error: DB error: (Т.е ошибок нет) потому, что логику не правильно написал. Правильно if ( !query.exec("CREATE TABLE test(id INTEGER)") ) |