Exemple #1
0
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");

}
Exemple #2
0
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);
}