[ios]sqlite轻量级数据库学习连接
http://blog.csdn.net/lyrebing/article/details/8224431
SQLLite (二) :sqlite3_open, sqlite3_exec, slite3_close
http://blog.csdn.net/lyrebing/article/details/8224802
SQLLite (三):sqlite3_prepare_v2,sqlite3_step
http://blog.csdn.net/lyrebing/article/details/8225983
ios数据处理 SQLite基本知识
http://www.cnblogs.com/hanjun/archive/2012/11/24/2785627.html
http://blog.sina.com.cn/s/blog_6cad9db90101ar8c.html
以下参考:http://www.cnblogs.com/hanjun/archive/2012/11/24/2785627.html
在使用数据库的时候,主要任务是建立和数据库之间的连接,执行SQL语句。
SQLite中有下面两个重要的对象(指向结构体的指针):
sqlite3,
代表数据库连接的对象。
sqlite3_stmt,
代表SQL语句的对象。
SQLite中的重要函数:
sqlite3_open(),
打开数据库的函数,返回值为整型,指代了打开操作的结果,若结果等于SQLITE_OK这个常量,则说明成功打开数据库。若打开失败,会返回相应的错误代码。
sqlite3_prepare(),
要执行SQL语句,必须先把它编译成字节码。sqlite3_prepare函数就是负责编译SQL语句。
sqlite3_step(),
使用sqlite3_prepare函数将SQL语句编译好了以后,可以使用step函数来执行。对于有返回值的执行语句(如select),调用一次sqlite_step函数将会执行并记录一行(row)有效的结果到sqlite3_stmt里。要继续获取后面的运行结果,就要再执行sqlite3_step函数直到所有结果都记录完毕。比如,sqlite3_stmt中有语句“select * from studentTable order by id”,若结果包含多条数据,则使用sqlite3_step()函数只能得到第一行的内容,继续调用该函数直到所有结果都已记录完毕。而对于没有返回值的语句(如INSERT/UPDATE/DELETE),执行一次即可。
sqlite3_column(),
对于select语句,在使用sqlite3_step运行后,需要将结果读出来。实际上不存在一个叫sqlite3_column()的函数,这是一系列函数的代称,它们共同的作用就是从当前的结果中按列号取出值。比如一个select语句运行后,其中的一条结果为 01 “what_if” "male"。这个结果就包含3列,那么就可以利用该函数,找出特定某一列的值,根据值类型的不同,需要调用不同的函数,比如针对第一列,类型为整型,调用sqlite3_column_int(stmt, 0)来返回第一列的值;而第二列的数据类型是文本(text),相应地,调用sqlite3_column_text(stmt, 1)得到第二列的文本信息。该函数还有字节类型(byte)、双精度型(double)等。
sqlite3_finalize(),
sqlite3_stmt使用完毕,用sqlite3_finalize()函数来销毁。如果把sqlite3_stmt看作对象的话,这个函数就相当于是它的析构函数。在结束使用sqlite3_stmt,必须要调用该函数,否则会造成内存泄露。
sqlite3_close(),
数据库操作结束后,需要将数据库连接关闭。用sqlite3_close()函数来关闭,显然,这是和sqlite_open()成对出现的。在关闭之前,需要使用sqlite3_finalize()来销毁所有sqlite3_stmt对象。
sqlite3_exec(),
sqlite3_exec()为执行sql语句提供了一种便捷的方法,只需要将sql语句的字符串(char *)传递给该函数即可。我们指定回调函数(callback)来处理执行后的返回值。不过一般情况下,sqlite3_exec()函数多用于执行无返回值的语句(CREATE/DROP等),对于有返回值的操纵(如select),常结合使用sqlite3_prepare、sqlite3_step()、sqlite3_clumn()获得执行结果。
附表:
最重要的SQLite API命令
1.函数:sqlite3_open(参数:文件名、数据库地址) 打开数据库
2.函数:sqlite3_prepare (参数: 数据库、UTF-8格式的SQL、最大读取长度、语句地址、结果地址) 将UTF-8格式的SQL语句转换为编译后的语句,并返回指向该语句的指针,可将其传递给其他函数
3.函数:sqlite3_step ( 参数:编译后的语句) 在编译后的语句返回的结果中向前移一条记录或返回错误
4.函数:sqlite3_column_int (参数:编译后的语句、字段编号) 返回当前记录中的一个int字段。还有其他几个类似的函数,它们返回当前记录中的指定字段
5.函数:sqlite3_column_string (参数:编译后的语句、字段编号)
从当前记录中返回一个char *,即一个字符串,还有其他几个类似的函数,它们返回当前记录中的指定字段
6.函数:sqlite3_finalize (参数:编译后的语句)
删除编译后的语句
7.函数:sqlite3_close (参数:数据库)
关闭数据库
使用SQLite数据库的一般步骤:
1.打开数据库;
2.以每次一条的方式准备语句;
3.遍历结果--读取字段;
4.删除语句;
5.关闭数据库。
也可以用sqlite3_exec()和sqlite3_get_table()来简化上面的步骤。
[ios]sqlite轻量级数据库学习连接的更多相关文章
- Sqlite轻量级数据库
SQLite,是一款轻量型的数据库,是遵守ACID(原子性.一致性.隔离性.持久性)的关联式数据库管理系统,多用于嵌入式开发中. SQLite的数据类型:Typelessness(无类型), 可以保 ...
- [IOS][sqlite][SQL][数据库]SQL基本语句大全
参考:http://www.cnblogs.com/yubinfeng/archive/2010/11/02/1867386.html 一.基础 1.说明:创建数据库CREATE DATABASE d ...
- Linux安装SQLite轻量级数据库
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产 ...
- Android SQLite轻量级数据库的删除和查找操作
今天主要是补充昨天的内容,本打算合成一章的,但是毕竟一天一天的内容写习惯了. 就这样继续昨天的,昨天只讲了创建以及增加和查询, 其实用法都差不多,今天学长也是在原有的基础上写的,还顺便融合了Share ...
- Android SQLite轻量级数据库(简单介绍)
SQLite它是相当于嵌入到安卓里的一个小数据库吧, 它也可以使用SQL语句进行数据库的增删改查操作,但是是SQL1992的语句. 然后SQLite也有自己的语句,但是学过SQL的应该都会发现,它比较 ...
- IOS开发-UI学习-sqlite数据库的操作
IOS开发-UI学习-sqlite数据库的操作 sqlite是一个轻量级的数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了,而且它的处理速度比Mysql.PostgreSQL这 ...
- iOS - SQLite 数据库存储
1.SQLite 数据库 SQLite 是一种轻型的嵌入式数据库,安卓和 iOS 开发使用的都是 SQLite 数据库.它占用资源非常低,在嵌入式设备中,可能需要几百 K 的内存数据就够了.他的处理速 ...
- iOS sqlite数据库实现(转)
转载自:http://www.cnblogs.com/macroxu-1982/archive/2012/10/01/2709960.html 1 实现过程添加libsqlite3组件 选择项目后,在 ...
- QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData
SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...
随机推荐
- windows下编译和安装boost库
boost是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库. 获取方式 boost提供源码形式的安装包,可以从boost官方网站下载,目前最新版本是1.59.0. 本机上正好有boos ...
- lambda函数和map函数
lambda函数,简化了函数定义的书写形式,使代码更为简洁,但是使用自定义函数的定义方式更为直观,易理解 g = lambda x:x+1 #上面的lambda表达式相当于下面的自定义函数 def g ...
- excel 批量在一列数据添加单引号以及逗号
在A列后插入一列B1输入="'"&a1&"'," 然后向下填充 就ok 了 向下填充:选中上方连续单元格,鼠标放在选中区域右下角处(会显示“十” ...
- UVM中的factory机制实现
首先在Systemverilog中便有对于重载的最基本的支持. 1)定义task/function时,使用virtual关键字.那之后在test_case中调用时,便使用句柄指向的对象的类型而不是句柄 ...
- AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu) Chapter 3. Data Structures Fundamental Data Structures
10410 这题说的是给了一棵多叉树的 bfs遍历轨迹 和dfs 遍历 轨迹 在父节点向叶子节点扩展的时候优先遍历编号较小的节点.我还原出这课树特殊判定 根据bfs的顺序来建立这课树,用一个队列安排要 ...
- MyBatis学习笔记(五)——实现关联表查询
转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4264440.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创 ...
- linux常用命令:sudo 命令
sudo命令用来以其他身份来执行命令,预设的身份为root. 1.命令格式: sudo [参数] [命令] 2.命令功能: 功能: sudo可以针对单个命令授予临时权限.用户也可以通过su切换到 ...
- 阿里云服务器ECS web环境配置(LNAP)ubantu
Ubuntu 系统中,可以使用 apt-get 命令来搭建 LNMP环境.这种方式较编译方式安装更加简便 安装Nginx 1.使用 sudo apt-get install nginx 就能自动安装 ...
- 有趣的js匿名函数写法(function嵌套)
例子没有什么实际意义,只能做为思路参考 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&quo ...
- JDBC批量插入数据优化,使用addBatch和executeBatch
JDBC批量插入数据优化,使用addBatch和executeBatch SQL的批量插入的问题,如果来个for循环,执行上万次,肯定会很慢,那么,如何去优化呢? 解决方案:用 preparedSta ...