在介紹QT與數據的鏈接問題上,我在這里就不介紹關於QT環境與mysql、sqlite3環境的安裝步驟了,以下的所有的操作都是建立在你已經安裝了所有環境的基礎上的。好的,那我們就具體來看一看QT環境中怎么與數據進行鏈接
一、QT鏈接sqlite3:
QT鏈接sqlite3比較簡單,比如你在你的計算機上已經創建了一個叫users的數據庫,這時你需要在QT創建一個項目,在進行數據庫的鏈接之前需要在工程文件(也就是你的.pro文件)中添加
QT += sql
他表示在QT中增加對數據的支持,接下來在項目中增加如下代碼:

1 db = QSqlDatabase::addDatabase ("QSQLITE"); 2 db.setDatabaseName ("users"); 3 if(!db.open ()){ 4 qDebug() << db.lastError ().text (); 5 }else{ 6 qDebug() << "open database sucessful"; 7 }
當然這邊的db是聲明在頭文件的一個QSqlDatabase的一個類型,這樣如果你按上邊的寫法去做的話,你會發現,你打開數據是100%成功,因為,在打開數據的時候,如果沒有他會在你的項目的構建文件中默認創建一個為空的users的數據庫文件,如下圖:
所以你必須要將操作的數據庫文件放到該目錄下就可以了。。。
二、QT鏈接mysql數據庫
因為mysql數據庫的操作是無法將數據庫文件放到構建目錄下的,所以他和sqlite3鏈接QT有些許的不同,QT鏈接mysql的的代碼為:

1 db = QSqlDatabase::addDatabase ("QMYSQL"); //mysql的數據庫驅動 2 db.setUserName ("root"); //設置操作數據庫用戶名 3 db.setPassword ("12345"); //用戶密碼 4 db.setHostName ("127.0.0.1"); //設置主機名,我們這邊測試使用本機地址 5 db.setDatabaseName ("wyf"); //設置操作的數據庫名字 6 db.setPort (33333); //設置端口號(一般默認為3306,我進行了手動的更改) 7 if(!db.open()){ 8 qDebug() << db.lastError ().text (); 9 }else{ 10 qDebug() << "open database sucessful"; 11 }
你會發現鏈接不上mysql數據庫,會有如下的提示:
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 "Driver not loaded Driver not loaded"
這時你需要把mysql的安裝路徑,找到mysql的驅動程序libmysql.dll
將他拷貝到你的項目中的可執行文件的目錄下:
接下來,再次運行程序,發現已經可以鏈接上了。。。