在上章学习了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班')"); }
运行结束后,打印数据表是否有数据: