如何在qt5.11.1中连接mariadb数据库

如何在qt5.11.1中连接mariadb数据库

游学电子科技,专注跨平台软硬件编程开发

环境: MariaDB数据库 10.3.9版本32位

qt:32位qt5.11.1(mw编译器32位)

很多朋友都是使用最流行的mysql数据库进行测试和生产.但是网络的消息好多,最值得我关注的一点就是mariadb数据库源于mysql且性能优于mysql.没啥说的,程序员追求的是技术,项目最终还是靠性能.因此决定使用Mariadb数据库了.

什么是MariaDB数据库管理系统呢?"它是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。"

一句话总结:MariaDB数据库是mysql的替代者,性能优于及兼容mysql.

一开始是phpstudy集成环境,它的数据库是mysql,所以在安装phpstudy后,自己下载了mariadb数据库进行安装.心想应该可以不用改动qt代码的前提下正常连接db数据库吧.

附上mariadb数据库的下载链接:https://downloads.mariadb.org/mariadb/10.3.9/ 里边有msi的安装包.测试使用的是10.3.9版本32位

安装到c盘后, 一定要把32位的mariadb10.3目录下的lib下的libmariadb.dll重命名为libmysql.dll文件复制到qt界面侧边栏"项目"里设置的文件夹下.

如何在qt5.11.1中连接mariadb数据库

qt界面侧边栏"项目"里设置的文件夹

如何在qt5.11.1中连接mariadb数据库

把32位的mariadb10.3目录下的lib下的libmariadb.dll重命名为libmysq

此时运行已经写好数据库连接代码的qt项目,启动HeidiSQL打开db数据库.即可正常创建数据库和表.创建的语句语法都与mysql同.

部分连接数据库的项目代码:

注意.在qt的pro文件内加入: QT += sql

//一定要把32位的mariadb10.3目录下的lib下的libmariadb.dll重命名为libmysql.dll文件复制到qt界面侧边栏"项目"里设置的文件夹下.
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
// db->addDatabase("QMYSQL");//指定使用mysql数据库
db.setHostName("localhost");//本机名或者127.0.0.1
//db->setDatabaseName("zxl");//连接到已有的数据库名.下边接着可以创建表也可以直接创建数据库.
db.setPort(3306);
db.setUserName("root");//登录账户
db.setPassword("root");//密码
if(db.open())//数据库打开正常
{
//MySQL创建数据库设置字符编码
db.exec("CREATE DATABASE ZXL DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci");
qDebug()<<db.lasterror> db.exec("use ZXL");//指定数据库然后才可以创建表
qDebug()<<db.lasterror> //创建数据表格SFYTJ. 同时定义字段.多次创建表格执行不会重新创建和覆盖表,只会提示一个异常.
db.exec( "CREATE TABLE SFYTJ( id SERIAL PRIMARY KEY, 时间 TEXT,设备地址 TEXT,用户 TEXT,手机 TEXT , 温度1 TEXT, 温度2 TEXT , 温度3 TEXT , 温度4 TEXT , 温度5 TEXT , 温度6 TEXT , 温度7 TEXT , 温度8 TEXT , 湿度1 TEXT ,湿度2 TEXT ,湿度3 TEXT ,湿度4 TEXT ,湿度5 TEXT ,湿度6 TEXT ,湿度7 TEXT ,湿度8 TEXT ,按钮1 TEXT,按钮2 TEXT, 按钮3 TEXT, 按钮4 TEXT, 按钮5 TEXT, 按钮6 TEXT,按钮7 TEXT,按钮8 TEXT,按钮9 TEXT,按钮10 TEXT,按钮11 TEXT,按钮12 TEXT,急停按钮 TEXT,模式按钮 TEXT,电磁阀1 TEXT, 电磁阀2 TEXT,电磁阀3 TEXT,电磁阀4 TEXT,电磁阀5 TEXT,电磁阀6 TEXT,电磁阀7 TEXT,电磁阀8 TEXT,电磁阀9 TEXT,电磁阀10 TEXT,电磁阀11 TEXT,电磁阀12 TEXT) ");
//创建数据表格area.
db.exec( "CREATE TABLE area( id SERIAL PRIMARY KEY,手机 TEXT ,用户名 TEXT,设备地址 TEXT,备注 TEXT)");
if(db.lastError().isValid())//0为无错误
QMessageBox::information(NULL, tr("异常通知"), tr("数据表创建异常"), QMessageBox::Yes);
else

QMessageBox::information(NULL, tr("成功通知"),tr("数据表创建成功"), QMessageBox::Yes);
}
else//数据库未打开
QMessageBox::information(NULL, tr("异常通知"),tr("数据库打开异常"), QMessageBox::Yes);
/<db.lasterror>/<db.lasterror>

最后,如果大家喜欢跨平台编程开发,请关注我.我会定时更新技术文章与大家分享交流学习.qq:761153454 qt中国群:218967017 / 218967042

qt中国兴趣部落 https://buluo.qq.com/mobile/detail.html?&&_wv=1027&bid=17863&pid=1153530-1536020230&source=buluoadmin&from=buluoadmin


分享到:


相關文章: