1、Qt sqlit3简介

Qt SQLite(sql)是一款不需要服务器的开源轻量级的数据库软件,可以集成在其他软件中,适合嵌入式系统应用。Qt5以上版本直接支持SQLite。具体的特性和语法可以参考RUNOOB. 这里我把自己项目中用到的基本操作函数贴出来。

这里主要介绍操作接口:

  1. 连接sqlit数据库
  2. 关闭sqlit数据库
  3. 判断sqlit表格是否存在
  4. 判断是否表中某个字段存在某个值
  5. 判断sqlit表中是否存在sysid
  6. sqlit新建表
  7. sqlit插入项目
  8. 删除sqlit指定表中指定项目中指定的内容
  9. 更新sqlit表中的内容

2、使用方法

在工程配置文件.pro中添加QT对sqlit的支持。

QT += sql

3、接口文件

3.1 连接sqlit数据库

static bool connectMyDB()
{QString dbName = "MysqliteDB";QString dbuser = "jianwang16";QString dbpassword = "password123456";if(QSqlDatabase::contains(dbName)){//如已经打开这个数据库,直接调出这个数据连接database = QSqlDatabase::database(dbName);}else{//否则打开这个数据库,注意带上数据库名database = QSqlDatabase::addDatabase("QSQLITE");database.setDatabaseName(dbName);database.setUserName(dbuser);database.setPassword(dbpassword);}if (!database.open()){QMessageBox::critical(NULL, "错误", " Unable to establish a database connection!!! ", QMessageBox::Cancel, QMessageBox::Cancel);qDebug() << "Error: Failed to connect database." << database.lastError();return false;}else{qDebug()<<"数据库打开成功!";return true;}

3.2 关闭sqlit数据库

static void closeMyDB()
{database.close();
}

3.3 判断sqlit表格是否存在

static bool isExistTable(const QString& strTableName)
{if(connectMyDB()){QStringList tables = database.tables(); //获取数据库中的表qDebug() <<QString("表的个数: %1").arg(tables.count()); //打印表的个数QStringListIterator itr(tables);while (itr.hasNext()){QString tableName = itr.next();qDebug() << "表名:"+ tableName;if(tableName==strTableName)return true;}return false;}
}

3.4 判断是否表中某个字段存在某个值

static bool isExist(const QString& strTableName, const QString& strFieldName,const QString& text)
{if(connectMyDB()){QSqlQuery query;QString strSql = QString("SELECT 1 FROM %1 WHERE %2     ='%3'").arg(strTableName).arg(strFieldName).arg(text);//select fromquery.prepare(strSql);if(query.exec()){qDebug()<<strSql<<"成功";query.next();qDebug()<<"返回内容"<<query.value(0).toString();if(query.value(0).toInt()){qDebug()<<"当前表中存在字段"<<text;return true;}else{qDebug()<<"当前表中不存在字段"<<text;return false;}}else{qDebug()<<strSql<<"失败";}}
}

3.5 判断sqlit表中是否存在sysid

*说明:System_ID是我表中的字段。一下函数的意思是判断我的某个表中System_ID是否存在这个sysid。

static bool isExistSystemID(const QString& strTableName, const QString& sysid)
{if(connectMyDB()){QSqlQuery query(database);QString sql = QString("select 1 from %1 where System_ID ='%2'").arg(strTableName).arg(sysid);query.prepare(sql);qDebug()<<sql;if(!query.exec()){qDebug()<<query.lastError();return false;}else{query.next();int nResult = query.value(0).toInt();//有此字段时返回1,无字段时返回nullqDebug()<<"query.value(0).toInt():"<<QString::number(query.value(0).toInt());query.clear();if(nResult){return true;}else return false;}}

3.6 sqlit新建表

static void creatTable(const QString& strTableName)
{QSqlQuery query;if (!query.exec(QString("CREATE TABLE %1(""id INTEGER PRIMARY KEY AUTOINCREMENT,"//主键"System_ID VARCHAR,"//系统ID"User_ID VARCHAR,"//用户ID"SubMeter_Num VARCHAR,"//子表序号"CMD_Time VARCHAR)").arg(strTableName))){qDebug() <<"Create"<< strTableName<<"Table Failed!";}else{qDebug() << "Create"<< strTableName<<"Table OK!";}
}

3.7 sqlit插入项目

static void addIterm( const QString& strTableName,const QString& System_ID,const QString& User_ID,const QString& DTU_ID,const QString& SubMeter_Num)
{QSqlQuery query(database);QString select_max_sql =QString("select max(id) from %1").arg(strTableName);qDebug()<<select_max_sql;//查询最大idint max_id = 0;query.prepare(select_max_sql);if(!query.exec()){qDebug()<<"最大ID错误"<<query.lastError();}else{while(query.next()){max_id = query.value(0).toInt();qDebug()<<QString("max id:%1").arg(max_id);}}//绑定参数query.prepare(QString("INSERT INTO %1 VALUES(""?,"//id, ""?," // "System_ID, ""?,"// "User_ID,""?,"// "DTU_ID,""?"// "SubMeter_Num,"")").arg(strTableName));query.addBindValue(max_id+1);query.addBindValue(System_ID);query.addBindValue(User_ID);query.addBindValue(DTU_ID);query.addBindValue(SubMeter_Num);bool bResult = query.exec();qDebug() << "addIterm result=" << bResult;}

3.8 删除sqlit指定表中指定项目中指定的内容

static bool deleteiterm(const QString& tablename, const QString& item, const QString & text)
{if(connectMyDB()){QSqlQuery query(database);QString delete_sql = QString("delete from %1 where %2 = ?").arg(tablename).arg(item);query.prepare(delete_sql);query.addBindValue(text);if(!query.exec()){qDebug()<<query.lastError();return false;}else{qDebug()<<"deleted!";return true;}}else  return false;
}

3.9 更新sqlit表中的内容

static void updateitem( const QString& strTableName,const QString& systemid,const QString& User_ID,const QString& DTU_ID,const QString& SubMeter_Num)
{if(connectMyDB()){QSqlQuery query(database);query.prepare(QString("UPDATE  %1 SET ""User_ID = :User_ID,""DTU_ID = :DTU_ID,""SubMeter_Num = :SubMeter_Num,"WHERE System_ID = %2").arg(strTableName).arg(systemid));query.bindValue(":User_ID",User_ID);query.bindValue(":DTU_ID",DTU_ID);query.bindValue(":SubMeter_Num",SubMeter_Num);if(query.exec()){qDebug()<<"更新成功";}else{qDebug()<<"更新失败";}}
}

Qt sqlit3的增、删、改、查、判断等基本操作接口相关推荐

  1. 表单的增 删 改 查

    django单表操作 增 删 改 查 一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取 ...

  2. properties(map)增.删.改.查.遍历

    import java.util.Map; import java.util.Properties; import java.util.Set;/*** properties(map)增.删.改.查. ...

  3. python学生姓名添加删除_python-函数-实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。...

    实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统. 要求1:使用一个list用于保存学生的姓名. 要求2:输入0显示所有学员信息,1代表增加,2代表删除,3代表修改,4代表查询,exit ...

  4. PySpark︱DataFrame操作指南:增/删/改/查/合并/统计与数据处理

    笔者最近需要使用pyspark进行数据整理,于是乎给自己整理一份使用指南.pyspark.dataframe跟pandas的差别还是挺大的. 文章目录 1.-------- 查 -------- -- ...

  5. list 增 删 改 查 及 公共方法

    1 # 热身题目:增加名字,并且按q(不论大小写)退出程序 2 li = ['taibai','alex','wusir','egon','女神'] 3 while 1: 4 username = i ...

  6. pyRedis - 操作指南:增/删/改/查、管道与发布订阅功能

    文章目录 1 redis docker 部署与安装 2 py - redis的使用 2.1 redis的连接 2.2 常规属性查看 2.2.2 关于删除 2.3 STRING 字符串的操作 2.4 H ...

  7. 简单的php数据库操作类代码(增,删,改,查)

    数据库操纵基本流程为: 1.连接数据库服务器 2.选择数据库 3.执行SQL语句 4.处理结果集 5.打印操作信息 其中用到的相关函数有 •resource mysql_connect ( [stri ...

  8. Linux技术--mysql数据库增-删-改-查

    # mysql 数据库 ## 数据库的操作 ### 五个单位 * 数据库服务器   Linux或者 windows  * 数据库  * 数据表 * 数据字段 * 数据行 ### 连接数据库 ``` 1 ...

  9. Python 操作 Elasticsearch 实现 增 删 改 查

    Github 地址:https://github.com/elastic/elasticsearch-py/blob/master/docs/index.rst 官网地址:https://elasti ...

  10. Go 学习笔记(50)— Go 标准库之 net/url(查询转义、查询参数增/删/改/查、解析URL)

    1. URL 概述 import "net/url" url 包解析 URL 并实现了查询的转码.URL 提供了一种定位因特网上任意资源的手段,但这些资源是可以通过各种不同的方案( ...

最新文章

  1. Java并发编程的艺术(二)——重排序
  2. Smack Component 多线程环境下的问题解决
  3. 复变函数画图cosz图像_用matlab绘制x=(1+cosu)cosv,y=(1+cosu)sinv,z=sinu图像?
  4. PPT分享:用户画像场景与技术实现
  5. 信息学奥赛一本通 1981:【18NOIP普及组】对称二叉树 | 洛谷 P5018【NOIP2018 普及组】 对称二叉树
  6. Magento教程 1:免费购物车系统,轻松建立Magento第一步!
  7. linux 1t 分区,Linux磁盘管理——swap分区
  8. C语言求2/1,-3/2,5/3,-8/5...前十项之和
  9. Hibernate占位符?和:及JPA占位符
  10. xp外观主题下载_增强Windows XP外观的简便方法
  11. rocketmq-常见问题总结(基本概念、高可用、中间件选型)
  12. 使用MfgTool工具进行系统烧写
  13. 改善SilverLight安装体验(翻译)
  14. ESP32使用microPython控制240x240彩色屏幕显示中文
  15. 赛联区块链培训:Web3的核心要素——区块链、加密资产、智能合约和预言机
  16. 一个无名前端的 10 年前端路
  17. WideCharToMultiByte
  18. 第一个C语言程序编写
  19. 【 数据结构 】单链表的实现 - 详解(C语言版)
  20. matlab稀疏三维数组真随机取值

热门文章

  1. 浏览器无法显示某些网页或者提示脚本错误的问题解决
  2. vscode 不能运行h5c3代码_让开发效率“飞起”的VS Code 插件
  3. space index.php 7-14,disk_free_space()
  4. html div float center,跨浏览器实现float:center
  5. jupyter notebook
  6. Java 中的并发工具类
  7. Nandflash希尔特编程器烧录带来的一些点知识信息
  8. [react] 如何给非控组件设置默认的值?
  9. Taro+react开发(96):问答模块03
  10. [html] 说说你对H5的SharedWorker的理解,它有什么运用场景?