基于sqlite的Qt 数据库封装 - 开源中国社区

合集下载

[Android]Sqlite数据库操作工具封装类

[Android]Sqlite数据库操作工具封装类

[Android]Sqlite数据库操作⼯具封装类sqlite 数据库封装类DatabaseUtil.java(封装的类)package com.jack.androidbase.tools;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;/*** sqlite 数据库操作类*/public class DatabaseUtil {private static final String TAG = "DatabaseUtil";/*** Database Name*/private static final String DATABASE_NAME = "student_data";/*** Database Version*/private static final int DATABASE_VERSION = 1;/*** Table Name*/private static final String DATABASE_TABLE = "tb_student";/*** Table columns*/public static final String KEY_NAME = "name";public static final String KEY_GRADE = "grade";public static final String KEY_ROWID = "_id";/*** Database creation sql statement*/private static final String CREATE_TABLE ="create table " + DATABASE_TABLE + " (" + KEY_ROWID + " integer primary key autoincrement, "+ KEY_NAME + " text not null, " + KEY_GRADE + " text not null);";/*** Context*/private final Context mCtx;private DatabaseHelper mDbHelper;private SQLiteDatabase mDb;/*** Inner private class. Database Helper class for creating and updating database.*/private static class DatabaseHelper extends SQLiteOpenHelper {DatabaseHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}/*** onCreate method is called for the 1st time when database doesn't exists.*/@Overridepublic void onCreate(SQLiteDatabase db) {Log.i(TAG, "Creating DataBase: " + CREATE_TABLE);db.execSQL(CREATE_TABLE);}/*** onUpgrade method is called when database version changes.*/@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {Log.w(TAG, "Upgrading database from version " + oldVersion + " to "+ newVersion);}}/*** Constructor - takes the context to allow the database to be* opened/created** @param ctx the Context within which to work*/public DatabaseUtil(Context ctx) {this.mCtx = ctx;}/*** This method is used for creating/opening connection** @return instance of DatabaseUtil* @throws SQLException*/public DatabaseUtil open() throws SQLException {mDbHelper = new DatabaseHelper(mCtx);mDb = mDbHelper.getWritableDatabase();return this;}/*** This method is used for closing the connection.*/public void close() {mDbHelper.close();}/*** This method is used to create/insert new record record.** @param name* @param grade* @return long*/public long insert(String name, String grade) {ContentValues initialValues = new ContentValues();initialValues.put(KEY_NAME, name);initialValues.put(KEY_GRADE, grade);return mDb.insert(DATABASE_TABLE, null, initialValues);}/*** This method will delete record.** @param rowId* @return boolean*/public boolean delete(long rowId) {return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; }/*** This method will deleteAll record.** @return*/public boolean deleteAll() {return mDb.delete(DATABASE_TABLE, " 1 ", null) > 0;}/*** This method will return Cursor holding all the records.** @return Cursor*/public Cursor fetchAll() {return mDb.query(DATABASE_TABLE, new String[]{KEY_ROWID, KEY_NAME, KEY_GRADE}, null, null, null, null, null);}/*** This method will return Cursor holding the specific record.** @param id* @return Cursor* @throws SQLException*/public Cursor fetch(long id) throws SQLException {Cursor mCursor =mDb.query(true, DATABASE_TABLE, new String[]{KEY_ROWID,KEY_NAME, KEY_GRADE}, KEY_ROWID + "=" + id, null,null, null, null, null);if (mCursor != null) {mCursor.moveToFirst();}return mCursor;}/*** This method will update record.** @param id* @param name* @param standard* @return boolean*/public boolean update(int id, String name, String standard) {ContentValues args = new ContentValues();args.put(KEY_NAME, name);args.put(KEY_GRADE, standard);return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + id, null) > 0;}}使⽤详解:DatabaseUtil dbUtil = new DatabaseUtil(this);dbUtil.open();switch (v.getId()) {case R.id.other_btn_sqlite_list: //查询Cursor cursor = dbUtil.fetchAll();if (cursor != null) {while (cursor.moveToNext()) {Log.i("Student", "ID:" + cursor.getInt(0) + ",Student Name: " + cursor.getString(1) + ",Grade: " + cursor.getString(2));}}break;case R.id.other_btn_sqlite_add:dbUtil.insert("Prashant Thakkar", "100");Log.i("Student", "add over");break;case R.id.other_btn_sqlite_update:dbUtil.update(1, "aa", "bb");Log.i("Student", "update over");break;case R.id.other_btn_sqlite_del:dbUtil.delete(2);Log.i("Student", "delete over");break;case R.id.other_btn_sqlite_del_all:dbUtil.deleteAll();Log.i("Student", "delete all over");break;}dbUtil.close();参考⽹址:https:///sowhat4999/p/4439856.htmlhttps:///ProMonkey/p/5765616.html (有添加单例模式)本博客地址:本⽂原⽂地址:转载请著名出处!谢谢~~。

SQLite数据库在Qt5开发环境中的应用

SQLite数据库在Qt5开发环境中的应用

s t r q u r y=s t r q u r y+QS t r i n g (“ ) ”) ;

b o o l b s u e c e s s= s q l _ q u e e x e c ( s u r y ) ; / , 返 回 创 建 表 的 结 果
r e t u r n b s u c c e s s ;
调用QS q l Q u e r y : : e x e c Oi  ̄数 。对数 据库 操作 首 先需使 用QS q l Q u e r y  ̄ 0 建表 。代码 如 下:
b o o l my d a t a : : Cr e a t e T a b l e ( QS t r i n g&t ab l e , QS t r i n g L i s t &n a me s ) {
i n t i ;
f o r ( i = 0 ; i <n a m e s . s i z e ( ) ; i H)
{ s t r q u r y s t r q u r y+n a me s . v a l u e ( i ) ;
Q t 5 提 供 了一种 进 程 内数 据 库S QL i t e 。它 是 一个 轻 量 级 的数据 库 。没 有其 他依 赖 ,可 以应 用 于多种 操 作系 统平 台 。概括 下来 具有
E L E C T R O N I C S WO R L D・ 探索与观察
S QL i t e 数据库在Qt 5 开发环境 中的应用
安 徽博微 长安 电子有 限公 司 龙 灏
【 摘要 】实r  ̄ -  ̄ 目中常接触使用Or a c l e 、S QL S e r v e r 、My S QL 等数据库。但这些数据库安装使 用比较繁琐 。Qt 5 提供 了一种进程 内数据库

QT连接Sqlite数据库操作

QT连接Sqlite数据库操作

1. 创建新类sqldb,会自动生成两个文件sqldb.h和sqldb.cpp(需指定其基类为QOBject):<sqldb.h>#include <QObject>#include <QSqlDatabase>class SqlDB : public Qobject{Q_OBJECTpublic:explicit SqlDB(QObject *parent = 0);void connectDB(); //创建连接函数void closeDB(); //创建关闭函数signals:private:QSqlDatabase db; //建立数据库的文件描述符};2.在sqldb.cpp中实现数据库函数的功能<sqldb.cpp>void SqlDB::connectDB(){db = QSqlDatabase::addDatabase("QSQLITE"); //添加sqlite类型的数据库db.setDatabaseName("server.s3db"); //指定数据库名为server.s3dbif (!db.open()){QMessageBox::critical(NULL, "sqlDB","connect error");return;}}void SqlDB::closeDB(){db.close();}3.在窗口中使用数据库<mainwin.h>添加头文件:#include <QSqlTableModel>#include "sqldb.h"在private:中添加数据库的打开指针和打开模式:SqlDB *db;QSqlTableModel *userModel;4.在窗口中的具体操作<mainwin.cpp>在主窗口中建立TableView控件#include "mainwin.h"#include "ui_mainwin.h"MainWin::MainWin(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWin){ui->setupUi(this);db = new SqlDB(this); //建立db->connectDB(); //连接this->userModel->clear(); //初始化用户模式this->userModel = new QSqlTableModel; //建立用户模式空间this->userModel->setTable("user"); //设置用户模式userModel->setHeaderData(0, Qt::Horizontal, "QQ");userModel->setHeaderData(1, Qt::Horizontal, "昵称");userModel->setHeaderData(2, Qt::Horizontal, "密码");userModel->setHeaderData(3, Qt::Horizontal, "IP");userModel->setHeaderData(4, Qt::Horizontal, "port");userModel->setHeaderData(5, Qt::Horizontal, "状态");this->userModel->select();this->ui->tableView->setModel(userModel);}。

sqlite3的基本使用以及封装使用

sqlite3的基本使用以及封装使用

sqlite3的基本使⽤以及封装使⽤1基本使⽤1.打开数据库int sqlite3_open(const char *filename, // 数据库的⽂件路径sqlite3 **ppDb // 数据库实例);2.执⾏任何SQL语句int sqlite3_exec(sqlite3*, // ⼀个打开的数据库实例const char *sql, // 需要执⾏的SQL语句int (*callback)(void*,int,char**,char**), // SQL语句执⾏完毕后的回调void *, // 回调函数的第1个参数char **errmsg // 错误信息);3.检查SQL语句的合法性(查询前的准备)int sqlite3_prepare_v2(sqlite3 *db, // 数据库实例const char *zSql, // 需要检查的SQL语句int nByte, // SQL语句的最⼤字节长度sqlite3_stmt **ppStmt, // sqlite3_stmt实例,⽤来获得数据库数据const char **pzTail);4.查询⼀⾏数据int sqlite3_step(sqlite3_stmt*); // 如果查询到⼀⾏数据,就会返回SQLITE_ROW5.利⽤stmt获得某⼀字段的值(字段的下标从0开始)double sqlite3_column_double(sqlite3_stmt*, int iCol); // 浮点数据int sqlite3_column_int(sqlite3_stmt*, int iCol); // 整型数据sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol); // 长整型数据const void *sqlite3_column_blob(sqlite3_stmt*, int iCol); // ⼆进制⽂本数据const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol); // 字符串数据1创建⼀个model类,.h⽂件#import <Foundation/Foundation.h>@interface IWStudent : NSObject@property (nonatomic, assign) int ID;@property (nonatomic, copy) NSString *name;@property (nonatomic, assign) int age;@end.m⽂件#import"IWStudent.h"@implementation IWStudent@end2创建⼯具类....封装⽅法.h⽂件#import <Foundation/Foundation.h>@class IWStudent;@interface IWStudentTool : NSObject/*** 添加学⽣** @param student 需要添加的学⽣*/+ (BOOL)addStudent:(IWStudent *)student;/*** 获得所有的学⽣** @return 数组中装着都是IWStudent模型*/+ (NSArray *)students;/*** 根据搜索条件获得对应的学⽣** @param condition 搜索条件*/+ (NSArray *)studentsWithCondition:(NSString *)condition;@end.m⽂件#import"IWStudentTool.h"#import"IWStudent.h"#import <sqlite3.h>@implementation IWStudentTool// static的作⽤:能保证_db这个变量只被IWStudentTool.m直接访问static sqlite3 *_db;+ (void)initialize{// 0.获得沙盒中的数据库⽂件名NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"student.sqlite"]; // 1.创建(打开)数据库(如果数据库⽂件不存在,会⾃动创建)int result = sqlite3_open(filename.UTF8String, &_db);if (result == SQLITE_OK) {NSLog(@"成功打开数据库");// 2.创表const char *sql = "create table if not exists t_student (id integer primary key autoincrement, name text, age integer);";char *errorMesg = NULL;int result = sqlite3_exec(_db, sql, NULL, NULL, &errorMesg);if (result == SQLITE_OK) {NSLog(@"成功创建t_student表");} else {NSLog(@"创建t_student表失败:%s", errorMesg);}} else {NSLog(@"打开数据库失败");}}+ (BOOL)addStudent:(IWStudent *)student{NSString *sql = [NSString stringWithFormat:@"insert into t_student (name, age) values('%@', %d);", , student.age];char *errorMesg = NULL;int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errorMesg);return result == SQLITE_OK;}+ (NSArray *)students{// 0.定义数组NSMutableArray *students = nil;// 1.定义sql语句const char *sql = "select id, name, age from t_student;";// 2.定义⼀个stmt存放结果集sqlite3_stmt *stmt = NULL;// 3.检测SQL语句的合法性int result = sqlite3_prepare_v2(_db, sql, -1, &stmt, NULL);if (result == SQLITE_OK) {NSLog(@"查询语句是合法的");students = [NSMutableArray array];// 4.执⾏SQL语句,从结果集中取出数据while (sqlite3_step(stmt) == SQLITE_ROW) { // 真的查询到⼀⾏数据// 获得这⾏对应的数据IWStudent *student = [[IWStudent alloc] init];// 获得第0列的idstudent.ID = sqlite3_column_int(stmt, 0);// 获得第1列的nameconst unsigned char *sname = sqlite3_column_text(stmt, 1); = [NSString stringWithUTF8String:(const char *)sname];// 获得第2列的agestudent.age = sqlite3_column_int(stmt, 2);// 添加到数组[students addObject:student];}} else {NSLog(@"查询语句⾮合法");}return students;}+ (NSArray *)studentsWithCondition:(NSString *)condition{// 0.定义数组NSMutableArray *students = nil;// 1.定义sql语句const char *sql = "select id, name, age from t_student where name like ?;";// 2.定义⼀个stmt存放结果集sqlite3_stmt *stmt = NULL;// 3.检测SQL语句的合法性int result = sqlite3_prepare_v2(_db, sql, -1, &stmt, NULL);if (result == SQLITE_OK) {NSLog(@"查询语句是合法的");students = [NSMutableArray array];// 填补占位符的内容NSString *newCondition = [NSString stringWithFormat:@"%%%@%%", condition]; // NSLog(@"%@", newCondition);sqlite3_bind_text(stmt, 1, newCondition.UTF8String, -1, NULL);// 4.执⾏SQL语句,从结果集中取出数据while (sqlite3_step(stmt) == SQLITE_ROW) { // 真的查询到⼀⾏数据// 获得这⾏对应的数据IWStudent *student = [[IWStudent alloc] init];// 获得第0列的idstudent.ID = sqlite3_column_int(stmt, 0);// 获得第1列的nameconst unsigned char *sname = sqlite3_column_text(stmt, 1); = [NSString stringWithUTF8String:(const char *)sname];// 获得第2列的agestudent.age = sqlite3_column_int(stmt, 2);// 添加到数组[students addObject:student];}} else {NSLog(@"查询语句⾮合法");}return students;}@end2.封装为⼯具类。

qt mysql使用的简单封装

qt mysql使用的简单封装

qt mysql使用的简单封装以下是一个简单的封装示例,用于在Qt中使用MySQL数据库:1. 创建一个MySQLWrapper类:cpp#ifndef MYSQLWRAPPER_H#define MYSQLWRAPPER_H#include <QtSql>#include <QSqlDatabase>#include <QSqlQuery>#include <QSqlError>class MySQLWrapper{public:bool connect(const QString& host, const QString& username, const QString& password, const QString& database);void disconnect();bool isConnected() const;bool execQuery(const QString& query);bool execNonQuery(const QString& query);QSqlQuery getQuery(const QString& query);private:QSqlDatabase m_database;};#endif MYSQLWRAPPER_H2. 实现MySQLWrapper类的方法:cpp#include "mysqlwrapper.h"bool MySQLWrapper::connect(const QString& host, const QString& username, const QString& password, const QString& database) {创建数据库连接m_database = QSqlDatabase::addDatabase("QMYSQL");m_database.setHostName(host);m_database.setUserName(username);m_database.setPassword(password);m_database.setDatabaseName(database);打开数据库连接if (!m_database.open()){qDebug() << "Failed to connect to database:" << m_stError().text();return false;}return true;}void MySQLWrapper::disconnect(){关闭数据库连接m_database.close();}bool MySQLWrapper::isConnected() const{检查数据库连接状态return m_database.isOpen();}bool MySQLWrapper::execQuery(const QString& query){QSqlQuery q(query, m_database);执行查询操作if (!q.exec()){qDebug() << "Failed to execute query:" << stError().text();return false;}return true;}bool MySQLWrapper::execNonQuery(const QString& query){QSqlQuery q(query, m_database);执行非查询操作if (!q.exec()){qDebug() << "Failed to execute non-query:" <<stError().text();return false;}return true;}QSqlQuery MySQLWrapper::getQuery(const QString& query){QSqlQuery q(query, m_database);返回查询结果return q;}3. 在使用MySQL数据库的地方,创建MySQLWrapper对象并使用相关方法:cpp#include "mysqlwrapper.h"int main(){MySQLWrapper db;连接到MySQL数据库db.connect("localhost", "root", "password", "mydatabase");if (db.isConnected()){执行查询操作db.execQuery("SELECT * FROM mytable");执行非查询操作db.execNonQuery("INSERT INTO mytable (name, age) VALUES ('John', 25)");获取查询结果QSqlQuery query = db.getQuery("SELECT * FROM mytable");while (query.next()) {QString name = query.value(0).toString();int age = query.value(1).toInt();qDebug() << "Name:" << name << ", Age:" << age;}}断开与数据库的连接db.disconnect();return 0;}这是一个简单的封装示例,用于在Qt中使用MySQL数据库。

QT与SQLite数据库学习资料

QT与SQLite数据库学习资料

当然我们一定要记住这个顺序,先创建数据库,然后再去创建一个表(作为菜鸟的我犯这个错误了),还有一点需要注意的红色标记的那句话,我参考的数籍一般都这样写db.setDatabaseName(":memory:");这样就把生成的数据库文件是在内存当中的,在工程文件目录下找不到。

上面使我们创建了一个数据库和一个表,那么我们如何把它呈现在我们的QTableview部件上呢?QSqlTableModel *model = new QSqlTableModel;model->setTable("person");model->setEditStrategy(QSqlTableModel::OnManualSubmit);model->select();ui->tableView->setModel(model);ui->tableView->show();上面的代码就把数据库中的信息不加筛选的打印到控件上了。

第一次写博客大家多多包涵。

Qt中提高sqlite的读写速度SQLite数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度。

例如:向数据库中插入100万条数据,在默认的情况下如果仅仅是执行query.exec("insert into DataBase(......)values(......)");就会打开和关闭文件100万次,所以速度当然会很慢。

SQLite 数据库是支持事务操作的,于是我们就可以通过事务来提高数据库的读写速度。

事务的基本原理是:数据库管理系统首先会把要执行的sql语句存储到内存当中,只有当commit()的时候才一次性全部执行所有内存中的数据库。

下面是一个简单的QT sqlite数据库事务的例子:#include <QtCore/QCoreApplication>#include <QtSql>#include <iostream>using namespace std;int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QSqlDatabase db_sqlite = QSqlDatabase::addDatabase("QSQLITE", "connSQLite");db_sqlite.setDatabaseName("SQLiteDB.db3");db_sqlite.open();QSqlQuery query("", db_sqlite);bool bsuccess = false;QTime tmpTime;// 开始启动事务db_sqlite.transaction();tmpTime.start();for(int i = 0; i<100000; i++){bsuccess = query.exec("insert into DataBase(D_1,D_2,D_3,D_4,D_5) values('TT','TT','TT','TT','TT')");if (!bsuccess){cout<<"Error occur"<<endl;break;}}// 提交事务,这个时候才是真正打开文件执行SQL语句的时候db_mit();cout<<"10000条数据耗时:"<<tmpTime.elapsed()<<"ms"<<endl;}其实QT 操作sqlite数据库增加事务的功能就是上面例子中蓝色字体标出的两句话,如果去掉这两句话,程序又会还原为:打开文件——执行query.exec(...)——关闭文件。

在Qt中使用SQLite数据库

在Qt中使用SQLite数据库

在Qt中使⽤SQLite数据库前⾔SQLite(sql)是⼀款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,⾮常适合嵌⼊式系统。

Qt5以上版本可以直接使⽤SQLite(Qt⾃带驱动)。

⽤法1 准备1. 引⼊SQL模块在Qt项⽬⽂件(.pro⽂件)中,加⼊SQL模块:QT += sql2. 引⽤头⽂件在需要使⽤SQL的类定义中,引⽤相关头⽂件。

例如:#include <QSqlDatabase>#include <QSqlError>#include <QSqlQuery>2 使⽤1. 建⽴数据库检查连接、添加数据库驱动、设置数据库名称、数据库登录⽤户名、密码。

QSqlDatabase database;if (QSqlDatabase::contains("qt_sql_default_connection")){database = QSqlDatabase::database("qt_sql_default_connection");}else{database = QSqlDatabase::addDatabase("QSQLITE");database.setDatabaseName("MyDataBase.db");database.setUserName("XingYeZhiXia");database.setPassword("123456");}上述代码解释:(1)第⼀⾏中,建⽴了⼀个QSqlDatabase对象,后续的操作要使⽤这个对象。

(2)if语句⽤来检查指定的连接(connection)是否存在。

这⾥指定的连接名称(connection name)是qt_sql_default_connection,这是Qt默认连接名称。

基于Qt4的SQLite数据库应用编程

基于Qt4的SQLite数据库应用编程

基于Qt4的SQLite数据库应用编程
潘学文;文汉云
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2011(000)004
【摘要】介绍SQLite数据库的特点与QtSQL模块的组成部分,结合一个编程实例,讲解了Qt中SQLite数据库应用编程过程,包括SQLite数据库文件的创建、数据库的连接、数据库的SQL语句及模型类操作方法.
【总页数】2页(P49-50)
【作者】潘学文;文汉云
【作者单位】长江大学计算机科学学院,荆州434023;长江大学计算机科学学院,荆州434023
【正文语种】中文
【相关文献】
1.基于Linux与Qt4的网络数码相框实现 [J], 童凯;张红雨
2.基于Linux Qt4下自定义对话框的设计与实现 [J], 项伟
3.基于Qt4/VS2010平台的自动测试系统 [J], 李林林;杨帆;张飞飞;宋保清;宋兵兵
4.基于Qt4的远程视频监控系统设计与实现 [J], 徐志娟
5.基于Qt4的LHCD相位控制软件的设计 [J], 尚家宇;杨永;单家方;吴则革;朱梁因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于sqlite的Qt 数据库封装 - 开源中国社区
}
sql = sql + QString(" where ") + expression; if (query.exec(sql)) {
return true; } else {
return false; } }
/* 删除函数. 构造SQL删除语句.
int i;
基于sqlite的Qt 数据库封装 - 开源中国社区
for (i=0; i < names.size(); i++) {
sql = sql + names.value(i); if (i != names.size() - 1) {
sql+=QString(","); } else {
sql = sql + QString(")"); } }
代码片段(2)
顶0 踩
[全屏查看所有代码]
1. [代码]mydata.h
1 /************************************************************************?****
2 **
3 ** Copyright (C) 2013 C,g
4 ** All rights reserved.
if (names.size() != values.size()) {
return false; }
//UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 QSqlQuery query(QSqlDatabase::database()); QString sql = QString("update ")+table+QString(" set "); for (int i = 0; i < names.size(); i++) {
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);
*/ bool mydata::del(QString &table, QString &expression) {
//DELETE FROM 表名称 WHERE 列名称 = 值 QSqlQuery query(QSqlDatabase::database()); QString sql = QString("delete from ") + table + QString(" where ") + expre
sql = sql + QString(","); } }
sql = sql + QString(")");
if (query.exec(sql)) {
return true; } else {
return false; } }
/* 修改函数. 构造SQL修改语句.
*/ bool mydata::Updata(QString &table, QStringList &names, QStringList &values, Q {
if (query.exec(sql)) {
return true; } else {
return false; } }
void mydata::GetValues(QString &table, QStringList &values) {
QSqlQuery query(QSqlDatabase::database()); QString sql = QString("select * from ") + table; query.exec(sql); while (query.next()) {
26
bool opendatabase();
27
28
bool insert(QString &table, QStringList &names,QStringList &values);
29
30
bool Updata(QString &table, QStringList &names,QStringList &values, QString
8 **
9 ****************************************************************************/
10 #include <QtSql/QSqlQuery>
11 #include <QObject>
12 #include "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>
3/7
15-6-1
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
sql = sql + QString("values (");
for (i = 0; i < values.size(); i++) {
sql = sql + QString("'") + values.value(i) + QString("'"); if (i != values.size()-1) {
5 ** Contact: 1213125967@
6 ** Please keep the author contact information.
7 ** 2013-10-31
8 **
9 ****************************************************************************/
2 **
3 ** Copyright (C) 2013 C,g
4 ** All rights reserved.
5 ** Contact: 1213125967@
6 ** Please keep the author contact information.
7 ** 2013-10-31
sql = sql + names.value(i); sql = sql + QString(" = '"); sql = sql + values.value(i); sql = sql + QString("'"); if (i != names.size()-1) {
sql = sql + QString(" ,"); }
26 {
27
_tableName = table + ".db";
28 }
29
30 /*
31
打开数据库.
32 */
33 bool mydata::opendatabase()
34 {
35
_db = QSqlDatabase::addDatabase("QSQLITE");
36
_db.setDatabaseName(_tableName);
47
{
48
return false;
49
}ery query(QSqlDatabase::database());
52
53
QString sql = QString("insert into ") + table + QString("(");
54
/code/snippet_237375_26033
/code/snippet_237375_26033
4/7
15-6-1
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
13
14 mydata::mydata(QObject *parent) :
相关文档
最新文档