2012-03-17 3 views
2
#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; 
} 

Каждый раз, когда я получаю false. Я не могу получить ошибку.QtSql не может выполнить запрос

ответ

2

SQLite предпочитает видеть autoincrement и только хочет применить его к integer столбцам, auto_increment является синтаксической ошибкой с SQLite. Ваш SQL должен выглядеть так:

CREATE TABLE employees(id integer primary key autoincrement, ... 
+0

Мне удалось разрезать ** CHARSET ** и ** auto_incremnt **. Btw, ** автоинкремент ** тоже не работает. – Dewsworld

+1

См. Http://sqlite.org/autoinc.html – Bill

+0

Ваши сотрудники CREATE TABLE (первичный ключ id int auto_increment, lastname varchar (255), firstname varchar (255), department int) 'дает мне синтаксическую ошибку в' sqlite3' CLI tool, изменяя его, как указано выше, делает его работоспособным. Я также изменил 'int' на' integer'. –