基于sqlite的Qt 数据库封装

摘要:
=values.size()-1)077{078sql=sql+QString(",");079}080}081082sql=sql+QString(")");083084if085{086returntrue;087}088else089{090returnfalse;091}092}093094/*095修改函数.096构造SQL修改语句.097*/098boolmydata::Updata099{100if(names.size()!

[代码]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
19classmydata :publicQObject
20{
21Q_OBJECT
22public:
23explicitmydata(QObject *parent = 0);
24~mydata();
25voidSetTableName(QString table);
26boolopendatabase();
27
28boolinsert(QString &table, QStringList &names,QStringList &values);
29
30boolUpdata(QString &table, QStringList &names,QStringList &values, QString &expression);
31
32booldel(QString &table, QString &expression);
33
34voidGetValues(QString &table, QStringList &values);
35private:
36QSqlTableModel *model;
37QSqlDatabase _db;
38QString _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
014mydata::mydata(QObject *parent) :
015QObject(parent)
016{
017
018}
019
020mydata::~mydata()
021{
022_db.close();
023}
024
025voidmydata::SetTableName(QString table)
026{
027_tableName = table +".db";
028}
029
030/*
031打开数据库.
032*/
033boolmydata::opendatabase()
034{
035_db = QSqlDatabase::addDatabase("QSQLITE");
036_db.setDatabaseName(_tableName);
037return_db.open();
038}
039
040/*
041插入函数.
042构造SQL插入语句.
043*/
044boolmydata::insert(QString &table, QStringList &names, QStringList &values)
045{
046if(names.size() != values.size())
047{
048returnfalse;
049}
050
051QSqlQuery query(QSqlDatabase::database());
052
053QString sql = QString("insert into ") + table + QString("(");
054
055inti;
056
057for(i=0; i < names.size(); i++)
058{
059sql = sql + names.value(i);
060if(i != names.size() - 1)
061{
062sql+=QString(",");
063}
064else
065{
066
067sql = sql + QString(")");
068}
069}
070
071sql = sql + QString("values (");
072
073for(i = 0; i < values.size(); i++)
074{
075sql = sql + QString("'") + values.value(i) + QString("'");
076if(i != values.size()-1)
077{
078sql = sql + QString(",");
079}
080}
081
082sql = sql + QString(")");
083
084if(query.exec(sql))
085{
086returntrue;
087}
088else
089{
090returnfalse;
091}
092}
093
094/*
095修改函数.
096构造SQL修改语句.
097*/
098boolmydata::Updata(QString &table, QStringList &names, QStringList &values, QString &expression)
099{
100if(names.size() != values.size())
101{
102returnfalse;
103}
104
105//UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
106QSqlQuery query(QSqlDatabase::database());
107QString sql = QString("update ")+table+QString(" set ");
108for(inti = 0; i < names.size(); i++)
109{
110sql = sql + names.value(i);
111sql = sql + QString(" = '");
112sql = sql + values.value(i);
113sql = sql + QString("'");
114if(i != names.size()-1)
115{
116sql = sql + QString(" ,");
117}
118}
119
120sql = sql + QString(" where ") + expression;
121if(query.exec(sql))
122{
123returntrue;
124}
125else
126{
127returnfalse;
128}
129}
130
131/*
132删除函数.
133构造SQL删除语句.
134*/
135boolmydata::del(QString &table, QString &expression)
136{
137//DELETE FROM 表名称 WHERE 列名称 = 值
138QSqlQuery query(QSqlDatabase::database());
139QString sql = QString("delete from ") + table + QString(" where ") + expression;
140
141if(query.exec(sql))
142{
143returntrue;
144}
145else
146{
147returnfalse;
148}
149}
150
151voidmydata::GetValues(QString &table, QStringList &values)
152{
153QSqlQuery query(QSqlDatabase::database());
154QString sql = QString("select * from ") + table;
155query.exec(sql);
156while(query.next())
157{
158values << query.value(0).toString();
159}
160}

免责声明:文章转载自《基于sqlite的Qt 数据库封装》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用jedis执行lua脚本Halcon学习笔记之支持向量机(二)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PL SQL显示的字段长度不全

PL SQL显示的字段长度不全:18位,只显示17位。 解决方法:只是在PL SQL中显示少一位,但是按18位查询,都正确。             说明:Oracle数据库存储没问题,只是PL SQL工具显示有点问题。             解决方法:在列字段长度,设置为19位。(多设一位即可。)其它同理,20位的设置21位。...

Oracle数据库sql常用

case when 函数 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END...

oracle 学习之 PL/SQL

/* PL/SQL : Oracle内部语言 SQLServer的是:TSQL Procedural Language/SQL 是oracle在标准的SQL语言上的扩展,PL/SQL不仅允许嵌入SQL语言,还可以 定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得 更加的强大. 优点:提...

cx_Oracle连接oracle数据库

一、准备工作 #下载oracle客户端 https://www.oracle.com/database/technologies/instant-client/downloads.html #windows都下载32位 #下载后解压,将解压后的路径添加到系统环境变量中 #如果用Navicat的话,在选项OCI配置内加载oci.dll文件 二、单表代码...

数据库操作封装类 DBHelper.cs

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Configuration; using System.Data.Common; using System.Data; namespace Model {...

sqlite乱码的解决方法

在命令行下通过sqlite3.exe创建数据库后,通过insert语句插入中文内容后,在程序或sqlite管理工具中打开乱码。网上有篇文章描述的就是这样一个过程。链接:http://www.cnblogs.com/niunan/archive/2009/10/31/1593516.html 通过谷歌资料发现,这个问题很难解决,要么插入中文乱码,要么只能显示...