【Qt鏈接Access】Qt5.8.0鏈接Access數據庫

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章