Qt mysql从安装,使用,到发布

由于工作安排,需要使用Mysql,平时都是使用的是Sqlserver,和Sqlite,而这次使用Mysql,着实有点不适应,所以这次把遇到的问题记录下来,希望可以帮到大家。

一、mysql的安装:

   1,下载地址如下:

https://dev.mysql.com/downloads/mysql/

  2,下载成功之后,解压,并在目录下创建my.ini文件,并将以下数据复制到该文件中。注意,basedir和datadir的路径按你自己的要求改一下。还有需要添加环境变量,就是该目录下的bin文件夹,比如:E:\mysql-8.0.23-winx64\bin。

[mysql]
default-character-set = utf8
[mysqld]
#端口
port = 3306
#mysql安装目录
basedir = E:/mysql-8.0.16-winx64
#mysql数据存放目录
datadir = E:/mysql-8.0.16-winx64/data
#允许最大连接数
max_connections = 1024
#允许连接失败的次数
max_connect_errors=10
#服务端默认使用字符集
character-set-server = utf8
#默认存储引擎
default-storage-engine = INNODB

3,用管理员方式运行cmd,依次输入如下命令:

mysqld --initialize-insecure

mysqld install

#如果原来安装过mysql,可以先remove;
mysqld -remove MySQL

net start mysql
#提示Mysql 服务已经启动成功,则表示Mysql已经部署成功了。

#测试mysql是否成功,输入如下命令,并回车,初始化时没有密码,直接回车即可:
mysql -u root -p

二,使用Mysql

1,设置mysql初始密码。

mysql -uroot -p '123456'

2,使用mysql,如果你对mysql的命令比较熟悉,可以直接使用命令,如果想使用可视化程序来连接和编辑mysql,推荐使用DBeaver,下载路径如下,它一个免费的软件,需要了解如何使用,可以百度一下,一款非常好用的软件。

https://dbeaver.io/

3,Qt 使用mysql,以下是测试代码:

static bool connectToMysql()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("table");       //这里输入你的数据库名
    db.setUserName("root");
    db.setPassword("123456");   //这里输入你的密码
    if (!db.open()) {
        QMessageBox::critical(0, QObject::tr("无法打开数据库"),
                              "无法创建数据库连接! ", QMessageBox::Cancel);
        return false;
    }

    return true;
}

运行时,如果提示如下错误时,这个时候就需要填坑了,请继续往下看。

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

这个提示是未找到mysql的驱动了。你需要将第一步下载的mysql包里面的lib文件夹下的libmysql.dll库拷贝至C:\Qt\Qt5.9.4\5.9.4\msvc2015_64\bin,这个按自己的要求拷贝至指定目录下。然后,最好是重启一下Qt,再次运行测试代码,就可以解决上面这个问题了。

三,Qt发布程序

1,程序发布成功之后,在自己电脑上运行是肯定没有问题,那么如果将发布的程序运行要其他没有任何编程环境的电脑上时,就出现问题,它会提示应用程序无法运行,一般出现这种情况,就是缺少库,如果发布时Qt的库都关联上了,那么问题一定出在mysql上,可是不确定是缺哪个库,当然,libmysql.dll是必须要复制到发布程序的目录下的。网上有大佬说可以用一些辅助工具,我试了,没帮到我。直接告诉大家最快最有效的方法,将下载的mysql包里面的所有.dll库拷贝至发布程序目录下,这样就可以运行了。但是问题来了,把所有库拷贝进去了,肯定有一些不会使用到的库,怎么删掉呢,可以运行你发布之后的程序,然后删除与mysql相关的库,这个时候,由于程序占用了部分的库文件,被占用的文件是没法删掉的,而那些没被占用的就都删除了,留下了的就是需要的文件了。搞定!

猜你喜欢

转载自blog.csdn.net/weixin_40637594/article/details/115063449
今日推荐