[代码] 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
 mydata.cpp 
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 数据库封装的更多相关文章

  1. Qt基于sqlite数据库的管理小软件

    闲来无事,写了一个基于sqlite的数据库管理小软件. 先上图 中心思想就是: 创建一个数据库 然后每一个分组对应一个数据表 然后遍历该数据表.将名字以treewidgetItem显示出来.添加删除实 ...

  2. 适用于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通用)>,现在重新整理一 ...

  3. 基于sqlitecpp的sqlite3 c++封装

    Github: 人富水也甜 感谢GitHub大佬: sqlitecpp github:  https://github.com/SRombauts/SQLiteCpp sqlite: https:// ...

  4. 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 ...

  5. 基于C#的MongoDB数据库开发应用(2)--MongoDB数据库的C#开发

    在上篇博客<基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用>里面,我总结了MongoDB数据库的一些基础信息,并在最后面部分简单介绍了数据库C#驱动的 ...

  6. qt数据库多线程问题的解决(QSqlDatabase只能在创建它的线程中使用)

    Qt数据库由QSqlDatabase::addDatabase()生成的QSqlDatabase只能在创建它的线程中使用, 在多线程中共用连接或者在另外一个线程中创建query都是不支持的几乎国内没有 ...

  7. Qt添加驱动——Qt数据库之添加MySQL驱动插件

    Qt数据库之添加MySQL驱动插件(1) 现在可用的数据库驱动只有3种,在Qt中,我们需要自己编译其他数据库驱动的代码,让它们以插件的形式来使用.下面我们就以现在比较流行的MySQL数据库为例,说明一 ...

  8. Qt数据库_资料

    1. QT笔记_数据库总结(一)-rojian-ChinaUnix博客.html http://blog.chinaunix.net/uid-28194872-id-3631462.html (里面有 ...

  9. Qt——数据库编程

    一.概述 Qt提供了一个类似JDBC的数据库接口,需要为每个可以连接的特定数据库提供驱动程序,可以通过 QStringList QSqlDatabase::drivers() 知道当前版本的Qt哪些驱 ...

随机推荐

  1. 微软Azure云主机测试报告

    http://www.cnblogs.com/sennly/p/4135658.html 1. 测试目的 本次测试的目的在于对微软云主机做性能测试,评估其是否能够满足我们业务的需求. 2. 测试项目 ...

  2. HW7.18

    public class Solution { public static void main(String[] args) { int[][] m = {{1, 2}, {3, 4}, {5, 6} ...

  3. URAL-1998 The old Padawan 二分

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1998 题意:有n个石头,每个石头有个重量,每个时间点你能让一个石头飞起来,但有m个时间点 ...

  4. 关于Ext.NET Demo程序在IIS7.5部署出现"Ext未定义"的解决方案

    有以下三点 1.应用程序池请用ASP.NET4.0经典模式 2.安装ASP.NET   控制面板-->程序和功能-->打开或关闭WIndows功能-->Internet信息服务--& ...

  5. [原创]Devexpress XtraReports 系列 4 创建多栏报表

    昨天我们完成了 [原创]Devexpress XtraReports 系列 3 创建主从报表 今天我们继续学习新的一种报表模式:多栏报表.(Demo源码,数据库最后附上) 或许很多人会问什么是多栏报表 ...

  6. 一键安装GitLab7

    1. Install and configure the necessary dependencies If you install Postfix to send email please sele ...

  7. hdoj 5386 Cover

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5386 倒着推的一个挺暴力的题,看着和数学有关系,然而并没有, 不要一看到含有数学元素就考虑这是一个数学 ...

  8. jQuery实现等比例缩放大图片让大图片自适应页面布局

    通常我们处理缩略图是使用后台代码(PHP..net.Java等)根据大图片生成一定尺寸的缩略图,来供前台页面调用,当然也有使用前台javascript脚本将加载后的大图强行缩放,变成所谓的缩略图,这种 ...

  9. Makefile基础

    1.规则 规则定义格式如下 目标 : 条件1 条件2 ... 命令1 命令2 ... 隐含规则和模式规则(略) 2.变量 Makefile变量像C的宏定义一样,代表一串字符,在取值的地方展开. 1)两 ...

  10. android 二维码生成+扫描

    android 二维码生成+扫描 1.在Android应用当中,很多时候都要用到二维码扫描,来避免让用户手动输入的麻烦. Google官方自己推出了一个二维码开源项目:ZXing库. 2.这里简单介绍 ...