QT中操作資料庫(ACCESS、MySql)
阿新 • • 發佈:2019-01-30
QT自帶有QODBC Driver,在Windows平臺上通過系統提供的ODBC Driver可以訪問支援ODBC的資料庫,如Ms Access、SQL Server等 (Windows XP 自帶有Access和SQL Server的ODBC Driver)。
QT資料庫模型的基礎類是QSqlDatabase物件,擁有一個QSqlDatabase物件代表著擁有一個資料庫的連線,在一個已經Open的QSqlDatabase物件上,我們就可以執行各種資料庫操作。
要得到一個QSqlDatabase物件的方法是QSqlDatabase的靜態函式addDatabase,它建立一個新的QSqlDatabase物件,並註冊在內部的Hash表中,最後返回該物件。 (另外靜態函式database可用於查詢一個已經註冊的QSqlDatabase物件)
當我們得到一個新的還沒有Open的QSqlDatabase物件,我們要先設定資料庫的DSN(Data Source Name),DSN的設定是通過成員函式setDatabaseName,在QODBC中,DSN可以是多種形式
1、作業系統註冊的DSN名字
2、一個外部的DSN檔案
3、可以被解釋的字串
1和2我們可以在管理面板的ODBC管理面板裡面設定或者生成,但是無疑第3種形式更具備靈活性,連線Access的DSN字串具備類似的形式:
- "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=xxx.mdb"
下面是一段用於獲得某個指定的mdb檔案的資料庫
- QSqlDatabase KDBConnection::getAccessConnection(
- const QString& accessFile, const QString& userName,
- const QString& password)
- ...{
- const QString PREFIX("puremilk.access.connection");
- QString connID = PREFIX + "-" + accessFile;
- QSqlDatabase connection = QSqlDatabase::database(connID, false);
- if (connection.isValid())
- ...{
- if (connection.isOpen())
- return connection;
- }
- else
- connection = QSqlDatabase::addDatabase("QODBC", connID);
- QString dsn = QString(
- "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1").arg(accessFile);
- qDebug()<<"Get Access Database connection - "<<dsn;
- connection.setDatabaseName(dsn);
- if (!connection.open(userName, password))
- ...{
- THROW_EXCEPTION(KDBException, connection.lastError().text());
- }
- return connection;
- }
小結:QT QODBC資料庫程式設計連線詳細介紹的內容介紹完了,希望本文對你有幫助,關於資料庫的更多內容請參考編輯推薦。