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 基本是我用过的最简便的界面库 ...
随机推荐
- Android_listView_BaseAdapter_downLoadImg
layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...
- 局域网内sqldeveloper客户端连接oracle服务器
1:输入参数 输入连接名(随便写) 用户名:system/tiger/sys或者是创建的用户 口令:设置的口令 主机名:连接的数据库所在的ip 端口:默认是1521 sid:orcl安装时自己设置的 ...
- Java基本排序
长度为N的数组升序排序 一,冒泡排序 public class BubbleSort { private double[] data; public BubbleSort(double[] data) ...
- 如何解决linux(ubuntu/CENTOS)中gedit中文乱码的问题
http://jingyan.baidu.com/article/1709ad80a443c54634c4f09c.html 同时按键盘的Alt 和 F2,就可以打开“运行程序”对话框,这个功能类似于 ...
- Mongodb集群节点故障恢复场景分析
http://blog.csdn.net/zhangzhaokun/article/details/6299527 一个适当配置的Mongodb分片集群是没有单点故障. 本文描述了分片集群中存在的几种 ...
- 利用CodeSmith生成抽象工厂步骤
其实CodeSmith挺好的,帮我们主动生成不少代码,并且代码质量不错,下面就来介绍一下利用CodeSmith生成抽象工厂步骤 打开codesmith模板的buildall 注意path的设置,因为后 ...
- dagger和butterknife使用冲突
两者会冲突的主要原因是因为两者都有:javax.annotation.processing.Processor 于是在build.gradle中添加如下配置即可: // 注释冲突 packagingO ...
- DropdownListFor无法正确绑定值-同名问题
DropdownListFor无法正确绑定值 如果以下面的方式进行绑定: <%: Html.DropDownListFor(model => model.subType, ViewBag ...
- 解决64位win7系统IIS7[ODBC 驱动程序管理器]未发现数据源名称并且未指定默认驱动程序
从网上下载了一个asp系统,数据库是Access类型的,运行环境为 64位Windows 7系统,IIS7,运行系统后,报如下错误: Microsoft OLE DB Provider for ODB ...
- HW--漂亮度2(测试通过)
总结:几个函数的使用 (1) int num=Integer.parseInt(str[0]); //将第一个字符串转成整形数,表示名字个数 (2) String string1=str[i].to ...