SQLite3简单入门及C++ API
转载请注明出处:http://www.cnblogs.com/StartoverX/p/4660487.html
项目用到SQLite3,简单记录一下。
MySQL不同,SQLite3的数据库基于文件存放,不需要和服务器进程通信,直接通过API调用读取.db文件就可以读取数据库内容。
1.安装
ubuntu下直接apt-get即可:sudo apt-get install sqlite3 libsqlite3-dev
2.数据类型(DataType)
SQLite3有五中基本类型,分别是NULL、INTEGER、REAL、TEXT、BLOB。
NULL:空值。
INTEGER:带符号整型,根据值的大小以1,2,3,4,6或8字节存放
REAL:float实数类型,以8字节IEEE浮点数存放。
TEXT:值是文本字符串,使用数据库编码(UTF-8,UTF-16BE或者UTF-16LE)存放。
BLOB:只是一个数据块,完全按照输入存放(即没有准换),存储如图片、音视频等。
3.创建数据库
shell进入需要创建数据库文件的目录,直接sqlite3 test.db即可,查询databases,tables用.databases,.tables,查看帮助用.help。
4.C++ API
以上是最基本的sqlite3 c++ api,而我们最经常使用的就是sqlite3_open(),sqlite3_exec(),sqlite3_close()。sqlite3_exec()是对sqlite3_prepare(), sqlite3_step(), sqlite3_column(),和 sqlite3_finalize()的一个封装,完成了一个sql语句的执行和返回,举例如下:
注意callback为sqlite3_exec()的回调函数,而sqlite3_exec()的第三个参数会被传入callback的第一个参数中,由此实现与上下文的通信。
#include <stdio.h>
#include <sqlite3.h>
static int callback(void *arg, int argc, char **argv, char **azColName){
int i;
; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
;
}
int main(int argc, char **argv){
sqlite3 *db;
;
int rc;
){
fprintf(stderr, ]);
);
}
rc = sqlite3_open(argv[], &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
);
}
rc = sqlite3_exec(db, argv[], callback, , &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
;
}
参考:An Introduction To The SQLite C/C++ Interface
SQLite3简单入门及C++ API的更多相关文章
- EF CodeFirst系列(1)---CodeFirst简单入门
1.什么是CodeFirst 从EF4.1开始,EF可以支持CodeFirst开发模式,这种开发模式特别适用于领域驱动设计(Domain Driven Design,大名鼎鼎的DDD).在CodeFi ...
- JAVA Bean和XML之间的相互转换 - XStream简单入门
JAVA Bean和XML之间的相互转换 - XStream简单入门 背景介绍 XStream的简介 注解简介 应用实例 背景介绍 我们在工作中经常 遇到文件解析为数据或者数据转化为xml文件的情况, ...
- Vue的简单入门
Vue的简单入门 一.什么是Vue? vue.js也一个渐进式JavaScript框架,可以独立完成前后端分离式web项目 渐进式:vue可以从小到控制页面中的一个变量后到页面中一块内容再到整个页面, ...
- Python 简单入门指北(二)
Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...
- [转]Scrapy简单入门及实例讲解
Scrapy简单入门及实例讲解 中文文档: http://scrapy-chs.readthedocs.io/zh_CN/0.24/ Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用 ...
- RestfulAPI超简单入门
简单入门 REST -- REpresentational State Transfer,英语的直译就是"表现层状态转移" 是目前最流行的 API 设计规范,用于 Web 数据接口 ...
- shiro的简单入门使用
这里只是测试登录认证,没有web模块,没有连接数据库,用户密码放在shiro.ini配置中,密码没有加密处理,简单入门. 基于maven 先看目录结构 测试结果 pom.xml <?xml ve ...
- Flyway 简单入门教程
原文地址:Flyway 简单入门教程 博客地址:http://www.extlight.com 一.前言 Flyway 是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式.Flyway 可以 ...
- CQRS简单入门(Golang)
一.简单入门之入门 CQRS/ES和领域驱动设计更搭,故整体分层沿用经典的DDD四层.其实要实现的功能概要很简单,如下图. 基础框架选择了https://github.com/looplab/even ...
随机推荐
- COJN 0485 800503寻找平面上的极大点
800503寻找平面上的极大点 难度级别:C: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 在一个平面上,如果有两个点(x,y),(a,b) ...
- 红米note不好用
手感不错 拍摄效果暗,没有调好 有死机现象
- Flask 安装 Ubuntu 14.04
学习文档: http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world 中文版学习文档 开源中国版: ...
- iOS 设备和外部配件的通讯
首先,如果我们的应用程序想跟外设传输数据,先要透过iphone的操作系统,也就是iphoneOS,而最开始的认证过程也是在外设和iphoneOS之间发生的,苹果为这个过程提供了一颗认证芯片(这颗芯片的 ...
- SKViedoNode类
继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架 /System/L ...
- juce: 跨平台的C++用户界面库
如果你用过QT和MFC,那你必然知道QT是基于C++的跨平台库,而MFC是微软针对widows平台推出来基础类库.且不论MFC的设计如何,从我个人和身边朋友的经历来看,MFC是一些非常难以理解的类的组 ...
- 高性能MySql进化论(一):数据类型的优化_上
在数据库的性能调优的过程中会涉及到很多的知识,包括字段的属性设置是否合适,索引的建立是否恰当,表结构涉及是否合理,数据库/操作系统 的设置是否正确…..其中每个topic可能都是一个领域. 在我看来, ...
- 将activity设置成dialog样式如何设置窗口大小
具体做法和dialog窗口的设置类似,只需要在onCreate方法中,加入下列代码,既可以控制大小! // 设置窗体大小 ScreenUtil.getScreenWidth(LoadActivity ...
- 【iOS知识学习】_iOS沙盒机制
IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序仅仅能在为该应用创建的目录内读取文件,不能够訪问其它地方的内容.全部的非代码文件都保存在这个地方.比方图片.声音.属性列表和文本文件 ...
- ubuntu 下操作文件夹,出现Permission denied的解决的方法
今天遇到个诡异问题,向一个文件夹(myResources)粘贴文件的时候,出现这样一个提示 Permission denied 是权限没设好,仅仅是拷贝粘贴一个文件,怎么会这样? 解决的办法: $ s ...