基于sqlite的Qt 数据库封装
[代码] mydata.h
10 |
#ifndef MYDATA_H |
11 |
#define MYDATA_H |
12 |
#include <QObject> |
13 |
#include <QString> |
14 |
#include <QtSql/QSqlTableModel> |
15 |
#include <QtSql/QSqlQuery> |
16 |
#include <QStringList> |
17 |
#include <QtSql/QSqlDatabase> |
18 |
19 |
class mydata : public QObject |
20 |
{ |
21 |
Q_OBJECT |
22 |
public: |
23 |
explicit mydata(QObject *parent = 0); |
24 |
~mydata(); |
25 |
void SetTableName(QString table); |
26 |
bool opendatabase(); |
27 |
28 |
bool insert(QString &table, QStringList &names,QStringList &values); |
29 |
30 |
bool Updata(QString &table, QStringList &names,QStringList &values, QString &expression); |
31 |
32 |
bool del(QString &table, QString &expression); |
33 |
34 |
void GetValues(QString &table, QStringList &values); |
35 |
private: |
36 |
QSqlTableModel *model; |
37 |
QSqlDatabase _db; |
38 |
QString _tableName; |
39 |
40 |
}; |
41 |
42 |
#endif // MYDATA_H |
001 |
/**************************************************************************** |
002 |
** |
003 |
** Copyright (C) 2013 C,g |
004 |
** All rights reserved. |
005 |
** Contact: 1213125967@qq.com |
006 |
** Please keep the author contact information. |
007 |
** 2013-10-31 |
008 |
** |
009 |
****************************************************************************/ |
010 |
#include <QtSql/QSqlQuery> |
011 |
#include <QObject> |
012 |
#include "mydata.h" |
013 |
014 |
mydata::mydata(QObject *parent) : |
015 |
QObject(parent) |
016 |
{ |
017 |
018 |
} |
019 |
020 |
mydata::~mydata() |
021 |
{ |
022 |
_db.close(); |
023 |
} |
024 |
025 |
void mydata::SetTableName(QString table) |
026 |
{ |
027 |
_tableName = table + ".db"; |
028 |
} |
029 |
030 |
/* |
031 |
打开数据库. |
032 |
*/ |
033 |
bool mydata::opendatabase() |
034 |
{ |
035 |
_db = QSqlDatabase::addDatabase("QSQLITE"); |
036 |
_db.setDatabaseName(_tableName); |
037 |
return _db.open(); |
038 |
} |
039 |
040 |
/* |
041 |
插入函数. |
042 |
构造SQL插入语句. |
043 |
*/ |
044 |
bool mydata::insert(QString &table, QStringList &names, QStringList &values) |
045 |
{ |
046 |
if (names.size() != values.size()) |
047 |
{ |
048 |
return false; |
049 |
} |
050 |
051 |
QSqlQuery query(QSqlDatabase::database()); |
052 |
053 |
QString sql = QString("insert into ") + table + QString("("); |
054 |
055 |
int i; |
056 |
057 |
for (i=0; i < names.size(); i++) |
058 |
{ |
059 |
sql = sql + names.value(i); |
060 |
if (i != names.size() - 1) |
061 |
{ |
062 |
sql+=QString(","); |
063 |
} |
064 |
else |
065 |
{ |
066 |
067 |
sql = sql + QString(")"); |
068 |
} |
069 |
} |
070 |
071 |
sql = sql + QString("values ("); |
072 |
073 |
for (i = 0; i < values.size(); i++) |
074 |
{ |
075 |
sql = sql + QString("'") + values.value(i) + QString("'"); |
076 |
if (i != values.size()-1) |
077 |
{ |
078 |
sql = sql + QString(","); |
079 |
} |
080 |
} |
081 |
082 |
sql = sql + QString(")"); |
083 |
084 |
if (query.exec(sql)) |
085 |
{ |
086 |
return true; |
087 |
} |
088 |
else |
089 |
{ |
090 |
return false; |
091 |
} |
092 |
} |
093 |
094 |
/* |
095 |
修改函数. |
096 |
构造SQL修改语句. |
097 |
*/ |
098 |
bool mydata::Updata(QString &table, QStringList &names, QStringList &values, QString &expression) |
099 |
{ |
100 |
if (names.size() != values.size()) |
101 |
{ |
102 |
return false; |
103 |
} |
104 |
105 |
//UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 |
106 |
QSqlQuery query(QSqlDatabase::database()); |
107 |
QString sql = QString("update ")+table+QString(" set "); |
108 |
for (int i = 0; i < names.size(); i++) |
109 |
{ |
110 |
sql = sql + names.value(i); |
111 |
sql = sql + QString(" = '"); |
112 |
sql = sql + values.value(i); |
113 |
sql = sql + QString("'"); |
114 |
if (i != names.size()-1) |
115 |
{ |
116 |
sql = sql + QString(" ,"); |
117 |
} |
118 |
} |
119 |
120 |
sql = sql + QString(" where ") + expression; |
121 |
if (query.exec(sql)) |
122 |
{ |
123 |
return true; |
124 |
} |
125 |
else |
126 |
{ |
127 |
return false; |
128 |
} |
129 |
} |
130 |
131 |
/* |
132 |
删除函数. |
133 |
构造SQL删除语句. |
134 |
*/ |
135 |
bool mydata::del(QString &table, QString &expression) |
136 |
{ |
137 |
//DELETE FROM 表名称 WHERE 列名称 = 值 |
138 |
QSqlQuery query(QSqlDatabase::database()); |
139 |
QString sql = QString("delete from ") + table + QString(" where ") + expression; |
140 |
141 |
if (query.exec(sql)) |
142 |
{ |
143 |
return true; |
144 |
} |
145 |
else |
146 |
{ |
147 |
return false; |
148 |
} |
149 |
} |
150 |
151 |
void mydata::GetValues(QString &table, QStringList &values) |
152 |
{ |
153 |
QSqlQuery query(QSqlDatabase::database()); |
154 |
QString sql = QString("select * from ") + table; |
155 |
query.exec(sql); |
156 |
while (query.next()) |
157 |
{ |
158 |
values << query.value(0).toString(); |
159 |
} |
160 |
} |
基于sqlite的Qt 数据库封装的更多相关文章
- Qt基于sqlite数据库的管理小软件
闲来无事,写了一个基于sqlite的数据库管理小软件. 先上图 中心思想就是: 创建一个数据库 然后每一个分组对应一个数据表 然后遍历该数据表.将名字以treewidgetItem显示出来.添加删除实 ...
- 适用于app.config与web.config的ConfigUtil读写工具类 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类) 基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD) C# 实现AOP 的几种常见方式
适用于app.config与web.config的ConfigUtil读写工具类 之前文章:<两种读写配置文件的方案(app.config与web.config通用)>,现在重新整理一 ...
- 基于sqlitecpp的sqlite3 c++封装
Github: 人富水也甜 感谢GitHub大佬: sqlitecpp github: https://github.com/SRombauts/SQLiteCpp sqlite: https:// ...
- Asp.Net Core 2.0 项目实战(4)ADO.NET操作数据库封装、 EF Core操作及实例
Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...
- 基于C#的MongoDB数据库开发应用(2)--MongoDB数据库的C#开发
在上篇博客<基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用>里面,我总结了MongoDB数据库的一些基础信息,并在最后面部分简单介绍了数据库C#驱动的 ...
- qt数据库多线程问题的解决(QSqlDatabase只能在创建它的线程中使用)
Qt数据库由QSqlDatabase::addDatabase()生成的QSqlDatabase只能在创建它的线程中使用, 在多线程中共用连接或者在另外一个线程中创建query都是不支持的几乎国内没有 ...
- Qt添加驱动——Qt数据库之添加MySQL驱动插件
Qt数据库之添加MySQL驱动插件(1) 现在可用的数据库驱动只有3种,在Qt中,我们需要自己编译其他数据库驱动的代码,让它们以插件的形式来使用.下面我们就以现在比较流行的MySQL数据库为例,说明一 ...
- Qt数据库_资料
1. QT笔记_数据库总结(一)-rojian-ChinaUnix博客.html http://blog.chinaunix.net/uid-28194872-id-3631462.html (里面有 ...
- Qt——数据库编程
一.概述 Qt提供了一个类似JDBC的数据库接口,需要为每个可以连接的特定数据库提供驱动程序,可以通过 QStringList QSqlDatabase::drivers() 知道当前版本的Qt哪些驱 ...
随机推荐
- 微软Azure云主机测试报告
http://www.cnblogs.com/sennly/p/4135658.html 1. 测试目的 本次测试的目的在于对微软云主机做性能测试,评估其是否能够满足我们业务的需求. 2. 测试项目 ...
- HW7.18
public class Solution { public static void main(String[] args) { int[][] m = {{1, 2}, {3, 4}, {5, 6} ...
- URAL-1998 The old Padawan 二分
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1998 题意:有n个石头,每个石头有个重量,每个时间点你能让一个石头飞起来,但有m个时间点 ...
- 关于Ext.NET Demo程序在IIS7.5部署出现"Ext未定义"的解决方案
有以下三点 1.应用程序池请用ASP.NET4.0经典模式 2.安装ASP.NET 控制面板-->程序和功能-->打开或关闭WIndows功能-->Internet信息服务--& ...
- [原创]Devexpress XtraReports 系列 4 创建多栏报表
昨天我们完成了 [原创]Devexpress XtraReports 系列 3 创建主从报表 今天我们继续学习新的一种报表模式:多栏报表.(Demo源码,数据库最后附上) 或许很多人会问什么是多栏报表 ...
- 一键安装GitLab7
1. Install and configure the necessary dependencies If you install Postfix to send email please sele ...
- hdoj 5386 Cover
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5386 倒着推的一个挺暴力的题,看着和数学有关系,然而并没有, 不要一看到含有数学元素就考虑这是一个数学 ...
- jQuery实现等比例缩放大图片让大图片自适应页面布局
通常我们处理缩略图是使用后台代码(PHP..net.Java等)根据大图片生成一定尺寸的缩略图,来供前台页面调用,当然也有使用前台javascript脚本将加载后的大图强行缩放,变成所谓的缩略图,这种 ...
- Makefile基础
1.规则 规则定义格式如下 目标 : 条件1 条件2 ... 命令1 命令2 ... 隐含规则和模式规则(略) 2.变量 Makefile变量像C的宏定义一样,代表一串字符,在取值的地方展开. 1)两 ...
- android 二维码生成+扫描
android 二维码生成+扫描 1.在Android应用当中,很多时候都要用到二维码扫描,来避免让用户手动输入的麻烦. Google官方自己推出了一个二维码开源项目:ZXing库. 2.这里简单介绍 ...