版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoxiao133/article/details/85076599
Qt链接Access数据库
参考链接:
1、https://blog.csdn.net/qq_37275429/article/details/79049448
2、https://blog.csdn.net/cibiren2011/article/details/52792476
bool QtForAccess::connectAccess(QString accdb_name)
{
m_db_name = accdb_name;
m_sqlDatabase = QSqlDatabase::addDatabase("QODBC", accdb_name);//Setting up database driver must use QSqlDatabase::addDatabase("QODBC") then m_sqlDatabase.addDatabase("QODBC")
QString connect_str = QStringLiteral("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; FIL={MS Access};DBQ=%1;").arg(accdb_name);//连接字符串
// Setting Connection Information
m_sqlDatabase.setDatabaseName (connect_str);//Set connection string
m_sqlDatabase.setUserName("");//Set the username of the login database
m_sqlDatabase.setPassword("");//Set password
//Open the database
m_isopenbase = m_sqlDatabase.open();
if(!m_isopenbase) {
QMessageBox::critical(0, QObject::tr("Database Error"),m_sqlDatabase.lastError().text());
return false;
}
else
{
// QMessageBox::information(0,"hello world","Open Database success!",QMessageBox::Ok);
}
return m_isopenbase;
}
bool QtForAccess::getAccessData()
{
QString sheet1_name = "tb_GPS原始数据", sheet2_name = "tb_BD原始数据";
if(!m_isopenbase) return false;
// select all tabel names
QStringList table_names = m_sqlDatabase.tables();
// select all data
QSqlQuery query(m_sqlDatabase);
QString select_sql = "";
// read GPS data
select_sql = QString("select * from %1").arg(sheet1_name);
query.prepare(select_sql);
if(!query.exec()) return false;
while (query.next())//Data traversing queries
{
QVector < QString > temp_line_data;
for(int i = 0; i < gps_attribute_num;i++)
{
temp_line_data.append(query.value(i).toString());
}
m_Access_GPS.append(temp_line_data);
temp_line_data.clear();
}
// read BDS data
select_sql = QString("select * from %1").arg(sheet2_name);
query.prepare(select_sql);
if(!query.exec()) return false;
while (query.next())//Data traversing queries
{
QVector < QString > temp_line_data;
for(int i = 0; i < bds_attribute_num;i++)
{
temp_line_data.append(query.value(i).toString());
}
m_Access_BDS.append(temp_line_data);
temp_line_data.clear();
}
query.clear();
m_isgetaccessdata = true;
return m_isgetaccessdata;
}