目錄
注意:如果運行Qt時提示"Driver not loaded Driver not loaded"
由於最近工作需要用到QT讀取數據庫中的數據,並將數據保存至數據庫中。花了一天的時間,總算實現了從QT中讀取數據庫中的數據。網上相關資料很多,但是寫得不是很全,中間出現了一些問題,解決起來比較麻煩。所以本文從MYSQL下載、安裝,QT連接MYSQL儘可能寫詳細,若有不足,還請見諒。本例爲32位Qt和32位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改爲
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QtDebug>
void connect_mysql()
{
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1"); //連接數據庫主機名,這裏需要注意(若填的爲”127.0.0.1“,出現不能連接,則改爲localhost)
db.setPort(3306); //連接數據庫端口號,與設置一致
db.setDatabaseName("test"); //連接數據庫名,與設置一致
db.setUserName("root"); //數據庫用戶名,與設置一致
db.setPassword("88888888"); //數據庫密碼,與設置一致
db.open();
if(!db.open())
{
qDebug()<<"不能連接"<<"connect to mysql error"<<db.lastError().text();
return ;
}
else
{
qDebug()<<"連接成功"<<"connect to mysql OK";
}
QSqlQuery query(db);
query.exec("select * from student");
while(query.next()){
qDebug()<<query.value("name").toString();
}
}
int main(int argc,char *argv[])
{
QCoreApplication a(argc,argv);
connect_mysql();
return a.exec();
}
3)測試結果
圖1-7
結果表明,QT已經成功讀取MYSQL中的student表。
轉載鏈接爲:https://www.cnblogs.com/xtu-wlf1212/p/8764015.html
修改密碼
在 Navicat for MySQL 下面直接執行 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 就可以
方法1: 用SET PASSWORD命令
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladmin
mysqladmin -u root password "newpass"
如果root已經設置過密碼,採用如下方法
mysqladmin -u root password oldpass "newpass"
方法3: 用UPDATE直接編輯user表
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
在丟失root密碼的時候,可以這樣
mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
安裝mysql後執行配置,write configuration file時無法通過,報錯:
Configuration file tmeplate
%mysql安裝目錄%\my-template.ini could not be processed and written to
%mysql安裝目錄%\my.ini.Error code-1.
原因是沒權限!!! 但是單純的在屬性-安全中增加管理員對兩個ini文件的寫入權限無法解決。
解決方法:win 7 或 server2008 下,找到mysql安裝目錄下的bin\MySQLInstanceConfig.exe,右鍵-屬性-兼容性 設置兼容 "系統的版本",並勾選 以管理員身份運行 解決!!!
注意:如果運行Qt時提示"Driver not loaded Driver not loaded"
方法一:
下載一個32位的 libmysql.dll和libmysql.lib 放入Qt安裝盤:\Qt\Qt5.5.1\5.5\mingw492_32\bin 中成功解決。
鏈接: https://pan.baidu.com/s/1T3k6rX4KJnfIFxU53KRSJw 提取碼: 8159
方法二:
在windows下開發QT連接數據庫時遇到這個問題,之前解決過一次但是換了臺機子又忘記了,這次碼下來。
下載mysql的支持包
地址:https://dev.mysql.com/downloads/connector/c/
記得QT是多少位的,就下載多少位的。
下載過來安裝完成後,在C盤的Program Files (x86) 如果是64位的就是Program Files 文件夾中會多出一個mysql的文件,進入到lib裏,將libmysql.dll 和libmysql.lib 複製到QT的bin裏,然後重啓編輯器就行了。