跳转到帖子

搜索论坛

显示结果为标签'qmysql'。



更多搜索选项

  • 用标签来搜索

    用逗号分隔标签类型
  • 用作者来搜索

内容类型


论坛

  • 编程技术
    • C/C++
    • C#
    • PHP
    • JAVA
    • Linux
    • React
    • 编程QA
    • 武林秘籍
    • go语言
    • 开源框架
  • 交流
    • 转贴交流
    • 酷站分享
    • 游戏素材
    • 软件下载
    • 视频教程资料

Product Groups

没有可显示的结果。

博客

  • 墨香年少的博客

查找结果在...

查找包含的结果...


创建日期

  • 开始

    结束


最后更新

  • 开始

    结束


用数量来过滤...

注册日期

  • 开始

    结束


用户组


找到1个结果

  1. 在做一个Qt的项目的时候,需要本地存储一些数据,本来第一选择是sqlite的,但是我读取的时候,发现同样的sql,Qt读取的结果和navicat读取的结果不一样。 也没找到为什么不一样,研究再三没有找到原因,于是放弃了sqlite,转而使用mysql 结果提示我:“QSqlDatabase: QMYSQL driver not loaded” 首先打印出来支持的数据模块: qDebug() << QSqlDatabase::drivers(); 结果中并没有mysql,于是百度和谷歌都去搜索了下,谷歌还专门用英文去搜索了下,发现大部分的网站抄来抄去的解决方案是复制mysql下的dll到qt的对应的目录下, 我试了下,没有任何作用,错误提示依旧 于是再找,终于找到了一个网页的方案,并且测试成功了。 解决方案如下。 首先,Qt安装的时候需要选中源码,这样才会再Qt的目录下有src目录。我的Qt在D盘下面,所以我的src目录是: D:\QT5\5.15.2\Src 打开下面这个目录: D:\QT5\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql 类似如下: 双击:mysql.pro,Qt会自动打开这个项目。 编辑pro文件,编辑后的代码如下: TARGET = qsqlmysql HEADERS += $$PWD/qsql_mysql_p.h SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp #QMAKE_USE += mysql OTHER_FILES += mysql.json PLUGIN_CLASS_NAME = QMYSQLDriverPlugin include(../qsqldriverbase.pri) # mysql安装目录下的include文件夹 INCLUDEPATH += "D:/MySQL/55/include" # mysql安装目录下的lib文件夹下的libmysql.lib文件 LIBS += "D:/MySQL/55/lib/libmysql.lib" # 编译后的dll存放的位置 DESTDIR = "D:\QT5\5.15.2\MysqlDll" 然后编辑,然后去D:\QT5\5.15.2\MysqlDll看下 结果如下: 复制这个文件夹下所有的文件到: D:\QT5\5.15.2\msvc2019\plugins\sqldrivers 我用的是msvc2019_32 所以拷贝到这个目录,如果你说64位,可能需要复制到:msvc2019_64,mingw的话就复制到:mingw81_32或者mingw81_64 重启Qt后,就没问题了。 下面是我的单例DB #pragma execution_character_set("utf-8") #include "db.h" #include <QCoreApplication> #include <QMutex> #include <QDebug> #include <QMessageBox> Db::Db(QObject *parent) : QObject(parent) { qDebug() << QSqlDatabase::drivers(); db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("127.0.0.1"); db.setUserName("root"); db.setPassword("123456"); db.setDatabaseName("disk"); if (!db.open()) { QString err = "Error: Failed to connect database."; QMessageBox msgBox; msgBox.setText(err); msgBox.exec(); } } Db *Db::Instance() { static QMutex mutex; static QScopedPointer<Db> inst; if (Q_UNLIKELY(!inst)) { mutex.lock(); if (!inst) { inst.reset(new Db); } mutex.unlock(); } return inst.data(); } bool Db::isOpen() { if (!db.open())//判断数据库是否打开 { qDebug() << "db open faild! err:" << db.lastError(); return false; } qDebug() << "数据库打开成功"; return true; } void Db::query(QString sql) { QSqlQuery sql_query; sql_query.exec(sql); } 最后输出如下: ("QSQLITE", "QMARIADB", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7") 数据库打开成功 -- 结束 --
×
×
  • 创建新的...

重要信息

注册必须使用2-8个中文汉字作为账号