初始化sqlite3 (创建表)
   QString url = QDir::currentPath() + QString::fromLocal8Bit("/Msg.db");
bool isExsiting = false;
QFileInfo file(url);
if (!file.absoluteDir().exists())
{
QDir dir;
dir.mkpath(file.path());
}
if (file.exists())
isExsiting = true;
if(SQLITE_OK != sqlite3_open(url.toStdString().c_str(), &m_conn))
{
sqlite3_close(m_conn);
}
if (!isExsiting)
{
char *zErrMsg= 0; char *sql= "CREATE TABLE [netmsg](\n [currentuser] [VARCHAR(50)],\n [msgType] int,\n [peername] [VARCHAR(40)],\n [peerNickname] [VARCHAR(40)],\n [msg] TEXT,\n [other_info] TEXT, [group_name] [VARCHAR(40)],\n [send_timestamp] TEXT, \n [bExtract] int);";
sqlite3_exec(m_conn, sql, 0, 0, &zErrMsg);
}
 
插入数据:
        sprintf_s(sql, 1024, "INSERT INTO [netmsg] VALUES('%s','%d','%s','%s','%s','%s','%s','%s','%d');",
m_user_name.c_str(),msg.msgType,msg.peername.c_str(),msg.peerNickname.c_str(),
msg.msg.c_str(),msg.other_info.c_str(),msg.group_name.c_str(),msg.send_timestamp.c_str(),flag);
m_rc = sqlite3_prepare_v2(m_conn, sql, strlen(sql), &m_stmt, 0);
if(m_rc != SQLITE_OK)
{
return;
} sqlite3_step(m_stmt);
sqlite3_finalize(m_stmt);

读取数据:

char    sql[1024];
sprintf_s(sql, 1024,
"SELECT * FROM [netmsg] WHERE [peername] == '%s' and [msgType] == '%d';"
,peerName.c_str(),PUSH_USER_CHAT_MESSAGE_); m_rc = sqlite3_prepare_v2(m_conn, sql, strlen(sql), &m_stmt, 0);
if(m_rc)
{
return;
} while(sqlite3_step(m_stmt) == SQLITE_ROW)
{
ComingMsg msg; msg.msgType = sqlite3_column_int(m_stmt, 1);
msg.peername = (char*)sqlite3_column_text(m_stmt, 2);
msg.peerNickname = (char*)sqlite3_column_text(m_stmt, 3);
msg.msg = (char*)sqlite3_column_text(m_stmt, 4);
msg.other_info = (char*)sqlite3_column_text(m_stmt, 5);
msg.send_timestamp = (char*)sqlite3_column_text(m_stmt, 7); if ( sqlite3_column_int(m_stmt, 8) == 0)
{
msg.bExtract = false;
}
else
{
msg.bExtract = true;
}
msgVec.push_back(msg);
} sqlite3_finalize(m_stmt);

删除数据:

        sprintf_s(sql, 1024, "DELETE FROM [netmsg] WHERE [peername] == '%s' and [msgType] == '%d';",
peerName.c_str(),PUSH_USER_CHAT_MESSAGE_); m_rc = sqlite3_prepare_v2(m_conn, sql, strlen(sql), &m_stmt, 0);
if(m_rc != SQLITE_OK)
{ return;
} sqlite3_step(m_stmt);
sqlite3_finalize(m_stmt);

sqlite3第一次用,简单地把自己的使用过程写一下,以后再用到可以参考。

sqlite3对很多通过的SQL语句都支持,像SELECT,UPDATE,INSERT,DELETE等等都支持地很好,只要懂SQL语句就可以用sqlite3。

By 冬狼无敌  转载请注明出处:http://blog.csdn.net/superzhaifd/article/details/13583507

												

sqlite3使用详解(Qt版本)的更多相关文章

  1. IOS数据库操作SQLite3使用详解(转)

    iPhone中支持通过sqlite3来访问iPhone本地的数据库.具体使用方法如下1:添加开发包libsqlite3.0.dylib首先是设置项目文件,在项目中添加iPhone版的sqlite3的数 ...

  2. 详解 QT 源码之 Qt 事件机制原理

    QT 源码之 Qt 事件机制原理是本文要介绍的内容,在用Qt写Gui程序的时候,在main函数里面最后依据都是app.exec();很多书上对这句的解释是,使 Qt 程序进入消息循环.下面我们就到ex ...

  3. svn冲突问题详解 SVN版本冲突解决详解

    svn冲突问题详解 SVN版本冲突解决详解 (摘自西西软件园,原文链接http://www.cr173.com/html/46224_1.html) 解决版本冲突的命令.在冲突解决之后,需要使用svn ...

  4. 详解 QT 主要类 QWidget

    QWidget类是所有用户界面对象的基类,每一个窗口部件都是矩形,并且它们按Z轴顺序排列的.一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分. 先来看内容. AD: 2013云计算架构师 ...

  5. 详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)

    作为初入Qt学习的新人,花了整整一两天时间,对Qt编译版本等问题进行了一步步探索,首先感谢网站博客中文章,开始也不是很明白一些几个问题: 1.Qt版本问题 作为初学者,可能下载时这么多版本,如何选择呢 ...

  6. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

  7. Ngnix服务器详解(Windows版本)(非原创)

    文章大纲 一.Ngnix简介二.Ngnix安装三.Ngnix之静态资源访问四.Ngnix正向代理与反向代理五.Ngnix之虚拟主机配置六.Ngnix之负载均衡七.Ngnix之访问控制八.Ngnix日志 ...

  8. Hibernate注解----关联映射注解以及课程总结详解----图片版本

    上一篇,记录了Hibernate注解----类级别注解以及属性注解详解 ,我们这一节主要讲解的是Hibernate注解----关联映射注解以及课程总结详解. 本节的主要内容: 第3章 关联映射注解 3 ...

  9. SQLite3使用详解

    sqlite常量的定义(SQLite3返回值的意思): SQLITE_OK           = 0;  返回成功 SQLITE_ERROR        = 1;  SQL错误或错误的数据库 SQ ...

随机推荐

  1. Promise题目

    setTimeout(function () { console.log(1); }, 0) new Promise(function executor(resolve) { console.log( ...

  2. 根据段落编号自动添加书签的VBA

    Sub 宏1() ' ' 宏1 宏 ' '    Dim myRange As Word.Range Dim num As String, content As String Selection.Ho ...

  3. Windows C盘文件夹介绍及说明

    Documents and Settings是什么文件? 答案: 是系统用户设置文件夹,包括各个用户的文档.收藏夹.上网浏览信息.配置文件等. 补:这里面的东西不要随便删除,这保存着所有用户的文档和账 ...

  4. python学习——练习题(8)

    """ 题目:输出 9*9 乘法口诀表. """ def answer1(): """ 自己用最普通的双重循环 ...

  5. MaxScript 学习笔记【有转载】

    1. string string类型的变量是一个数组,下列操作合法:strName = $.name -- output: "Shemmy_03" strName[1] --得到字 ...

  6. 【299】◀▶ IDL - LIST 函数

    list 函数用来创建一个新的 list.list 可以包含不同的数据类型,包括数据.数组.结构体.指针.对象以及其他的 list 或者 哈希表. 序号 类名称   功能说明   语法 & 举 ...

  7. vs2012 未找到与约束 ContractName Microsoft.VisualStudio.Utilities.IContentTy...

    错误的大致内容,不能加载某个文件,需要修改web.config文件或者重命名新建.... 周末360大神帮我修复了一下电脑,然而,这一修复导致周一早上的一连串状况, 以上就是错误本尊,刚开始以为同事提 ...

  8. 网络编程基础之Socket套接字

    一.Socket介绍 1.什么是socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族 ...

  9. beego 中文教程

    https://www.kancloud.cn/hello123/beego/126087

  10. linux安装mysql服务分两种安装方法:

    linux安装mysql服务分两种安装方法: ①源码安装,优点是安装包比较小,只有十多M,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错: ②使用官方编译好的二进制文件安装,优点是安装速度 ...