小弟初学Qt,还请各位大侠指教下,感激不尽。
数据库源代码如下:
void savekgxh()
{
QDir dir;
QDate date=QDate::currentDate();
QTime time=QTime::currentTime();
QString filename=QString::number(date.year())+QString::number(date.month());
filename.append(QString::number(date.day()));
if(dir.exists("/mnt/"+filename+"")==0)
dir.mkdir("/mnt/"+filename+"");
QSqlDatabase db_kgxh;
if(QSqlDatabase::contains("kgxh"))
db_kgxh = QSqlDatabase::database("kgxh");
else
db_kgxh = QSqlDatabase::addDatabase("QSQLITE","kgxh");
db_kgxh.setDatabaseName("/mnt/"+filename+"/"+"kgxh.db"+"");
db_kgxh.open();
QSqlQuery query_kgxh(db_kgxh);
query_kgxh.exec(QString("create table if not exists kgxh (")
+"TIME TEXT,"
+"ML TEXT,"
+"JX1 TEXT,"
+"JX2 TEXT,"
+"CX1 TEXT,"
+"CX2 TEXT,"
+"MCR1_enable TEXT,"
+"MCR2_enable TEXT,"
+"MCR1_dy TEXT,"
+"MCR1_dl TEXT,"
+"MCR1_cy TEXT,"
+"MCR1_bt TEXT,"
+"MCR1_wb TEXT,"
+"MCR1_yl TEXT,"
+"MCR2_dy TEXT,"
+"MCR2_dl TEXT,"
+"MCR2_cy TEXT,"
+"MCR2_bt TEXT,"
+"MCR2_wb TEXT,"
+"MCR2_yl TEXT,"
+"MCR_RE_flag TEXT"
+")");
db_kgxh.transaction();
query_kgxh.prepare("INSERT INTO kgxh (TIME,"
"ML,"
"JX1,"
"JX2,"
"CX1,"
"CX2,"
"MCR1_enable,"
"MCR2_enable,"
"MCR1_dy,"
"MCR1_dl,"
"MCR1_cy,"
"MCR1_bt,"
"MCR1_wb,"
"MCR1_yl,"
"MCR2_dy,"
"MCR2_dl,"
"MCR2_cy,"
"MCR2_bt,"
"MCR2_wb,"
"MCR2_yl,"
"MCR_RE_flag)"
"VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
query_kgxh.addBindValue(time.toString("HH:mm:ss"));
query_kgxh.addBindValue(kgxh_new[0]);
query_kgxh.addBindValue(kgxh_new[1]);
query_kgxh.addBindValue(kgxh_new[2]);
query_kgxh.addBindValue(kgxh_new[3]);
query_kgxh.addBindValue(kgxh_new[4]);
query_kgxh.addBindValue(kgxh_new[5]);
query_kgxh.addBindValue(kgxh_new[6]);
query_kgxh.addBindValue(kgxh_new[7]);
query_kgxh.addBindValue(kgxh_new[8]);
query_kgxh.addBindValue(kgxh_new[9]);
query_kgxh.addBindValue(kgxh_new[10]);
query_kgxh.addBindValue(kgxh_new[11]);
query_kgxh.addBindValue(kgxh_new[12]);
query_kgxh.addBindValue(kgxh_new[13]);
query_kgxh.addBindValue(kgxh_new[14]);
query_kgxh.addBindValue(kgxh_new[15]);
query_kgxh.addBindValue(kgxh_new[16]);
query_kgxh.addBindValue(kgxh_new[17]);
query_kgxh.addBindValue(kgxh_new[18]);
query_kgxh.addBindValue(kgxh_new[19]);
query_kgxh.exec();
db_kgxh.commit();
db_kgxh.close();
}
执行程序后,开始一切正常,但一段时间后,大概3分钟,写入的数据大概110行左右,就出现下面的错误:
QSqlDatabasePrivate::database: unable to open database: "unable to open database file Error opening database"
QSqlQuery::exec: database not open
QSqlQuery::prepare: database not open
重新启动程序后,又可以正常运行,同样大概3分钟,又出现一样的错误,重启程序后又正常。。。如此反复
请各位大侠给小弟支支招,感激不尽