• 6338阅读
  • 1回复

关于Linux Qt下SQLite运行一段时间后的错误 [复制链接]

上一主题 下一主题
离线chengbolin
 

只看楼主 倒序阅读 楼主  发表于: 2012-06-21
关于Linux Qt下SQLite运行一段时间后的错误
关键词: QT4SQLsqliteARM
小弟初学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分钟,又出现一样的错误,重启程序后又正常。。。如此反复
请各位大侠给小弟支支招,感激不尽
离线chengbolin

只看该作者 1楼 发表于: 2012-06-21
经高人指点,删掉close()后就正常了,一个小时了,暂时没出问题,继续观察
快速回复
限100 字节
 
上一个 下一个