首先,我的数据库中只有一个表...并且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';");
效果很好,这让我很困惑......