在上章學習了42.QT-操做SQLite數據庫後,發現MySQL和SQLite的語句都大體相同,因此本章只測試MySQL是否能使用html
MySQL安裝參考連接:http://www.javashuo.com/article/p-rblxsphr-gk.htmlmysql
1.因爲QT版本是32位,因此MySQL安裝也得是32位linux
2.MySQL安裝sql
下載地址https://dev.mysql.com/downloads/mysql/5.7.html#downloads,選擇32位的:數據庫
下載完成後解壓到: D:\MySQL5.7_win32服務器
而後配置Path環境變量ide
新增變量名:工具
而後在Path變量裏添加路徑:post
配置文件學習
首先在D:\MySQL5.7_win32\mysql-5.7.26-win32裏建立data文件夾,用來mySQL存儲數據.
而後在D:\MySQL5.7_win32\mysql-5.7.26-win32裏建立my.ini文件(在linux下則爲my.cnf):
[mysql] # 設置mysql客戶端默認字符集 default-character-set=utf8 # 數據庫服務端配置項 [mysqld] # 設置3306端口 port = 3306 # 設置MYSQL的安裝目錄 basedir= D:\\MySQL5.7_win32\\mysql-5.7.26-win32 # 設置MYSQL數據庫的數據的存放目錄 datadir=D:\\MySQL5.7_win32\\mysql-5.7.26-win32\\data # 容許最大鏈接數 max_connections=200 # 服務端使用的字符集設置爲utf8 character-set-server=utf8 # 建立新表時將使用的默認存儲引擎 # default-storage-engine=INNODB #設置模式 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES # skip-grant-tables跳過密碼驗證,通常忘記密碼,纔是用它,從新改密碼 #skip-grant-tables [WindowsMySQLServer] Server= D:\\MySQL5.7_win32\\mysql-5.7.26-win32\\bin\\mysqld.exe
安裝MySQL服務以及初始化
打開CMD輸入:
mysqld install //安裝SQL後臺服務程序(mysqld),mysqld用來實現讓客戶端經過鏈接服務器來訪問數據庫 mysqld --initlialize //初始化mysqld net start mysql //啓動MySQL
更改密碼
首先找到初始密碼,密碼位於data文件夾*.err文件裏:
打開,找到密碼爲N0aeT3lp.tzy:
繼續在CMD中輸入:
mysql -u root –p //-u表示輸入用戶名,-p表示輸入密碼,按下回車後則會要求輸入密碼N0aeT3lp.tzy alter user root@localhost identified by '123456'; //改成123456
修改密碼也能夠輸入:
set password for root@localhost = password('123'); //修改密碼爲123
使用navicat管理數據庫工具鏈接數據庫
使用navicat工具能夠方便操做數據庫,下載後,咱們經過ip地址訪問時,發現打印以下所示:
打開CMD配置
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; //修改,容許全部訪問 flush privileges; //使修改當即生效
以下圖所示:
而後再次經過ip地址訪問,發現OK:
3.接下來開始使用QT測試(使用QT5.7版本)
鏈接MySQL發現打印:
由於缺乏驅動文件libmysql.dll,該文件位於: D:\MySQL5.7_win32\mysql-5.7.26-win32\lib
方法1:
將libmysql.dll複製到Qt5.7.1\5.7\mingw53_32\bin目錄下
方法2:
將libmysql.dll複製到debug或者release下
開始測試
1)首先建立一個students數據庫:
2)寫QT代碼
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("192.168.0.100"); //若是填入localhost,則表示連接本地的數據庫 db.setDatabaseName("students"); //要鏈接的數據庫名 db.setUserName("root"); db.setPassword("sql"); db.setPort(3306); if(db.open()) { query.exec("DROP TABLE students"); //刪除名爲students的表 query.exec("CREATE TABLE students(" "id INT NOT NULL AUTO_INCREMENT," "name VARCHAR(20) NOT NULL," "sroce INT NOT NULL," "class VARCHAR(20) NOT NULL," "PRIMARY KEY (id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;"); //從新建立一個students表,標題分別爲id、name、score、class query.exec("INSERT INTO students(name,sroce,class) VALUES ('小a', 85, '初2-1班')"); query.exec("INSERT INTO students(name,sroce,class) VALUES ('小b', 15, '初2-2班')"); query.exec("INSERT INTO students(name,sroce,class) VALUES ('小c', 35, '初2-3班')"); }
運行結束後,打印數據表是否有數據: