Qt实现Mysql数据库的连接,查询,修改,删除,增加功能

Qt实现Mysql数据库的连接,查询,修改,删除,增加功能

  • 安装Mysql数据库,QtCreator

Mysql选择Mysql Server 8.1版本安装。

Mysql Server 8.1安装过程

1.首先添加网络服务权限:

Win+R键输入compmgmt.msc进入,计算机管理-系统工具-本地用户和组-组-Administrator

点击添加,在输入对象名称来选择栏,输入NETWORK SERVICE,点击检查名称,确认完成后退出。

  1. 下载Mysql8.1安装包,安装mysql。

Mysql8.1安装包下载地址:

https://download.csdn.net/download/qq_32663053/89163322

另外Mysql5.7.23版本的安装包下载地址:

https://download.csdn.net/download/qq_32663053/89163442

安装过程如下:

运行安装包:

选择安装类型:

选择安装产品:

执行安装:

安装完成,进行下一步:

Execute

执行下一步:

一直next的直到输入密码:

继续next到最后Mysql安装完毕。

配置环境变量:右击"我的电脑"-->"属性"-->"高级系统设置"-->"高级"-->"环境变量",在打开的窗口中选择 "系统变量" 下的 "新建" 按钮创建环境变量。

尝试数据库关闭和开启:

"Windows+R"-->输入"cmd"-->Enter

到此Mysql数据库配置完成。

附带有Mysql Workbench,能够图形化处理数据库的功能软件。

  1. 下载QtCreator并加载Mysql驱动

QtCreator下载:由于QtCreator安装包过多,这里不提供。

安装过程:

安装过程选择source文件夹,否则无法配置mysql驱动。以下是我选的选项:

以后直接next直到安装结束。

  • 加载Mysql驱动
  1. 打开mysql.pro文件夹编译并生成mysql驱动文件

Mysql.pro文件位置如下(是本人的),不同的人不同位置。

用QtCreator打开mysql.pro文件配置mysql.pro文件。

圈出来的是要编写的代码,第一个注释掉mysql,第二个是将mysql的include文件和lib文件引入进来DESTDIR代表的是生成的驱动文件。代码写完执行锤子操作。执行结束后生成lib文件,也就是数据库驱动文件。

将数据库驱动文件复制到sqldriver文件夹下:我的目录如下:

将mysql文件夹下的libmysql.dll和libmysql.lib文件复制到qt的bin目录,以下是需要转移的目录

这样我们就可以连接mysql数据库了。

  • Qt连接Mysql数据库

编写代码如下连接Mysql数据库

  1. 首先在工程.pro文件下添加执行sql语句的代码:
  1. 定义一个全局变量QSqlDatabase db;用来打开数据库和操作数据库的变量。

如果连接成功则输出"数据库连接成功!"否则输出"数据库连接失败"+错误原因。

  • 数据库的查询操作

结果图:点击显示数据按钮,实现数据库表数据的显示。

QSqlQuery query=this->queryDatabase("select * from user");

//将数据库的查询结果集赋值给query

QSqlQueryModel *model=new QSqlQueryModel(ui->tableView);

//定义一个querymode绑定ui->tableView

model->setQuery(query);//将查询结果绑定到模型上

ui->tableView->setModel (model);

//设置ui->tableView的mode。

这是显示数据的界面。

  • 数据库的删除操作

数据库的删除代码如下:

QString username = ui->lineEdit_3->text();

//从lineedit获得删除的主键数据进行预删除

QSqlQuery query;

//QString username=ui->lineEdit->text();

//QSqlQuery query;

QString str=QString("delete from user where username='%1'").arg(username);

//编写删除sql语句

if (!query.exec(str)) { //执行删除语句

qDebug() << "删除失败:" << query.lastError().text();

} else {

qDebug() << "删除成功";

}

结果图如下:

  • 数据库的增加操作

数据库的增加数据是在另一个界面实现的,我们需要添加一个ui如下:

这样我们在dialog.cpp实现数据库的增加数据

QString username=ui->lineEdit->text();

QString password=ui->lineEdit_2->text();

//从lineedit读入要插入的数据

QSqlQuery query;

query.prepare("insert into sys.user values(?,?)");

query.addBindValue(username);

query.addBindValue(password);

//预执行sql语句,并在语句中插入列数据

if(!query.exec()){//执行增加数据语句

qDebug()<<"无法插入数据";

QMessageBox::information(NULL, "增加表数据","增加失败",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

}else{

QMessageBox::information(NULL, "增加表数据","增加成功",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

Dialog::close();

}

//如果增加失败,停留在子界面

//如果增加成功,返回主界面

//点击返回主界面按钮可以返回

实现的结果图:

  • 数据库的更新操作

更新操作,仍需要在子界面实现,子界面创建如六中的操作,操作是一样的。

首先是连接数据库然后输入主键的数值,找到所有列的信息:

db1=QSqlDatabase::addDatabase("QMYSQL");

QString host="localhost";

QString dbName="sys";

QString user="root";

QString password="12345";

this->connectToDatabase(host,dbName,user,password);

//以上是连接数据库

QString username = ui->lineEdit_3->text();

//获得主键信息

QSqlQuery query=this->queryDatabase(QString("select * from user where username = '%1'").arg(username));

//执行查询操作

while (query.next()) {

QString result = query.value(0).toString();

QString result1 = query.value(1).toString();

ui->lineEdit->setText(result);

ui->lineEdit_2->setText(result1);

ui->lineEdit->setReadOnly(true);

//将查询到的信息输出到lineedit中。

qDebug() << result<<" "<<result1;

}

然后我们修改非主键的列值。进行接下来的更新操作。

QString username = ui->lineEdit_3->text();

QString password = ui->lineEdit_2->text();

//获取所有列的数据,准备增加表数据

QSqlQuery query;

QString str=QString("update user set password = ? where username = ?");

//编写sql语句

query.prepare(str);

query.addBindValue(password);

query.addBindValue(username);

//预执行sql语句,并为未知量赋值

if (!query.exec()) {//执行更新语句

qDebug() << "更新失败:" << query.lastError().text();

QMessageBox::information(NULL, "更新表数据","更新失败",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

} else {

qDebug() << "更新成功";

QMessageBox::information(NULL, "更新表数据","更新成功",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

Dialog1::close();

//db1.close();

}

//若成功,提示更新成功,并返回主界面

//若失败,停留在子界面。

实现的结果图:

以上就是QtCreator对Mysql数据库的增加、修改、删除、查询的操作。

相关推荐
qq_3089574712 小时前
adb 如何通过wifi连接手机
adb·智能手机·app自动化测试
白如意i1 天前
如何在 CentOS 6 上设置 NFS 挂载
数据库·mysql·adb
七月.末1 天前
安卓aab包的安装教程,附带adb环境的配置
android·adb
SRC_BLUE_171 天前
SQLI LABS | Less-39 GET-Stacked Query Injection-Intiger Based
android·网络安全·adb·less
jason.zeng@15022073 天前
ubuntu中安装mysql
mysql·ubuntu·adb
看山还是山,看水还是。3 天前
MySQL 安装
运维·数据库·笔记·学习·mysql·adb
开心呆哥4 天前
【如何使用 Python 脚本通过 ADB 命令来检查 Android 文件内容】
android·python·adb
秋秋秋秋秋雨4 天前
linux强制修改mysql的root账号密码
linux·mysql·adb
开心呆哥5 天前
【如何使用 ADB 脚本批量停止 Android 设备上的所有应用】
android·adb
CodingBrother5 天前
MySQL 和 PostgreSQL 的使用案例
mysql·adb·postgresql