天天看點

Qt實用技巧:Qt連接配接SQL Server資料庫(需要配置ODBC)

若該文為原創文章,未經允許不得轉載

各位讀者,知識無窮而人力有窮,要麼改需求,要麼找專業人士,要麼自己研究

紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結合等等)持續更新中…(點選傳送門)

​​Qt開發專欄:實用技巧(點選傳送門)​​

需求

        指定使用sql server資料庫,qt連接配接sql server進行查詢操作。

原理

        qt使用odbc驅動連接配接sql server資料庫。

配置ODBC以及測試資料源

第一步:控制台搜尋ODBC資料源

Qt實用技巧:Qt連接配接SQL Server資料庫(需要配置ODBC)

第二步:添加odbc,已有則不添加,點選配置

Qt實用技巧:Qt連接配接SQL Server資料庫(需要配置ODBC)

第三部:配置ODBC向導

Qt實用技巧:Qt連接配接SQL Server資料庫(需要配置ODBC)

第四步:擷取伺服器名稱

Qt實用技巧:Qt連接配接SQL Server資料庫(需要配置ODBC)

第五步:使用配置的sa帳号登入

Qt實用技巧:Qt連接配接SQL Server資料庫(需要配置ODBC)

第六步:配置ODBC伺服器的資料庫

Qt實用技巧:Qt連接配接SQL Server資料庫(需要配置ODBC)

第七步:配置完成

Qt實用技巧:Qt連接配接SQL Server資料庫(需要配置ODBC)

第八步:配置成功

Qt實用技巧:Qt連接配接SQL Server資料庫(需要配置ODBC)

第九步:點選“測試資料源“,測試成功表示資料庫連接配接沒有問題

Qt實用技巧:Qt連接配接SQL Server資料庫(需要配置ODBC)

關鍵代碼

啟動時連接配接資料庫

void MainWindow::init()
{
    _sqlServer.setDataBasetName("localhost", "dictionary", "sa", "123456");
    if(!_sqlServer.connectToSqlServer())
    {
        QMessageBox::warning(this, QString::fromLocal8Bit("錯誤"), QString::fromLocal8Bit("資料庫連接配接錯誤,詞典将無法正常使用!!!"));
    }
}      
void SqlServer::setDataBasetName(QString server, QString database, QString uid, QString pwd)
{
    _server = server;
    _database = database;
    _uid = uid;
    _pwd = pwd;
}      
bool SqlServer::connectToSqlServer()
{
#if 0
    // 方法一:嘗試成功
    _db = QSqlDatabase::addDatabase("QODBC");
    _db.setHostName(_server);
    _db.setDatabaseName(_database);
    _db.setUserName(_uid);
    _db.setPassword(_pwd);
#else
    // 方法二:嘗試成功:注意對于express版本的資料庫,SERVER字段後面一定要加\\sqlexpress,否則連接配接不上
    _db = QSqlDatabase::addDatabase("QODBC");
    QString strConnect = QString("Driver={SQL Server};"
                                 "SERVER=%1\\sqlexpress;"
                                 "DATABASE=%2;"
                                 "UID=%3;"
                                 "PWD=%4;")
                  .arg(_server)
                  .arg(_database)
                  .arg(_uid)
                  .arg(_pwd);
    _db.setDatabaseName(strConnect);
#endif
    if(!_db.open())
    {
        emit error(_db.lastError().databaseText());
        return false;
    }else{
        emit connctedToSqlServer();
        return true;
    }
}      

繼續閱讀