Qt与MySQL间的通讯有两种方法.

注:需要在.pro文件中添加,QT +=sql

方法一:使用SQL模型类,该方法是Qt中更高层的类来进行数据库的访问,不需要SQL语法知识。

QSqlTableModel是SQL表格模型,一次只能操作一个SQL表的读/写模型,可以浏览和修改独立的SQL表。

首先建立在MySQL中建立数据库phm_db,并建立一个campss_data的数据表。

(1)建立创建数据库连接的头文件db_connection.h

#ifndef DB_CONNECTION_H
#define DB_CONNECTION_H#include<QMessageBox>
#include<QSqlDatabase>//创建一个默认的连接,即只有一个连接
static bool createConnection()
{QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");  //数据库类型db.setHostName("localhost");   //主机名db.setDatabaseName("phm_db");   //数据库名称db.setUserName("root");    //用户名db.setPassword("123456");   //密码if(!db.open()){QMessageBox::critical(0,"Cannot open database","Unable to establish a database connection",QMessageBox::Cancel);return false;}db.open();return true;
}
#endif // DB_CONNECTION_H

(2)使用方法,创建连接,然后建立一个QSqlModelTable对象model,对model进行相应操作即可显示表。

//SQL表格模型。(模型/视图,MVC方法)//显示表:cmapass_datacreateConnection();model = new QSqlTableModel(this);model->setTable("cmapss_data");model->select();model->setEditStrategy(QSqlTableModel::OnManualSubmit);    //设置编辑策略。ui->tableView->setModel(model);ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);  //设置视图为只读模式

结果显示如下:

方法二:通过Qt提供的数据库接口进行通讯,需要基本的SQL语句知识。

以登录界面与MySQL数据库中登录密码表进行校验为例。

(1)建立与数据库的连接,然后判断文本框中的内容是否与表中(第一行是序号,第二行是用户名,第三行是密码)内容相一致。建立数据库连接的方法同上,然后使用QSqlQuery结合SQL语句访问数据库内容。

注:db_login是自己建立的类

//读取界面上的登录信息,与数据库内容比较验证
bool db_login::VerificationLogin(QString username, QString password)
{//验证数据库QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("localhost");db.setDatabaseName("phm_db");db.setUserName("root");db.setPassword("ckzhb");if (db.open()){QSqlQuery query(db);query.exec("select * from login_account");while(query.next()){QString account = query.value(1).toString().trimmed();  //获取数据库登录表中的账号名QString p = query.value(2).toString().trimmed();    //获取表中的密码if((username.trimmed() == account) && (p.trimmed() == password))return true;}db.close();}else{QMessageBox::critical(0,"Cannot open database","Unable to establish a database connection",QMessageBox::Cancel);return false;}
}

(2)使用db_login类,正确则进入下一个界面,错误将输入框清零并弹出警告信息。

db_login database;if (database.VerificationLogin(ui->lineEditAccount->text().trimmed(),ui->lineEditPassword->text().trimmed())){//正确匹配Func_Slet_Dialog *dialog = new Func_Slet_Dialog(this);dialog->show();}else{QMessageBox::warning(this,tr("警告"),tr("请输入正确的用户名或密码!"),QMessageBox::Yes);ui->lineEditAccount->clear();ui->lineEditPassword->clear();ui->lineEditAccount->setFocus();this->show();}

Qt与MySQL的连接与基本操作相关推荐

  1. Qt与Mysql进行连接实现账号的注册登录和密码修改和验证码

    文章目录 数据库信息 相关代码 .h mainwindow.h myinfor.h yiban.h .cpp main.cpp mainwindow.cpp(此模块是重点) myinfor.cpp y ...

  2. 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(二、编译连接)

    本篇教程分为三个部分: [全教程]qt连接mysql--从qt编译mysql驱动到qt连接mysql数据库(一.编译连接前准备) [全教程]qt连接mysql--从qt编译mysql驱动到qt连接my ...

  3. 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(一、编译连接前准备)

    一.说明 电脑系统:win10 qt版本:5.13.2和5.14.1(测试均成功) mysql版本:MySQL-5.5 本篇教程分为三个部分: [全教程]qt连接mysql--从qt编译mysql驱动 ...

  4. Python MySQL数据库的连接以及基本操作

    Python MySQL数据库的连接以及基本操作 一.数据库的连接 1.直接连接 2.连接池连接 二. 数据库的基本操作 1.执行函数 2.创建数据表 3.删除表 4.插入函数 6.删除函数 7.状态 ...

  5. Qt 解决MySQL 中文乱码问题

    文章目录 Qt 解决MySQL 中文乱码问题 解决此问题的必要前提就是: 1.版本要匹配. 2.数据库连接正常,需要重新编译Qt 自带的源程序中的mysql.pro 工程项目: 3.数据库的编码格式与 ...

  6. arm qt mysql插件_Ubuntu下编译ARM平台Qt的MySQL插件

    最近需要将一个程序移植到arm平台上,程序调用了MySQL数据库,所以就牵扯到将MySQL数据库移植到ARM平台上面,所以在网上大量查阅资料.在baidu文库发现了一篇文档,是wlzxlc上传的文档名 ...

  7. Qt与MySQL通信错误及解决方法

    错误一:duplicate connetion name 'qt_sql_default_connection',old connection removed 解决办法:程序中多次建立了Qt与MySQ ...

  8. 记录一次吃力的探索过程【Thinkphp搭建Mysql长连接并重用】

    使用Thinkphp搭建服务器后,进行ab测试发现并发性能几乎为0.-c参数设置为1和2,8,每秒完成请求都只有0.9左右. 于是打开mysql全局日志一看,我的乖乖,一个http请求就connect ...

  9. 基于qt和mysql的学生数据库管理系统

    说明:最近花了几天时间学习用qt开发mysql,并写了一个学生数据库管理系统,只当是练手,在写软件的时候遇到了很多的问题,好在后面通过查资料学习算是解决了, 下面展示一下我做的软件,在文章的最后附上我 ...

最新文章

  1. 《C和C++代码精粹》——2.5 普通指针
  2. jQuery-动画点击淡化消失
  3. 媒体声音 | 阿里云王伟民:阿里云数据库的策略与思考
  4. windows屏蔽USB接口的脚本
  5. (6)kendo UI使用基础介绍与问题整理——dropdownlist/基础问题整理
  6. 学习进度(2016.5.1)
  7. mysql 镜像备份_手动构建percona-xtrabackup Docker镜像,并实现mysql数据备份
  8. php个推透传消息,GitHub - Lysice/laravel-getui: Laravel个推的集成包,支持单推/多推/全量推送/透传消息等功能。...
  9. 解决误删/bin/bash问题
  10. JavaOO 常用类
  11. 试用cmd markdown
  12. 深入浅出 eBPF|你要了解的 7 个核心问题
  13. Spring Cloud微服务架构图
  14. iscsi_server_client_chap_username_password_targetcli
  15. Matlab计算相关系数
  16. 牛客 Algorithm Choosing Mushrooms
  17. 2012年8月11日
  18. 相比REG007 不仅免费还好用 的手机号绑定查询工具
  19. vmware 设置ip
  20. SpringCloud学习系列之三-----配置中心(Config)文件修改后,客户端动态刷新(Refresh)

热门文章

  1. python 绘制围棋棋盘_围棋专业学员在“庆元旦 育苗杯”少儿围棋比赛中取得优异成绩...
  2. c#ref和out的相同点_C#中ref和out的使用小结
  3. pc计算机怎么设置域名管理,如何设置域名的DNS服务器 -电脑资料
  4. inject 响应式_Vue 3 组合式 provide/inject
  5. web开发中的计算机网络知识——应用层
  6. boost boost::asio::read socket.read_some 区别
  7. org.apache.thrift.TApplicationException: Required field 'client_protocol' is unset!
  8. php小算法总结一(数组重排,进制转换,二分查找)
  9. ×××的虚拟专用网--gre
  10. [转贴]如何成为一个优秀的jsp程序员