Qt C++连接MySQL/MariaDB数据库
来源:互联网 发布:淘宝网运动棉鞋 编辑:程序博客网 时间:2024/06/11 22:07
Env
数据库是MariaDB,其实就是MySQL(二者的恩怨情仇请自行了解);版本MariaDB 10.1 x64,不在本机上(另外一台??)
Qt 5.9.1 32bit,Qt Creator 4.3.1,Windows 10 x64
连接MySQL数据库的两种方式
https://www.mysql.com/products/connector/
上述链接是MySQL官网的MySQL Connectors页面,注意以下内容
MySQL provides standards-based drivers for JDBC, ODBC, and .Net enabling developers to build database applications in their language of choice. In addition, a native C library allows developers to embed MySQL directly into their applications.
MySQL数据库的连接可以分成两种方式,一种是通过Driver驱动程序的方式;另一种是通过MySQL提供的native C LIB 里面API的方式,也就是上表最后一行的C API for MySQL。
可以参考以下link
c++连接mysql数据库的两种方法(ADO连接和mysql api连接)
(一)通过Driver连接
通过Driver的方式,这种方法的优点是可以结合各种面向对象的数据库访问技术(ADO, ODBC, JDBC等等),只要配置好不同的驱动,同样的代码可以访问各种不同的数据库;缺点就在于驱动的安装和配置不是一般的麻烦,还要考虑数据库版本和驱动版本兼容性的问题。
(二)通过MySQL提供的C API连接
相比于ADO之类的方法,这种方式不用配置驱动,因此也没有反人类的版本兼容性问题。
我之前的代码是在MFC下写的,现在要迁移到Qt上来,经过实验,也是同样的代码可以正常工作(当然这是在数据库软件没有变的前提下)。主要工作是为Qt Creator**配置MySQL的这个第三方LIB**。
使用API的方式连接,需要加载mysql的头文件和lib文件。
先看看VC/VS下是怎么配置LIB的
以VS2010为例
1. 下载上述的C API for MySQL(mysqlclient),解压得到\include目录(有mysql.h那个目录)和\lib目录,比如我的H:\3rdPartyLib\MySQL\include;在项目属性配置的附加包含目录中添加路径
<你的解压路径>\include
如果MySQL安装在本机,也可以在MySQL的安装目录下找。
2. 把libmysql.dll和libmysql.lib文件(解压得到的\lib目录)拷贝到所建的工程目录下。然后在头文件里包含以下内容:
//mysql所需的头文件和库文件 #include "winsock.h"#include "mysql.h"#pragma comment(lib,"libmySQL.lib")
Qt Creator工程配置MySQL C LIB
我的Qt Creator是Windows下的,编译器MingGW 5.3.0 32bit
1. 在Qt项目的.pro文件中添加MySQL的include目录路径
INCLUDEPATH += “<你的解压路径>/include”
引号要不要都行,如果这步有问题,会提示找不到mysql.h头文件。
2. MinGW不支持#pragma comment(),因此需要通过在.pro文件中添加
LIBS += “<你的解压路径>/lib/libmysql.lib”
至于有的说.lib库文件MinGW不支持,需要重新编译成.a静态库文件的,在我这里没这回事儿。
另外我试过用Mingw-utils的reimp去编译下载得到的libmysql.lib,则是提示我那个文件invalid or corrupted。
究其原因,是因为C API for MySQL里面的libmysql.lib是一个导入库而不是静态库,详情参见静态库、动态库及导入库
另外一种说法是新版本的MingGW中reimp已经取消了,只有老版本的才有。现在mingw可以直接使用msvc的lib(2014-09)。
never mind… 3. 另外,.pro文件中还要加上
QT += sql
另外需要注意的是.pro文件里面变量LIBS += 后面库路径的写法,-L后面是路径,-l后面是库文件名称,其中需要注意的是如-lxxxx.lib,则实际的库文件名称应该是libxxxx.lib,否则会提示找不到;没错,就是这么不智能
- Qt C++连接MySQL/MariaDB数据库
- 远程连接MySQL(MariaDB)数据库
- Ubuntu QT C连接mysql数据库
- qt连接mysql数据库
- Qt 连接MySQL数据库
- Qt连接MySql数据库
- Qt 连接MYSQL数据库
- Qt连接MySQL数据库
- QT---连接mysql数据库
- Qt 连接MySQL数据库
- QT连接MYSQL数据库
- Qt连接MySQL数据库
- 远程连接Mariadb数据库
- 远程连接mysql/mariaDB数据库时出现1045错误
- Navicat远程连接mysql、mariadb数据库报错E1103
- qt连接数据库(MySQL)
- Qt远程连接MySql数据库
- Qt远程连接MySql数据库
- LCA 最近公共祖先 Tarjan(离线)算法的基本思路及其算法实现
- POJ 1837 Balance
- 高性能Web架构
- 线上服务内存OOM问题定位三板斧
- 数据库乱码的解决方式
- Qt C++连接MySQL/MariaDB数据库
- apktool安装和使用以及apk签名
- 2017.8.28-2017.9.1
- 弹窗之三:自定义Dialog
- 二进制数的运算方法
- 活字格能做access数据导入吗?
- hibernate_抓取策略-检索配置
- 快速迭代的互联网研发模式下测试如何突破?
- harr特征