QT数据库使用案列【联系人】-- 使用sqlite和QStringListModel
【关于如何打包自己开发的程序为安装包,可以参考http://www.cnblogs.com/yuliyang/p/4242179.html】
【简要功能介绍】
使用sqlite数据库和Qt搭建界面,实现联系人数据库记录。联系人有id编号,姓名,年龄.可对联系人
【表增加联系人】
【删除联系人】
【更新联系人信息】
【显示全部联系人信息】
【运行界面】
【源码下载】【http://pan.baidu.com/s/1o6OGley】
使用sqlitebrowser 查看
【初始化数据库】
QLibrary sqlib("./sqldrivers/qsqlited.dll");sqlib.load ();qDebug()<<"my library loaded"<<sqlib.isLoaded();db = QSqlDatabase::addDatabase("QSQLITE","SQLITE"); #ifdef Q_OS_LINUXQString path(QDir::home().path());path.append(QDir::separator()).append("my.db.sqlite");path = QDir::toNativeSeparators(path);db.setDatabaseName(path); #elsedb.setDatabaseName("my.db.sqlite"); #endif/** create my.db.sqlite file if not exist*/db.open ();db.close ();
【创建表】
if(db.open ()){sql_query = QSqlQuery (db);sql_query.prepare(create_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"table created!";}}updateDataBaseShow();
【插入记录】
if(db.open ()){sql_query = QSqlQuery (db);int max_id = 0;sql_query.prepare(select_max_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{while(sql_query.next()){max_id = sql_query.value(0).toInt();qDebug()<<QString("max id:%1").arg(max_id);}}sql_query.prepare(insert_sql);sql_query.addBindValue(max_id+1);sql_query.addBindValue(ui->lineEdit_name->text ());sql_query.addBindValue(ui->lineEdit_age->text ().toInt ());if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"inserted!";}updateDataBaseShow();}
【显示全部数据(两列,id和name)】
if(db.open ()){sql_query = QSqlQuery (db);if(!sql_query.exec(select_sql)){qDebug()<<sql_query.lastError();}else{while(sql_query.next()){int id = sql_query.value("id").toInt();QString name = sql_query.value("name").toString();qDebug()<<QString("id:%1 name:%2").arg(id).arg(name);}}}
【显示全部数据】
if(db.open ()){sql_query = QSqlQuery (db);sql_query.prepare(select_all_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{ui->textEdit->clear ();while(sql_query.next()){int id = sql_query.value(0).toInt();QString name = sql_query.value(1).toString();int age = sql_query.value(2).toInt();ui->textEdit->append (QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age));qDebug()<<QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age);}}}
【清除表】
if(db.open ()){sql_query = QSqlQuery (db);sql_query.prepare(clear_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"cleared";}}updateDataBaseShow();
【删除一条记录】combobox选中的记录删除
if(db.open ()){sql_query = QSqlQuery (db);sql_query.prepare(delete_sql);sql_query.addBindValue(ui->comboBox->currentText ().toInt ());if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"deleted!";}}updateDataBaseShow();
【更新联系人信息】
if(db.open ()){sql_query = QSqlQuery (db);sql_query.prepare("update student set name = :name ,age = :age where id = :id");sql_query.bindValue(":name", ui->lineEdit_name->text ());sql_query.bindValue(":age", ui->lineEdit_age->text ());sql_query.bindValue(":id", ui->comboBox->currentText ().toInt ());if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"updated!";}}updateDataBaseShow();
【删除数据库】
#ifdef Q_OS_LINUXQString path(QDir::home().path());path.append(QDir::separator()).append("my.db.sqlite");path = QDir::toNativeSeparators(path);QFile::remove(path);#elseQFile::remove("my.db.sqlite");#endifui->comboBox->clear ();ui->textEdit->clear ();
转载于:https://www.cnblogs.com/yuliyang/p/4239874.html
QT数据库使用案列【联系人】-- 使用sqlite和QStringListModel相关推荐
- android sqlite更改数据,更新现有的sqlite数据库中的列,但没有任何更改android
对不起,但我没有在网上找到任何东西.我在我的目录"资产"中使用现有的数据库.当我想更新一列时,函数返回该列已经改变,但实际上并没有发生.我试着用execSQL,但没有再次.更新现有 ...
- 一篇好文之Android数据库 GreenDao的使用指南(源码+案列)
大家在使用学习使用GreenDao的时候遇到什么问题,欢迎在我的公众号aserbao给我留言,无偿服务!同时,欢迎大家来加入微信群二维码讨论群,一起讨论Android开发技术!群二维码定时在我公众号更 ...
- 第十二章:Qt数据库(sqlite)
回顾: 第一章:Qt的概述 第二章:在Ubuntu编写第一个Qt程序 第三章:Qt的字符串和字符编码 第四章:Qt的信号和槽 第五章:Qt容器窗口(父窗口) 第六章:面向对象的Qt编程 第七章:Qt设 ...
- QT学习日记17——Qt数据库
学习视频链接 2021新版QT图形框架编程开发(层层到肉)_C++图形用户界面开发框架_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Wf4y1Y7uh ...
- 深入浅出Qt数据库编程:从基本操作到高级技巧
深入浅出Qt数据库编程:从基本操作到高级技巧 (Demystifying Qt Database Programming: From Basic Operations to Advanced Tech ...
- 关于Qt数据库相关开发的一些经验总结
一.前言 近期花了两个多月时间,将数据库相关的代码重新封装成了各种轮子(这条路必须打通,打通以后,相关项目只需要引入这个组件pri即可),测试了从Qt4.7到Qt6.1的各种版本,测试了odbc.sq ...
- Qt数据库练习之QSqlTableModel的使用(MySql数据库示例,含源码+注释)
文章目录 一.操作示例 1.1 修改记录(数据) 1.2 添加记录(数据) 1.3 删除记录(数据) 1.4 取消操作 1.5 排序操作 1.6 查询操作 二.了解QSqlTableModel 三.源 ...
- Qt数据库应用13-通用数据库分页
一.前言 数据库分页展示,在所有的涉及到数据库记录的项目中都是需要的,除了简单的设备信息表.用户信息表这种很少几条几十条数据量的表除外,其余的日志记录表等都需要分页展示数据,少量的数据可以滚动条下拉查 ...
- 数据库多对多关系示例 - 使用sqlite演示
多对多,可以理解为是一对多和多对一的组合:要实现多对多,一般都需要有一张中间表(也叫关联表),将两张表进行关联,形成多对多的形式: 例如: 老师表.班级表.课程表,中间表为:课程表: 如果sq ...
最新文章
- BZOJ3992:[SDOI2015]序列统计——题解
- ipsan虚拟存储服务器,HP P4000 IPSAN存储系统
- 码神之路博客项目构建记录
- c语言编程矩阵主对角线相同,急求!c语言 求N*N矩阵中主对角线和次对角线的元素之和...
- centos7安装redis的正确姿势
- mac vs 返回上一步_mac电脑打不开应用程序的解决方法
- Python os模块文件操作(二)
- Java 中处理 Exception 的最佳实践
- Java定义全局变量的方法
- 高德正式开放海外LBS服务,助力开发者出海
- C#交错数组与多维数组区别
- java如何调用蜂鸣器_用鸿蒙OS在蜂鸣器上播放一曲《两只老虎》
- 基于JQ的Lightbox插件视频教程
- 电脑没有声音(未安装任何音频输出设备)解决方案
- 【Android实习】20场面试斩获大厂offer,我学会了什么
- MODIS数据下载,HEG批量拼接处理,arcmap批量掩膜提取,python栅格计算
- HTML语言代码参考(中英文对照)
- WordPress重要文件wp-seting.php文件详解
- mpi_barrier
- 【机器学习】机器学习简介