Qt SQLite Insert不起作用 - 执行INSERT后表仍为空

时间:2017-09-06 09:26:45

标签: c++ qt sqlite

首先,我的数据库中只有一个表...并且INSERT,SELECT等所有操作都运行良好,然后我添加了另一个表,但我没有在第一个表上更改我的操作代码。 。 然后当我执行INSERT时,第一个表仍然是空的。 这是表模式:

QString CreateHistoryTable="CREATE TABLE History("
                        "hist_code VARCHAR(50) PRIMARY KEY,"
                        "input_data TEXT NOT NULL,"
                        "output_data TEXT NOT NULL)";

这是CREATE代码:

void CreateHistory(){
    if(!db.isOpen())
        db.open();
    // judge if table 'History' is existed. IMPORTANT.
    bool isTableExist = query.exec(QString("select count(*) from sqlite_master where type='table' and name='History';")                                   );
    if(!isTableExist)
    {
        if (!query.exec(CreateHistoryTable))
            QMessageBox::critical(0, QObject::tr("Create History Table Error"),
                                  query.lastError().text());
        query.finish();
    }
    else
        return;
}

并且正如我在SQLitemanager中看到的那样正确创建了表。 那么INSERT操作函数:

QString Insert_History="INSERT INTO History 
                     (hist_code,input_data,output_data) "
                    "VALUES (:hist_code,:input_data,:output_data);";

    void InsertHistory(){
        if(!db.isOpen())
            db.open();
        query.prepare(Insert_History);
        InputToString input2str(in_temp);
        OutputToString output2str(out_temp);
        int num=QueryRunTimes();
        QString histcode=QDateTime::currentDateTime().toString("yyyy-MM-dd")+QString::number(num,10);
        query.bindValue(":hist_code",histcode);
        query.bindValue(":input_data",input2str.getAll());
        query.bindValue(":output_data",output2str.getAll());
        if (!query.exec())
                QMessageBox::critical(0, QObject::tr("Insert History Error"),
                                      query.lastError().text());
        query.finish();
    }

调用此函数后,表仍为空...但如果我执行特定的INSERT,如:

query.exec("INSERT INTO History (hist_code,input_data,output_data) "
                        "VALUES ('1234','aaaaa','bbbbbbb';");

效果很好,这让我很困惑......

0 个答案:

没有答案