qt 操作orcal

来源:互联网 发布:萌牙电动牙刷 知乎 编辑:程序博客网 时间:2024/06/01 22:09

首先要有orcal qt驱动,这个库自己编

m_cimODCDB = QSqlDatabase::addDatabase(szDriver, QUuid::createUuid()); 
m_cimODCDB.setHostName(szHost); 
m_cimODCDB.setDatabaseName(szDataSource); 
m_cimODCDB.setUserName(szUser); 
m_cimODCDB.setPassword(szPassword);


if (!m_cimODCDB.open())
{
QSqlError err = m_cimODCDB.lastError();
QString adc =  err.text();
LOGGER_ERROR(m_loggerPtr, "Open CIMDB database failed");
return false;
}

批量插入



bool CimFileReader::MeasurementToDB(const QMap<int ,MEASUREMENT>& MeasurementData)
{
QSqlQuery sqlQuery(m_cimODCDB);
if (sqlQuery.isActive())
{
LOGGER_ERROR(m_loggerPtr, "insert ODC_TMP_MEASUREMENT failed, sqlquery not active.");
return false;
}


QString sql ;
sql = "INSERT INTO ODC_TMP_MEASUREMENT(RDFID,RESOURCE_ID, MESURE_NAME,TYPE_ID,DATA_SOURCE_ID, MESURE_CODE,DATA_SOURCE,SOURCE_CODE) "
"VALUES(?,?,?,?,?,?,?,?)";


if (!sqlQuery.prepare(sql))
{
LOGGER_ERROR(m_loggerPtr, "insert ODC_TMP_MEASUREMENT failed, prepare failed.");
return false;
}
QVariantList RDFIDS;
QVariantList RESOURCEIDS;
QVariantList MESURENAMES;
QVariantList TYPEIDS;
QVariantList DATASOURCEIDS;
QVariantList CODES;
QVariantList DATASOURCES;
QVariantList SOURCECODES;


for (int i =1;i<=MeasurementData.size();i++)
{
RDFIDS<<MeasurementData[i].RDFID;
RESOURCEIDS<<MeasurementData[i].RESOURCE_ID;
MESURENAMES<<MeasurementData[i].MESURE_NAME;
TYPEIDS<<MeasurementData[i].TYPE_ID;
DATASOURCEIDS<<MeasurementData[i].DATA_SOURCE_ID;
CODES<<MeasurementData[i].CODE;
DATASOURCES<<MeasurementData[i].DATA_SOURCE;
SOURCECODES<<MeasurementData[i].SOURCE_CODE;
}
sqlQuery.addBindValue(RDFIDS);
sqlQuery.addBindValue(RESOURCEIDS);
sqlQuery.addBindValue(MESURENAMES);
sqlQuery.addBindValue(TYPEIDS);
sqlQuery.addBindValue(DATASOURCEIDS);
sqlQuery.addBindValue(CODES);
sqlQuery.addBindValue(DATASOURCES);
sqlQuery.addBindValue(SOURCECODES);
if (!sqlQuery.execBatch())
{
LOGGER_ERROR(m_loggerPtr, "insert ODC_TMP_MEASUREMENT failed, execBatch failed.");
qDebug() << sqlQuery.lastError();
return false;
}
return true;
}
bool CimFileReader::ConnectivityToDB(const QMap<int ,CONNECTIVITY>& ConnectivityData)
{
QSqlQuery sqlQuery(m_cimODCDB);
if (sqlQuery.isActive())
{
LOGGER_ERROR(m_loggerPtr, "insert ODC_TMP_CONNECTIVITY failed, sqlquery not active.");
return false;
}


QString sql ;
sql = "INSERT INTO ODC_TMP_CONNECTIVITY(RDFID,CONNECTIVITY_NMAE, RESOURCE_ID,SOURCE_CODE,DATA_SOURCE_ID) "
"VALUES(?,?,?,?,?)";


if (!sqlQuery.prepare(sql))
{
LOGGER_ERROR(m_loggerPtr, "insert ODC_TMP_CONNECTIVITY failed, prepare failed.");
return false;
}
QVariantList RDFIDS;
QVariantList CONNECTIVITYNMAES;
QVariantList RESOURCEIDS;
QVariantList SOURCECODES;
QVariantList DATASOURCEIDS;


for (int i =1;i<=ConnectivityData.size();i++)
{
RDFIDS<<ConnectivityData[i].RDFID;
CONNECTIVITYNMAES<<ConnectivityData[i].CONNECTIVITY_NMAE;
RESOURCEIDS<<ConnectivityData[i].RESOURCE_ID;
SOURCECODES<<ConnectivityData[i].SOURCE_CODE;
DATASOURCEIDS<<ConnectivityData[i].DATA_SOURCE_ID;
}
sqlQuery.addBindValue(RDFIDS);
sqlQuery.addBindValue(CONNECTIVITYNMAES);
sqlQuery.addBindValue(RESOURCEIDS);
sqlQuery.addBindValue(SOURCECODES);
sqlQuery.addBindValue(DATASOURCEIDS);
if (!sqlQuery.execBatch())
{
LOGGER_ERROR(m_loggerPtr, "insert ODC_TMP_CONNECTIVITY failed, execBatch failed.");
qDebug() << sqlQuery.lastError();
return false;
}
return true;
}

执行存储过程

bool CimFileReader::TmpDBToOdc()
{
QSqlQuery sqlQuery(m_cimODCDB);
if (sqlQuery.isActive())
{
LOGGER_ERROR(m_loggerPtr, "TmpDBToOdc failed, sqlquery not active.");
return false;
}
//不存在就插入
QString sql = " call  Insert_To_BASE() ";
if (!sqlQuery.prepare(sql))
{
LOGGER_ERROR(m_loggerPtr, "prepare Insert_To_BASE failed ");
return false;
}
if (!sqlQuery.exec())
{
LOGGER_ERROR(m_loggerPtr, "Insert_To_BASE exec sqlquery failed!");
qDebug() << sqlQuery.lastError();
return false;
}

}

0 0