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になるたびに。バグが取れません。

4

2 に答える 2

2

SQLite はそれを表示することを好み、それを列autoincrementに適用したいだけです。これは SQLite の構文エラーです。SQL は次のようになります。integerauto_increment

CREATE TABLE employees(id integer primary key autoincrement, ...
于 2012-03-17T05:47:08.603 に答える
1

QSqlQuery は、exec() が false を返す理由を見つけるのに役立ちます。QSqlError QSqlQuery::lastError () constを呼び出し、次にQString QSqlError::text () constを呼び出します。表示されるのは、データベースとドライバーによって報告されたエラーのテキストです。

于 2012-03-17T06:01:00.897 に答える