qt 5 数据库操作(mysql)
其实大家都知道,QT5以上的都自带了数据库驱动,所以呢,基本上可以直接使用,于是如果想知道怎么连接数据库,请参考这位大神写的。http://qtdebug.com/DB-AccessMySQL.html
关于数据库操作
QSqlDatabase db = QSqldatabase::addDataBase("QMYSQL"); //博主用的mysql
db.setHostName("127.0.0.1"); //本机地址
db.setDatabaseName("qt"); //我在mysql里面创建了一个叫qt的数据库
db.setUserName("root"); //账号
db.setPassword("59826****"); //密码
if(!db.open())
{
qDebug()<<"打开数据库失败";
}
qDebug()<<"连接成功";
关于数据库显示在表格中
QTableView *_view = new QTableView;
QSqlTableModel *_model = new QSqlTableModel;
QVBoxLayout *lay = new QVBoxLayout(this);
_model->setTable("user"); //数据库中的表格名称
_model->selection(); //选择表中所有的数据
_view->setModel(_model); //把_model传给_view
lay->addWidget(_view); //增加一个空间到QVBoxLayout并且显示
增删改查
void slotAddClicked()
{
_model->database().transaction(); //开始事物
QSqlRecord record = _model -> record(); // 用_model来获取记录(行)
_model -> insertRecord(-1,record); //增加到最后一行一个记录
}
void slotSubmitClicked()
{
if(_model->submitAll())
_model->database().commit(); //提交
else
{
_model->database().rollback(); //回滚
QMessageBox::critical(this,"Error",QSqldatabase().lastError.text());
}
}
void slotDelClicked()
{
QItemSelectionModel * selectModel=view->selectionModel(); //通过view来获取选中的部分数据model
QModelIndexList selectIndexList = selectModel->selectedIndexs(); // 通过selectModel来获取被选中的索引(index)
QList<int> delRow; //存储要删除的行
for(int i=0;i<selectIndexList.size(); ++i) // 遍历选择的列表
{
QModelIndex index = selectIndexList.at(i); //将列表转化为单个的Index
delRow << index.row(); // 将index对应的行加入delRow
}
while(delRow.size()>0)
{
int row = delRow.at(0);
delRow.removeAll(row); // 移除所有相同的行,去重
model->removeRow(row); // 移除该行
}
model->submitAll();
}
void slotFilter(QString filter)
{
QSqlRecord record = model -> record(); //获取所有记录
QString modelFilter; //总的筛选条件 xx like xx or xxx like xxx这种形式的字符串
if(filter.isEmpty)
{
model->setFilter(" ");
model->select();
return;
}
for(int i=0;i<record.count();++i)
{
if(i!=0)
{
modelFilter +="or";
}
QString field = record.field(i); // 将每行字段里面的内容都放进去
QString subFilter = QString().sprintf("%s like '%%%s%%'",field.toUtf8().data(),filter.toUtf8().data());
modelFilter +=subFilter
}
model ->setFilter(modelFilter); //过滤
model->select(); //刷新
}
作者 : Ten10
持续更新,未完待续
本文章属于作者原创,如需转载请注明 http://i.cnblogs.com/EditPosts.aspx?opt=1
qt 5 数据库操作(mysql)的更多相关文章
- 界面编程之QT的数据库操作20180801
/*******************************************************************************************/ 一.数据库连 ...
- python数据库操作 - MySQL入门【转】
python数据库操作 - MySQL入门 python学院 2017-02-05 16:22 PyMySQL是Python中操作MySQL的模块,和之前使用的MySQLdb模块基本功能一致,PyMy ...
- qt sql 数据库操作
1. 连接数据库 mysql连接: QSqlDatabase mysql_db=QSqlDatabase::addDatabase("QMYSQL","mysql_co ...
- 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)
前言 安装了mysq数据库,最终时为了实现在一个树莓派上实现多用户多进程操作的同步问题,避免数据并发出现一些错误,本篇安装了远程服务并且讲述了使用Qt进行悲观锁for update操作,命令行进行 ...
- 2.关于QT中数据库操作,简单数据库连接操作,数据库的增删改查,QSqlTableModel和QTableView,事务操作,关于QItemDelegate 代理
Linux下的qt安装,命令时:sudoapt-get install qt-sdk 安装mysql数据库,安装方法参考博客:http://blog.csdn.net/tototuzuoquan ...
- python数据库操作-mysql数据库
一:连接 1:本地连接 mysql -u用户名 -p密码 2:连接远程服务器 mysql -u用户名 -p密码 -hip地址 -P端口号 线下修改远程服务端上部署的mysql服务器 二:创建数 ...
- 利用IDEA构建springboot应用-数据库操作(Mysql)
Spring-Date-Jpa 定义了一系列对象持久化的标准 例如Hibernate,TopLink等 spring data jpa让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来 ...
- go的数据库操作mysql
go get github.com/go-sql-driver/mysql package main; import ( "database/sql" _ "github ...
- Qt 多线程与数据库操作需要注意的几点问题(QSqlDatabase对象只能在当前线程里使用)
彻底抛弃MFC, 全面应用Qt 已经不少时间了.除了自己看书按步就班做了十几个验证性的应用,还正式做了3个比较大的行业应用,总体感觉很好.Native C++ 下, Qt 基本是我用过的最简便的界面库 ...
随机推荐
- C# 工厂模式示例
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 工厂模式 ...
- Ⅱ.spring的点点滴滴--对象
承接上文 对象的各种实例化 .net篇(环境为vs2012+Spring.Core.dll) 修改原来的PersonDao对象为 public class PersonDao : IPersonDao ...
- About gpref O(n2) --> O(1)
http://www.ibm.com/developerworks/cn/linux/l-gperf.html 命令行处理和 gperf 的作用 命令行处理一直以来都是软件开发中最容易被忽视的领域.几 ...
- Apache配置虚拟主机后,不能访问localhost的问题
今天想试用一下php7,但是发现php7只支持Apache2.4版本,而我电脑上的Apache是2.2版本,为了想尝鲜,就必须去下载新的Apache2.4 php7和apache2.4安装整合以后,l ...
- 主机开启后,显示器显示NO SIGNAL,无信号
第一个原因:有可能是主机和显示器的连线接触不良(特别是接口处没有插好或者松动),还有可能这根连接的数据线出现问题,所以才会出现没有信号输入到屏幕,无显示,黑屏,处理方法:重新拨插一下这根连接的数据线, ...
- centos7支持ntfs
简单搜索了一下,发现一个很好的安装步骤,简洁有效,已经试验. rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release- ...
- 【转】android adb命令
1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): andr ...
- 第五章 jQuery中的动画
通过jQuery中的动画方法,能轻松地为网页添加精彩的视觉效果,给用户一种全新体验. 1.show()方法和hide()方法 该方法的功能与css()方法设置display属性效果相同. 给show( ...
- android webview乱码问题
使用 loadData方法是中文部分会出现乱码,即使指定“utf-8”.“gbk”.“gb2312”也一样. webView.getSettings().setDefaultTextEncodingN ...
- Cordova+angularjs+ionic+vs2015开发(五)
欢迎加群学习:457351423 这里有4000多部学习视频,涵盖各种技术,有需要的欢迎进群学习! 一.创建侧边菜单和导航项目 1.使用VS创建一个Ionic空项目,同时创建一个Ionic SideM ...