QT5下SQLite的增删改查示例代码
来源:互联网 发布:风险矩阵应用 编辑:程序博客网 时间:2024/05/22 14:20
Author: Kagula
Date: 2016-8-10
Envrionment: Qt 5.6
Introduction:
从项目中抽出来的如何操作sqlite的代码,这里记下,免得时间久忘记了。
测试示例代码
void MainWindow::OnAdd(){ MySQLiteEscortStaffFingerPrint db; std::vector<EscortStaffFingerPrint> vecAdd; vecAdd.push_back(EscortStaffFingerPrint("0","0","2","fp","fp-md5")); vecAdd.push_back(EscortStaffFingerPrint("1","3","4","fp2","fp2-md5")); db.TableAdd(vecAdd);}void MainWindow::OnDelete(){ std::vector<QString> vecDel; vecDel.push_back("0"); vecDel.push_back("1"); MySQLiteEscortStaffFingerPrint db; db.TableDelete(vecDel);}void MainWindow::OnModify(){ std::vector<EscortStaffFingerPrint> vecModify; vecModify.push_back(EscortStaffFingerPrint("2","23","24","fp22","fp22-md5")); MySQLiteEscortStaffFingerPrint db; db.TableModify(vecModify);}
新建数据库的示例代码
头文件
#ifndef MYSQLITE_H#define MYSQLITE_H#include <Qtsql/QSqlDatabase>/* * parent class * function * [1]打开或新建DB * [2]关闭DB * */class MySQLite{public: MySQLite(); ~MySQLite();private: QSqlDatabase m_dbconn;};#endif // MYSQLITE_H
实现文件
#include "mysqlite.h"#include <Qtsql/QSqlQuery>#include <QDebug>MySQLite::MySQLite(){ m_dbconn = QSqlDatabase::addDatabase("QSQLITE"); //添加SQLite数据库驱动 QString fullPath = "mytest.db"; m_dbconn.setDatabaseName(fullPath); //在工程目录新建一个mytest.db的文件 if(!m_dbconn.open()) { qDebug()<<"open "<<fullPath<<" failed!"; }}MySQLite::~MySQLite(){ m_dbconn.close();}
增删改查的示例代码
头文件
#ifndef MYSQLITEESCORTSTAFFFINGERPRINT_H#define MYSQLITEESCORTSTAFFFINGERPRINT_H#include "mysqlite.h"#include <QString>#include <vector>/* * [1]不支持线程,不建议long life span! * [2]class实例化后,使用完毕,应立即释放。 * [3]服务端会把modify动作拆成delete,add两个动作,所以理论上不会有修改现存记录的动作。 * 除非用户直接修改数据库EscortStaffFingerPrint表记录。 * */struct EscortStaffFingerPrint{ QString idEscortStaffFingerPrint; QString idescortstaff; QString fingersequence; QString fingerprint; QString fingerprintmd5; EscortStaffFingerPrint(){} EscortStaffFingerPrint(QString idEscortStaffFingerPrint, QString idescortstaff, QString fingersequence, QString fingerprint, QString fingerprintmd5) { this->idEscortStaffFingerPrint = idEscortStaffFingerPrint; this->idescortstaff = idescortstaff; this->fingersequence = fingersequence; this->fingerprint = fingerprint; this->fingerprintmd5=fingerprintmd5; }};struct EscortStaffFingerPrintSimple{ QString idEscortStaffFingerPrint; QString fingerprintmd5;};class MySQLiteEscortStaffFingerPrint:public MySQLite{public: MySQLiteEscortStaffFingerPrint(); int m_maxid; std::vector<EscortStaffFingerPrintSimple> GetTableInfo(); void TableQuery(const QString &idescortstaff, const QString &fingersequence, QString &sRegTemplate,QString &sRegTemplate10); void TableDelete(std::vector<QString> vecIdEscortStaffFingerPrint); void TableAdd(std::vector<EscortStaffFingerPrint> vecAdd); void TableModify(std::vector<EscortStaffFingerPrint> vecModify);};#endif // MYSQLITEESCORTSTAFFFINGERPRINT_H
实现文件
#include "mysqliteescortstafffingerprint.h"#include <QDebug>#include <QSqlQuery>MySQLiteEscortStaffFingerPrint::MySQLiteEscortStaffFingerPrint():MySQLite(){ m_maxid = 0; QSqlQuery query; //sql originated from visual paradigm project. QString sql="CREATE TABLE EscortStaffFingerPrint (idEscortStaffFingerPrint number(10) NOT NULL, " "idescortstaff number(10) NOT NULL, fingersequence number(2) DEFAULT 0 NOT NULL, " "fingerprint varchar2(3072) NOT NULL, fingerprintmd5 varchar2(32) NOT NULL);"; bool success = query.exec(sql); if(success){ qDebug()<<"Create Table Success! \n"; }else{ //table is already exist! QString sql = "select idEscortStaffFingerPrint from EscortStaffFingerPrint " "order by idEscortStaffFingerPrint desc limit 0,1"; QSqlQuery sql_query; sql_query.prepare(sql); if(sql_query.exec()) { if(sql_query.next()) { m_maxid = sql_query.value(0).toInt(); } } } qDebug()<<"m_maxid="<<m_maxid<<"\n";}std::vector<EscortStaffFingerPrintSimple> MySQLiteEscortStaffFingerPrint::GetTableInfo(){ std::vector<EscortStaffFingerPrintSimple> vecR; if(m_maxid<=0) return vecR; QString sql = "select idEscortStaffFingerPrint,fingerprintmd5 from EscortStaffFingerPrint " "order by idEscortStaffFingerPrint"; QSqlQuery sql_query; sql_query.prepare(sql); if(sql_query.exec()) { while(sql_query.next()) { EscortStaffFingerPrintSimple rec; rec.idEscortStaffFingerPrint = sql_query.value(0).toString(); rec.fingerprintmd5 = sql_query.value(1).toString(); vecR.push_back(rec); } } return vecR;}void MySQLiteEscortStaffFingerPrint::TableDelete(std::vector<QString> vecIdEscortStaffFingerPrint){ for(unsigned int i=0;i<vecIdEscortStaffFingerPrint.size();i++) { QSqlQuery sql_delete; sql_delete.prepare("delete from EscortStaffFingerPrint where idEscortStaffFingerPrint=?"); int idEscortStaffFingerPrint = vecIdEscortStaffFingerPrint[i].toInt(); sql_delete.addBindValue(idEscortStaffFingerPrint); if(!sql_delete.exec()) { qDebug()<<"delete record ["<<vecIdEscortStaffFingerPrint[i]<<"] in EscortStaffFingerPrint table failed!"; } }}void MySQLiteEscortStaffFingerPrint::TableAdd(std::vector<EscortStaffFingerPrint> vecAdd){ for(int i=0;i<vecAdd.size();i++) { QSqlQuery sql_add; sql_add.prepare("insert into EscortStaffFingerPrint values(?,?,?,?,?)"); sql_add.addBindValue(vecAdd[i].idEscortStaffFingerPrint.toInt()); sql_add.addBindValue(vecAdd[i].idescortstaff.toInt()); sql_add.addBindValue(vecAdd[i].fingersequence.toInt()); sql_add.addBindValue(vecAdd[i].fingerprint); sql_add.addBindValue(vecAdd[i].fingerprintmd5); if(!sql_add.exec()) { qDebug()<<"insert record ["<<vecAdd[i].idEscortStaffFingerPrint<<"] in EscortStaffFingerPrint table failed!"; } }}void MySQLiteEscortStaffFingerPrint::TableModify(std::vector<EscortStaffFingerPrint> vecModify){ for(int i=0;i<vecModify.size();i++) { QSqlQuery sql_modify; sql_modify.prepare("update EscortStaffFingerPrint set idescortstaff=?," "fingersequence=?,fingerprint=?,fingerprintmd5=?" " where idEscortStaffFingerPrint=?"); sql_modify.addBindValue(vecModify[i].idescortstaff.toInt()); sql_modify.addBindValue(vecModify[i].fingersequence.toInt()); sql_modify.addBindValue(vecModify[i].fingerprint); sql_modify.addBindValue(vecModify[i].fingerprintmd5); sql_modify.addBindValue(vecModify[i].idEscortStaffFingerPrint.toInt()); if(!sql_modify.exec()) { qDebug()<<"modify record ["<<vecModify[i].idEscortStaffFingerPrint<<"] in EscortStaffFingerPrint table failed!"; }//end if }//end for}//end functionvoid MySQLiteEscortStaffFingerPrint::TableQuery(const QString &idescortstaff, const QString &fingersequence, QString &sRegTemplate,QString &sRegTemplate10){ std::vector<EscortStaffFingerPrintSimple> vecR; if(m_maxid<=0) return; QString sql = "select fingerprint from EscortStaffFingerPrint " "where idescortstaff=? and fingersequence=?"; QSqlQuery sql_query; sql_query.prepare(sql); sql_query.bindValue(0,idescortstaff.toInt()); sql_query.bindValue(1,fingersequence.toInt()); if(sql_query.exec()) { if(sql_query.next()) { QString fingerPrint = sql_query.value(0).toString(); QStringList Str_List = fingerPrint.split(","); if(Str_List.size()==2) { sRegTemplate = Str_List[0]; sRegTemplate10 = Str_List[1]; } } }//end if}//end function
附: .pro文件片段
QT += core gui printsupport axcontainer sql
0 0
- QT5下SQLite的增删改查示例代码
- SQLite数据库的增删改查代码
- Sqlite所作增删改查示例
- SQLite的增删改查
- sqlite的增删改查
- SQLite的增删查改
- sqlite的增删改查
- sqlite数据的增删改查------Java代码
- fmdb实现sqlite数据库的增删改查功能(下)
- php增删改查示例代码
- sqlite增删查改
- SQLite增删改查
- SQLite增删改查
- Sqlite 增删改查
- SQLite增删改查
- SQLite增删改查
- sqlite增删查改
- SQlite增删改查
- Java(Android)线程池
- java笔记-函数参数传值
- Find the Duplicate Number
- 1.shell工具sed中的正则表达式
- TCP 协议中MSS的理解
- QT5下SQLite的增删改查示例代码
- 深入理解----ThreadLocal的工作原理
- Hibernate学习笔记之ORM实体间关系“OneToOne”详解
- 九度OJ 1123 采药 0/1背包问题
- Servlet+JSP实现人员新增
- 安卓实现右滑返回效果
- 【NOIP2012借教室】(线段树区间操作)
- float 转定点计算加法和乘法
- php date函数各参数含义