欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

42.QT-操作SQLite数据库

程序员文章站 2022-07-02 16:29:51
在上章学习了42.QT-操作SQLite数据库后,发现MySQL和SQLite的语句都大致相同,所以本章只测试MySQL是否能使用 MySQL安装参考链接:https://blog.csdn.net/qq_38455201/article/details/83419450 1.由于QT版本是32位, ......

在上章学习了42.qt-操作sqlite数据库后,发现mysql和sqlite的语句都大致相同,所以本章只测试mysql是否能使用

mysql安装参考链接:

 

1.由于qt版本是32位,所以mysql安装也得是32

 42.QT-操作SQLite数据库

 

2.mysql安装

下载地址,选择32位的:

 42.QT-操作SQLite数据库

下载完成后解压到: d:\mysql5.7_win32

然后配置path环境变量

新增变量名:

 42.QT-操作SQLite数据库

然后在path变量里添加路径:

 42.QT-操作SQLite数据库

  • %mysql_home%:表示变量名,等价于d:\mysql5.7_win32\mysql-5.7.26-win32

 

配置文件

首先在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

 42.QT-操作SQLite数据库

更改密码

首先找到初始密码,密码位于data文件夹*.err文件里:

 42.QT-操作SQLite数据库

打开,找到密码为n0aet3lp.tzy:

 42.QT-操作SQLite数据库

继续在cmd中输入:

mysql -u root –p            //-u表示输入用户名,-p表示输入密码,按下回车后则会要求输入密码n0aet3lp.tzy

alter user root@localhost identified by '123456';   //改为123456

 42.QT-操作SQLite数据库

修改密码也可以输入:

set password for root@localhost = password('123');          //修改密码为123

 42.QT-操作SQLite数据库

 

使用navicat管理数据库工具连接数据库

使用navicat工具可以方便操作数据库,下载后,我们通过ip地址访问时,发现打印如下所示:

 42.QT-操作SQLite数据库

打开cmd配置

grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;      //修改,允许所有访问
flush privileges;           //使修改立即生效

如下图所示:

 42.QT-操作SQLite数据库

然后再次通过ip地址访问,发现ok:

 42.QT-操作SQLite数据库

 

3.接下来开始使用qt测试(使用qt5.7版本)

连接mysql发现打印:

 42.QT-操作SQLite数据库

因为缺少驱动文件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数据库:

 42.QT-操作SQLite数据库

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班')");  
}

运行结束后,打印数据表是否有数据:

 42.QT-操作SQLite数据库