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; 
} 

때마다 이됩니다. 나는 벌레를 얻을 수 없다.QtSql이 쿼리를 실행할 수 없습니다.

답변

2

SQLite는 autoincrement을보고 선호하며 integer 열에만 적용하려는 경우 auto_increment은 SQLite의 구문 오류입니다. 귀하의 SQL은 다음과 같아야합니다 :

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

** CHARSET ** 및 ** auto_incremnt **의 커팅으로 관리했습니다. Btw, ** autoincrement **도 작동하지 않습니다. – Dewsworld

+1

http://sqlite.org/autoinc.html 참조 – Bill

+0

당신의'CREATE TABLE employees (id int 기본 키 auto_increment, lastname varchar (255), firstname varchar (255), department int)'는' sqlite3' CLI 도구를 사용하면 위와 같이 변경하면 제대로 작동합니다. 나는 또한 int를 정수로 변경했다. –