封装Qt的SQLite接口类

还没测试完善。。

 1 #ifndef SQLITE_H
 2 #define SQLITE_H
 3
 4 #include <QSqlDatabase>
 5 #include <QSqlQuery>
 6 #include <QSqlRecord>
 7 #include <QSqlError>
 8 #include <QMap>
 9 #include <QInternal>
10 #include <QString>
11 #include <QDebug>
12
13
14 class Sqlite
15 {
16     QSqlDatabase db;
17     QString host_name;  //主机名
18     QString user_name;  //用户名
19     QString pwd;    //密码
20     QString db_file_name;   //数据库文件名
21     QSqlError error;
22     QSqlQuery *query;
23     QSqlRecord rec;
24 public:
25     Sqlite(QString m_file_name,QString m_host_name,QString m_user_name,QString m_pwd);
26     ~Sqlite();
27     bool create_table(QString table_name,QMap<QString,QString> table_data);   //新建表
28     int db_query(QString m_query_sql); //发送数据库语句
29     int add(QString table_name,QMap<QString,QString> data); //增加数据
30     int del(QString table_name,QMap<QString,QString> where); //删除一条记录
31     int updata(QString table_name,QMap<QString,QString> where,QMap<QString,QString> data);  //更新数据
32     int find(QString table_name,QList<QString> key,QMap<QString,QString> where,QList<QList<QString>> *row);    //查找
33     int find(QString table_name,QList<QString> key,QList<QList<QString>> *row);    //查找所有
34     QString getError();
35 };
36
37 #endif // SQLITE_H

sqlite.cpp

  1 #include "sqlite.h"
  2
  3 Sqlite::Sqlite(QString m_file_name,QString m_host_name,QString m_user_name,QString m_pwd)
  4 {
  5     host_name=m_host_name;
  6     user_name=m_user_name;
  7     pwd=m_pwd;
  8     db_file_name=m_file_name;
  9     db=QSqlDatabase::addDatabase("QSQLITE");
 10     query=new QSqlQuery(db);
 11     db.setHostName(host_name);
 12     db.setUserName(user_name);
 13     db.setPassword(pwd);
 14     db.setDatabaseName(db_file_name);
 15     if(!db.open())
 16     {
 17         qDebug()<<"database open error.";
 18         error = db.lastError();
 19     }
 20 }
 21
 22
 23 /*
 24  *
 25  * create_table函数:创建数据库表
 26  * table_name:表名
 27  * table_data:表项 名->属性
 28  *
 29  */
 30
 31 bool Sqlite::create_table(QString table_name,QMap<QString,QString> table_data)
 32 {
 33     QSqlQuery query;
 34     QString sql="create table "+table_name+" (";
 35     for(QMap<QString,QString>::const_iterator i=table_data.constBegin();i!=table_data.constEnd();i++)
 36     {
 37         sql+=i.key()+‘ ‘+i.value();
 38         if(i!=table_data.constEnd())
 39             sql+=‘,‘;
 40     }
 41     sql.chop(1);
 42     sql+=")";
 43     qDebug()<<sql;
 44     query.prepare(sql);
 45     return query.exec();
 46 }
 47
 48 /*
 49  * 向数据库中增加数据
 50  */
 51
 52 int Sqlite::add(QString table_name, QMap<QString, QString> data)
 53 {
 54     QString sql="insert into "+table_name+  "(";
 55     QString values=" values(";
 56     for(QMap<QString,QString>::const_iterator i=data.constBegin();i!=data.constEnd();i++)
 57     {
 58         sql+=i.key()+", ";
 59         values+=i.value()+", ";
 60     }
 61     sql.chop(2);
 62     values.chop(2);
 63     sql+=")";
 64     values+=")";
 65     sql+=values;
 66     qDebug()<<sql;
 67     query->prepare(sql);
 68     return query->exec();
 69 }
 70
 71 /*
 72  * 向数据库发送一条语句
 73  */
 74
 75 int Sqlite::db_query(QString m_query_sql)
 76 {
 77     query->prepare(m_query_sql);
 78     return query->exec();
 79 }
 80
 81 /*
 82  * 删除一条记录
 83  */
 84
 85 int Sqlite::del(QString table_name, QMap<QString, QString> where)
 86 {
 87     QString sql="delete ";
 88     sql+=table_name;
 89     sql+=" where ";
 90     for(QMap<QString,QString>::const_iterator i=where.constBegin();i!=where.constEnd();i++)
 91     {
 92         sql+=i.key()+"=";
 93         sql+="‘"+i.value()+"‘ ";
 94     }
 95     sql.chop(2);
 96     query->prepare(sql);
 97     return query->exec();
 98 }
 99
100 /*
101  * 修改数据库记录
102  */
103 int Sqlite::updata(QString table_name, QMap<QString, QString> where, QMap<QString, QString> data)
104 {
105     QString sql="updata "+table_name+" set";
106     for(QMap<QString,QString>::const_iterator i=where.constBegin();i!=where.constEnd();i++)
107     {
108         sql+=i.key()+"=";
109         sql+=i.value()+" ";
110     }
111     sql+="where ";
112     for(QMap<QString,QString>::const_iterator i=where.constBegin();i!=where.constEnd();i++)
113     {
114         sql+=i.key()+"=";
115         sql+=i.value()+" ";
116     }
117     return query->exec();
118 }
119
120 /*
121  * 查找所有记录
122  */
123
124 int Sqlite::find(QString table_name,QList<QString> key,QList<QList<QString>> *row)
125 {
126     QString sql="select ";
127     int len=key.size();
128     for(int i=0;i<len;i++)
129     {
130         sql+=key.at(i);
131         sql+=",";
132     }
133     sql.chop(1);
134     sql+=" from "+table_name;
135     //qDebug()<<sql;
136     query->prepare(sql);
137     if(query->exec())
138     {
139         while (query->next()) {
140             QList<QString> j;
141             for(int i=0;i<len;i++)
142             {
143                 j.append(query->value(i).toString());
144             }
145             row->append(j);
146         }
147         return 1;
148     }
149     else return 0;
150 }
151
152 int Sqlite::find(QString table_name, QList<QString> key, QMap<QString, QString> where, QList<QList<QString> > *row)
153 {
154     QString sql="select ";
155     int len=key.size();
156     for(int i=0;i<len;i++)
157     {
158         sql+=key.at(i);
159         sql+=",";
160     }
161     sql.chop(1);
162     sql+=" from "+table_name;
163     sql+=" where ";
164     for(QMap<QString,QString>::const_iterator i=where.constBegin();i!=where.constEnd();i++)
165     {
166         sql+=i.key()+"="+i.value()+",";
167     }
168     sql.chop(1);
169     //qDebug()<<sql;
170     query->prepare(sql);
171     if(query->exec())
172     {
173         while (query->next()) {
174             QList<QString> j;
175             for(int i=0;i<len;i++)
176             {
177                 j.append(query->value(i).toString());
178             }
179             row->append(j);
180         }
181         return 1;
182     }
183     else return 0;
184 }
185
186 /*
187  * 获取错误信息
188  */
189
190 QString Sqlite::getError()
191 {
192     return error.text();
193 }
194
195
196
197 Sqlite::~Sqlite()
198 {
199     db.close();
200 }

原文地址:https://www.cnblogs.com/HadesBlog/p/9159770.html

时间: 2024-10-13 00:15:32

封装Qt的SQLite接口类的相关文章

day_21(接口类,抽象类,封装)

class Payment: # 抽象类,或者接口类:制定一个规范. def pay(self):pass class QQ(Payment): def pay(self,money): print('您用qq支付了%s元' % money) class Ali(Payment): def pay(self,money): print('您用支付宝支付了%s元' % money) class Wechat(Payment): def pay(self,money): print('您用微信支付了

19 抽象类 接口类 封装. 多态

主要内容: 1.  抽象类(接口类): 制定一个规范  : from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): @abstractmethod def pay(self):pass class Alipay(Payment): def __init__(self,money): self.money = money def pay(self): print('使用支付宝支付了%s' % self.mon

Python_015(面向对象(接口类,抽象类,多态,封装)

一.抽象类与接口类 1.抽象类:抽象即类似或者说比较像的部分,继承描述的是父类与子类的一种关系,要找出这种关系,必须先抽象再继承; a:抽象分成两个层次: 1)由对象->类:将两个有相似地方的对象抽取成类; 2)由类->父类:将两个有相似地方的类抽取成父类; :抽象最主要的作用就是划分类别(可以隔离关注点,降低复杂度) 2.为什么要有抽象类 与Java一样,Python也有抽象类的概念,需要借助模块实现,它是一个特殊的类,特殊之处在于只能被继承,不能被实例化; 类是从一些对象中抽取相同的内容而

023_接口类,抽象类,多态,鸭子类型,封装

1,接口类 1 class Wechat(): 2 def pay(self,money): 3 print('已经用微信支付了%s元'%money) 4 class Alipay(): 5 def pay(self,money): 6 print('已经用支付宝支付了%s元' % money) 7 wechat = Wechat() 8 ali = Alipay() 9 # wechat.pay(100) 10 # ali.pay(200) 11 #将上面两句用下面的替换, 12 def pa

初识面向对象-接口类、抽象类、封装

接口类 # java : 面向对象编程# 设计模式 —— 接口# 接口类 : python原生不支持# 抽象类 : python原生支持的from abc import abstractmethod,ABCMetaclass Payment(metaclass=ABCMeta): # 元类 默认的元类 type @abstractmethod def pay(self,money):pass # 没有实现这个方法# 规范 :接口类或者抽象类都可以# 接口类 支持多继承,接口类中的所有的方法都必须

Qt数据库(sqlite) — 总结

#include <QtSql>QT += sql QSqlDatabase类实现了数据库连接的操作QSqlQuery类用来执行SQL语句QSqlRecord类 封装数据库所有记录 第一:QSqlDatabase类QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  采用QSQLITE数据库,QMYSQL数据库有问题?db.setHostName("localhost"); //设置数据库主机名

Swift版的SQLite帮助类

SQLiteHelper 创建SQLiteHelper类 /// SQLite数据库处理帮助类 /// /// 此类中封装了关于SQLite数据库处理的业务函数 class SQLiteHelper { // 业务代码... } 单例 private static let instance = SQLiteHelper() /// 单例 全局的数据访问接口 class var sharedInstance: SQLiteHelper { return instance } 全局变量 var db

Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript时,可以选择面向过程的方式编程,显得高效:但在实际工作中,遇到的项目需求和框架较大的情况下,选择面向对象的方式编程显得尤其重要,Javascript原生语法中没有提供表述面向对象语言特性的关键字和语法(如extends.implement).为了实现这些面向对象的特性,需要额外编写一些代码,如下.

面向对象三大特征——封装、多态、接口

一.封装 1.封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作与访问.混那个通过规定方法访问数据 2.封装的好处: 1).只能通过规定方法访问数据: 2).隐藏类的实现细节: 3).方便修改实现: 4).方便加入控制语句. 3.封装的步骤: 1).修改属性的可见性.--设为private; 2).创建爱你共有的getter/setter方法.--用于属性的读写; 3).在getter/setter方法中加入属性控制语句.--对属性值的合