The EAVCapture device needs to record its runtime log information. So for easy operation,
I choose the SQLite. It's suitable for the embedded device.
The default database file should be created automatically when the application starts at the first time.
I use the following sql statement to detect if the file is exist.
this->m_database=QSqlDatabase::addDatabase("QSQLITE"); this->m_database.setDatabaseName("EAV.db"); if(!this->m_database.open()) { qDebug()<<"open sqlite database failed!"; return; } //create table. QSqlQuery tSqlQuery(this->m_database); if(!tSqlQuery.exec("SELECT COUNT(*) FROM devlog")) { //if select is failed,then create the table. qDebug()<<"start to initial database"; if(!tSqlQuery.exec("CREATE TABLE devlog (CreateTime DATETIME,LogLevel INT,LogMessage BLOB)")) { qDebug()<<"create table failes!"; return; }else{ qDebug()<<"create table success!"; } }else{ qDebug()<<"database is already exists!"; } If the file is exist,the sql statement "select count(*) from devlog" should return zero or positive value,
otherwise the exec() function will fails and return false. I can use its return value to know if it is exist.
by zhangshaoyan at May 24,2015 night.
And codes show how to insert a log message:
QString tCreateTime=QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"); QString tSqlStatement=QString("INSERT INTO [devlog] ([CreateTime],[LogLevel],[LogMessage]) VALUES ('%1',%2,'%3')").arg(tCreateTime).arg(logLevel).arg(logMessage); QSqlQuery tSqlQuery; if(!tSqlQuery.exec(tSqlStatement)) { return -1; } return 0; (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|