void BD::UpdateDataBase() { QString str; QSqlQuery query; QString version; version = getDatabaseVersion(); if (version == "1.5"){ str = "UPDATE version SET version = '01.05.000' WHERE version = 1.5"; if (!query.exec(str)) { qDebug()<<query.lastError(); LogOut.logout(query.lastError().text()); } UpdateDataBase(); return; } QDir dir_with_sql("./update_db"); QStringList filters; QStringList list_with_sql; QStringList list_update; filters << "??_??_???.sql"; list_with_sql = dir_with_sql.entryList(filters,QDir::Files,QDir::Name); QString major; QString minor; QString subversion; major = version.left(2); minor = version.mid(3,2); subversion = version.right(3); for(int i = 0;i < list_with_sql.count();i++){ if(list_with_sql.at(i).left(2).toInt() > major.toInt()){ list_update << dir_with_sql.absoluteFilePath(list_with_sql.at(i)); }else if(list_with_sql.at(i).left(2).toInt() == major.toInt()){ if(list_with_sql.at(i).mid(3,2).toInt() > minor.toInt()){ list_update << dir_with_sql.absoluteFilePath(list_with_sql.at(i)); }else if (list_with_sql.at(i).mid(3,2).toInt() == minor.toInt()){ if((list_with_sql.at(i).mid(6,3).toInt() > subversion.toInt())){ list_update << dir_with_sql.absoluteFilePath(list_with_sql.at(i)); } } } } for (int i=0;i<list_update.count();i++){ if (!RunScript(list_update.at(i))){ qDebug() << "Error run " << list_update.at(i); }else{ qDebug() << "run script" << list_update.at(i); } } QueryExecute("VACUUM"); }
void KLineProdcut::UpdateData(const KlineInfo2& klineInfo) { //对数据进行加锁处理 _rwlock.wrlock(); KlineInfoList::iterator pos = _klineInfolist.find(klineInfo._stockTime); if (pos != _klineInfolist.end()) { pos->second._open = klineInfo._open; pos->second._close = klineInfo._close; pos->second._high = klineInfo._high; pos->second._low = klineInfo._low; } else { dzlog_warn("插入数据失败!%s", QuoteUtils::timeToFmt(klineInfo._stockTime).c_str()); } _rwlock.unlock(); UpdateDataBase(klineInfo); }