【关于如何打包自己开发的程序为安装包,可以参考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相关推荐

  1. android sqlite更改数据,更新现有的sqlite数据库中的列,但没有任何更改android

    对不起,但我没有在网上找到任何东西.我在我的目录"资产"中使用现有的数据库.当我想更新一列时,函数返回该列已经改变,但实际上并没有发生.我试着用execSQL,但没有再次.更新现有 ...

  2. 一篇好文之Android数据库 GreenDao的使用指南(源码+案列)

    大家在使用学习使用GreenDao的时候遇到什么问题,欢迎在我的公众号aserbao给我留言,无偿服务!同时,欢迎大家来加入微信群二维码讨论群,一起讨论Android开发技术!群二维码定时在我公众号更 ...

  3. 第十二章:Qt数据库(sqlite)

    回顾: 第一章:Qt的概述 第二章:在Ubuntu编写第一个Qt程序 第三章:Qt的字符串和字符编码 第四章:Qt的信号和槽 第五章:Qt容器窗口(父窗口) 第六章:面向对象的Qt编程 第七章:Qt设 ...

  4. QT学习日记17——Qt数据库

    学习视频链接 2021新版QT图形框架编程开发(层层到肉)_C++图形用户界面开发框架_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Wf4y1Y7uh ...

  5. 深入浅出Qt数据库编程:从基本操作到高级技巧

    深入浅出Qt数据库编程:从基本操作到高级技巧 (Demystifying Qt Database Programming: From Basic Operations to Advanced Tech ...

  6. 关于Qt数据库相关开发的一些经验总结

    一.前言 近期花了两个多月时间,将数据库相关的代码重新封装成了各种轮子(这条路必须打通,打通以后,相关项目只需要引入这个组件pri即可),测试了从Qt4.7到Qt6.1的各种版本,测试了odbc.sq ...

  7. Qt数据库练习之QSqlTableModel的使用(MySql数据库示例,含源码+注释)

    文章目录 一.操作示例 1.1 修改记录(数据) 1.2 添加记录(数据) 1.3 删除记录(数据) 1.4 取消操作 1.5 排序操作 1.6 查询操作 二.了解QSqlTableModel 三.源 ...

  8. Qt数据库应用13-通用数据库分页

    一.前言 数据库分页展示,在所有的涉及到数据库记录的项目中都是需要的,除了简单的设备信息表.用户信息表这种很少几条几十条数据量的表除外,其余的日志记录表等都需要分页展示数据,少量的数据可以滚动条下拉查 ...

  9. 数据库多对多关系示例 - 使用sqlite演示

    多对多,可以理解为是一对多和多对一的组合:要实现多对多,一般都需要有一张中间表(也叫关联表),将两张表进行关联,形成多对多的形式: 例如:     老师表.班级表.课程表,中间表为:课程表: 如果sq ...

最新文章

  1. BZOJ3992:[SDOI2015]序列统计——题解
  2. ipsan虚拟存储服务器,HP P4000 IPSAN存储系统
  3. 码神之路博客项目构建记录
  4. c语言编程矩阵主对角线相同,急求!c语言 求N*N矩阵中主对角线和次对角线的元素之和...
  5. centos7安装redis的正确姿势
  6. mac vs 返回上一步_mac电脑打不开应用程序的解决方法
  7. Python os模块文件操作(二)
  8. Java 中处理 Exception 的最佳实践
  9. Java定义全局变量的方法
  10. 高德正式开放海外LBS服务,助力开发者出海
  11. C#交错数组与多维数组区别
  12. java如何调用蜂鸣器_用鸿蒙OS在蜂鸣器上播放一曲《两只老虎》
  13. 基于JQ的Lightbox插件视频教程
  14. 电脑没有声音(未安装任何音频输出设备)解决方案
  15. 【Android实习】20场面试斩获大厂offer,我学会了什么
  16. MODIS数据下载,HEG批量拼接处理,arcmap批量掩膜提取,python栅格计算
  17. HTML语言代码参考(中英文对照)
  18. WordPress重要文件wp-seting.php文件详解
  19. mpi_barrier
  20. 【机器学习】机器学习简介

热门文章

  1. 机器学习:特征选择和降维实例
  2. 机器学习中的数学基础(1)——向量和范数
  3. 机器学习入门|快速掌握逻辑回归模型
  4. Yann LeCun:假如没有深度学习,Facebook就是尘埃
  5. 深度对话林元庆:AI创业历史性窗口到来,将诞生下个BAT
  6. SAP实施项目中采购员在非生产性采购申请审批流中的角色安排
  7. 王飞跃 | 面向未来的AI人才应该具备这3种思维
  8. 下一个十年的C位:物联网产业全景解析
  9. 数字双胞胎技术和物联网如何帮助企业取得成功
  10. 邬贺铨院士:认识工业互联网