其实大家都知道,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)的更多相关文章

  1. 界面编程之QT的数据库操作20180801

    /*******************************************************************************************/ 一.数据库连 ...

  2. python数据库操作 - MySQL入门【转】

    python数据库操作 - MySQL入门 python学院 2017-02-05 16:22 PyMySQL是Python中操作MySQL的模块,和之前使用的MySQLdb模块基本功能一致,PyMy ...

  3. qt sql 数据库操作

    1.  连接数据库 mysql连接: QSqlDatabase mysql_db=QSqlDatabase::addDatabase("QMYSQL","mysql_co ...

  4. 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)

    前言   安装了mysq数据库,最终时为了实现在一个树莓派上实现多用户多进程操作的同步问题,避免数据并发出现一些错误,本篇安装了远程服务并且讲述了使用Qt进行悲观锁for update操作,命令行进行 ...

  5. 2.关于QT中数据库操作,简单数据库连接操作,数据库的增删改查,QSqlTableModel和QTableView,事务操作,关于QItemDelegate 代理

     Linux下的qt安装,命令时:sudoapt-get install qt-sdk 安装mysql数据库,安装方法参考博客:http://blog.csdn.net/tototuzuoquan ...

  6. python数据库操作-mysql数据库

    一:连接 1:本地连接 mysql -u用户名 -p密码 2:连接远程服务器 mysql -u用户名 -p密码 -hip地址 -P端口号     线下修改远程服务端上部署的mysql服务器 二:创建数 ...

  7. 利用IDEA构建springboot应用-数据库操作(Mysql)

    Spring-Date-Jpa 定义了一系列对象持久化的标准 例如Hibernate,TopLink等   spring data jpa让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来 ...

  8. go的数据库操作mysql

    go get github.com/go-sql-driver/mysql package main; import ( "database/sql" _ "github ...

  9. Qt 多线程与数据库操作需要注意的几点问题(QSqlDatabase对象只能在当前线程里使用)

    彻底抛弃MFC, 全面应用Qt 已经不少时间了.除了自己看书按步就班做了十几个验证性的应用,还正式做了3个比较大的行业应用,总体感觉很好.Native C++ 下, Qt 基本是我用过的最简便的界面库 ...

随机推荐

  1. Java设计模式06:常用设计模式之适配器模式(结构型模式)

    1. Java之适配器模式(Adapter Pattern) (1)概述:    将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类,可以在一起 ...

  2. html5 list属性、autocomplete属性、pattern属性

    list属性的值为某个datalist元素的id,datalist也是html5中新增的属性,类似于选择框select,或者android中的autocomplete textview控件.datal ...

  3. ORACLE 优化

    本文主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从九个不同方面较全面地总结了 ORACLE数据库的优化调整方案. 关键词 ORACLE数据库 环境 ...

  4. 百度2015校招二面coding面试题

    window.onload=function(){    document.onclick=function(e){         var ev=e||event;         var targ ...

  5. Matlab中plot、fplot、ezplot的使用方法和区别

    函数plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的.也就是说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标; 常用格式为: (1)plot(x) 当x ...

  6. linux gpg 使用笔记

    http://linux.chinaunix.net/techdoc/system/2009/04/30/1109541.shtml 一.GnuPG的简介     我们在网上的发送的邮件是明文的,可以 ...

  7. ionic+cordova+angularJs监听刷新

    普通的js返回并刷新这里就不多说了,百度就有很多方法. 下面说的是使用了angularjs.ionic开发的一个手机app中我使用的返回上一页并刷新的方法. 场景:回复的页面是单独的,点击保存回复后会 ...

  8. 对 ASP.NET 页面进行跟踪(Control Tree)

    在页面头部加入属性 : Trace="True" 参考MSDN: https://msdn.microsoft.com/zh-cn/library/94c55d08(v=vs.10 ...

  9. 利用sys.dm_db_index_physical_stats查看索引碎片等数据(转)

    我们都知道,提高sql server的数据查询速度,最有效的方法,就是为表创建索引,而索引在对数据进行新增,删除,修改的时候,会产生索引碎片,索引碎片多了,就需要重新组织或重新生成索引,以达到索引的最 ...

  10. sql server 2008如何保存Emoji表情

    1.将就的方法已找到,在保存前,Emoji表情字符串进行utf-8编码,然后写入数据表的nvarchar(max)字段,取出时再进行解码即可. c#的写法如下: 写入数据表前编码: string sH ...