由於畢設需要用到QT讀取資料庫中的數據,並將數據保存至資料庫中。花了一天的時間,總算實現了從QT中讀取資料庫中的數據。網上相關資料很多,但是寫得不是很全,中間出現了一些問題,解決起來比較麻煩。所以本文從MYSQL下載、安裝,QT連接MYSQL儘可能寫詳細,若有不足,還請見諒。 1、QT5.5下載 本 ...
由於畢設需要用到QT讀取資料庫中的數據,並將數據保存至資料庫中。花了一天的時間,總算實現了從QT中讀取資料庫中的數據。網上相關資料很多,但是寫得不是很全,中間出現了一些問題,解決起來比較麻煩。所以本文從MYSQL下載、安裝,QT連接MYSQL儘可能寫詳細,若有不足,還請見諒。
1、QT5.5下載
本文使用的 windows32 QT5.5 版本為(qt-opensource-windows-x86-mingw492-5.5.10),可從我的百度雲:https://pan.baidu.com/s/1XsVmgd3Qd-J0BHPVOtMVkA下載
若選用高版本,具體安裝方法可自行百度。
2、MYSQL5.6下載
由於QT選用的Windows32位,所以MYSQL也應選擇Windows32位版本為mysql-5.6.39-win32.zip。(若QT選擇的為Windows64位,則MYSQL應選擇Windows64位),
可從我的百度雲:https://pan.baidu.com/s/1XsVmgd3Qd-J0BHPVOtMVkA下載。
若選用高版本,具體下載方法可自行百度。
3、MYSQL5.6安裝
1)將mysql-5.6.39-win32.zip解壓至D盤中的MYSQL SERVER,且重命名為mysql-5.6。解壓修改後的結果如圖1-1所示。
圖1-1
2)修改my-default.ini,修改後如圖1-2所示
圖1-2
3)增加環境變數。右鍵我的電腦,點屬性,點高級系統設置,點環境變數,在PATH中添加 ;D:\MYSQL SERVER\mysql-5.6\bin(分號不要忘了,根據自己的安裝目錄改寫),點擊確認就行。
4)在C盤中找到cmd.exe,並以管理員許可權打開。分別執行以下指令:
d:
cd MYSQL SERVER\mysql-5.6\bin
mysqld -initalize -user=mysql -console
mysqld -install,輸入該指令後會列印 Service successfully installed
net start mysql,輸入該指令後會列印MySQL服務已經啟動成功。至此MYSQL5.6已經安裝成功,並且已運行。
4、MYSQL登陸與修改密碼
1)在cmd.exe軟體中,繼續輸入SQL相關指令:
mysql -u root -p,輸入該指令後出現 Enter password: ,第一次登陸直接回車,進入mysql軟體。如圖1-3
圖1-3
2)增加root的密碼。
mysql> set password for root@localhost=password('88888888');
輸入該指令後ront 的密碼變為88888888。(在編寫QT程式中需要用到用戶名為root和密碼為88888888)
mysql>exit
輸入該指令後退出。
重新登陸,輸入 mysql -u root -p,輸入該指令後出現 Enter password: ,輸入88888888。若輸入密碼不是88888888,則會出現報錯,如圖1-4所示
圖1-4
3)添加測試表,在test庫中添加student表,並添加一些數據。具體操作如圖1-5所示,至此MYSQL部分已經全部完成。(註意是在test庫中添加,對應QT應選擇test;
圖1-5
5、建立QT程式
1)將mysql-5.6文件lib目錄下的libmysql.dll和libmysqld.dll複製到Qt5.5中的mingw493_32的bin文件下。如圖1-6所示;
圖1-6
2)新建項目,選擇QT Console Application。命名項目名為sql_test;
在sql_test.pro文件中添加 QT +=sql
main.cpp改為
1 #include <QCoreApplication> 2 #include <QSqlDatabase> 3 #include <QSqlQuery> 4 #include <QSqlError> 5 #include <QtDebug> 6 void connect_mysql() 7 { 8 QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL"); 9 db.setHostName("127.0.0.1"); //連接資料庫主機名,這裡需要註意(若填的為”127.0.0.1“,出現不能連接,則改為localhost) 10 db.setPort(3306); //連接資料庫埠號,與設置一致 11 db.setDatabaseName("test"); //連接資料庫名,與設置一致 12 db.setUserName("root"); //資料庫用戶名,與設置一致 13 db.setPassword("88888888"); //資料庫密碼,與設置一致 14 db.open(); 15 if(!db.open()) 16 { 17 qDebug()<<"不能連接"<<"connect to mysql error"<<db.lastError().text(); 18 return ; 19 } 20 else 21 { 22 qDebug()<<"連接成功"<<"connect to mysql OK"; 23 } 24 QSqlQuery query(db); 25 query.exec("select * from student"); 26 while(query.next()){ 27 qDebug()<<query.value("name").toString(); 28 } 29 } 30 int main(int argc,char *argv[]) 31 { 32 QCoreApplication a(argc,argv); 33 connect_mysql(); 34 return a.exec(); 35 }
3)測試結果
圖1-7
結果表明,QT已經成功讀取MYSQL中的student表。
可以在 https://github.com/xtuwang/Qt_stduy.git中下載該項目。