MySQL安装和QT连接MySQL数据库
一、MySQL介绍
MySQL是一种关系型数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。
二、MySQL和SQLite有什么区别
SQLite是一款轻量级的关系数据库管理系统,也是开源免费的,用户可以直接读取和写入数据库的文件,非常适合不需要多个用户的小型项目。
MySQL和SQLite虽然都属于关系型数据库管理系统,但它们还是存在较大差异的。MySQL需要服务器才能运行,适合多个用户使用,管理员可以为每个用户分配特定权限,并且多个用户可以同时写入不同的文件,能轻松扩展以满足用户的需求。
而SQLite不需要实际的服务器来运行,应用程序无需与服务器通信到客户端/服务器架构,而是集成到SQLite中。SQLite不能很好地支持多个用户,如果有两个用户同时尝试写入,那么数据库将会被短暂锁定,功能受限。另外,SQLite不能处理一次大量数据,一旦超过最大容量,其性能将会降低。
总的来说,SQLite是为只有一个用户的小型项目设计的轻量级解决方案,而MySQL适用于各种规模的项目并支持多个用户。
三、MySQL下载
官方下载:https://dev.mysql.com/downloads/mysql/
四、安装
选择Developer Default(开发人员默认值)一直点击next,最后设置数据库密码就行。
将MySQL的bin添加到环境变量中,使用Developer Default安装,会默认安装在C盘。一般是这个目录:C:\Program Files\MySQL\MySQL Server 8.0\bin;
在终端中输入:mysql -u root -p 回车 然后输入你的之前设置的密码。
出现mysql> 说明安装成功!
五、QT连接MySQL数据库
1.首先建立一个qt程序,点击.pro文件,添加sql,添加完成编译一下,加载sql的头文件。
2.查看数据库驱动
-
#include "mainwindow.h"
-
-
#include <QApplication>
-
#include <QSqlDatabase>
-
#include <QDebug>
-
int main(int argc, char *argv[])
-
{
-
QApplication a(argc, argv);
-
MainWindow w;
-
//打印编译器的数据库驱动
-
qDebug()<<"数据库驱动:"<<QSqlDatabase::drivers();
-
w.show();
-
return a.exec();
-
}
-
-
输出结果:数据库驱动: ("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
-
没有发现mysql数据库驱动
3.添加mysql数据库驱动,我们需要两个文件:libmysql.lib和qsqlmysql.dll文件
libmysql.lib:在安装的mysql目录文件的lib目录下;
将该文件拷贝到F:\Program\QT\5.14.2\mingw73_64\bin目录下。
qsqlmysql.dll:需要我们进行编译:
(1)打开QT的安装目录的这个路径:QT\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
(2)在该目录下新建一个mysqldll的文件夹,然后打开mysql.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)
-
LIBS = "F:\MySQL\MySQL Server 8.0\lib\libmysql.lib" //Mysql的路径
-
INCLUDEPATH = "F:/MySQL/MySQL Server 8.0/include"
-
DESTDIR = ..\mysql\mysqldll
修改qtsqldrivers-config.pri
-
QT = core core-private sql-private
-
-
# For QMAKE_USE in the parent projects.
-
# include($$shadowed($$PWD)/qtsqldrivers-config.pri)
-
include(./configure.pri)
-
-
PLUGIN_TYPE = sqldrivers
-
load(qt_plugin)
-
-
DEFINES = QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
编译:
在mysqldll文件下生成三个文件,将qsqlmysql.dll和qsqlmysql.dll.debug拷贝到刚刚编译时使用的编译器路径中。
比如刚才我使用的是mingw73_64位的编译器,使用我就拷贝到F:\Program\QT\5.14.2\mingw73_64\plugins\sqldrivers目录下
验证:
重新执行test1程序,看到mysql驱动已经添加成功了
代码连接验证:
-
#include "mainwindow.h"
-
-
#include <QApplication>
-
#include <QDebug>
-
#include <QSqlDatabase>
-
#include <QMessageBox>
-
#include <QWidget>
-
#include <QSqlError>
-
#include <QSqlQuery>
-
int main(int argc, char *argv[])
-
{
-
QApplication a(argc, argv);
-
QWidget * w = new QWidget();
-
//打印编译器的数据库驱动
-
qDebug()<<"数据库驱动:"<<QSqlDatabase::drivers();
-
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
-
db.setHostName("localhost"); //连接本地主机
-
db.setPort(3306);
-
db.setDatabaseName("表名");
-
db.setUserName("root");
-
db.setPassword("你的密码");
-
bool ok = db.open();
-
if (ok){
-
// QMessageBox::information(w, "infor", "link success");
-
// QString str = "insert into tbl values(12,'行了');"; //插入语句
-
QSqlQuery query;
-
if(!query.exec(str)){
-
QMessageBox::information(w, "infor", "query failed");
-
}else{
-
QMessageBox::information(w, "infor", "query success");
-
}
-
query.exec("select * from 表名");
-
while(query.next()){
-
qDebug()<<query.value(0).toInt()
-
<<query.value("字段").toString().toUtf8().data();
-
}
-
}
-
else {
-
QMessageBox::information(w, "infor", "link failed");
-
qDebug()<<"error open database because"<<db.lastError().text();
-
}
-
return a.exec();
-
}
连接完成!!!
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhehbj
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01