QtSql не может выполнить запрос
#include <QtGui>
#include <QtSql>
#include <QDebug>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("test");
db.setDatabaseName("firma");
db.setUserName("user");
db.setPassword("pass");
if (!db.open()) {
qDebug() << db.lastError();
return 1;
}
QSqlQuery query;
bool ret = query.exec("CREATE TABLE employees(id int primary key auto_increment, lastname varchar(255), firstname varchar(255), department int) ");
qDebug() << ret << endl;
}
Каждый раз, когда я получаю ложь. Я не могу получить ошибку.
2 ответа
Решение
SQLite предпочитает видеть autoincrement
и только хочет применить его к integer
колонны, auto_increment
это синтаксическая ошибка с SQLite. Ваш SQL должен выглядеть так:
CREATE TABLE employees(id integer primary key autoincrement, ...
QSqlQuery может помочь вам выяснить, почему exec() возвращает false. Вызовите QSqlError QSqlQuery:: lastError () const, затем QString QSqlError:: text () const. То, что вы получите, - это текст ошибки, сообщенный базой данных и драйвером.