http://zh.wikipedia.org/wiki/SQLite 维基百科
http://baike.baidu.com/view/19310.htm 百度百科
由于在iPhone3.0上已经支持了Core Data,是苹果一个新的API,并且是基于SQlite的。速度也是非常快吧。所以我们对SQLite仅需要懂一些即可,以下是一些基础信息 一、:常用接口(2个重要结构体和5个主要函数) sqlite3 *pdb,数据库句柄,跟文件句柄 FILE 很类似 sqlite3_stmt *stmt,这个相当于 ODBC 的 Command 对象,用于保存编译好的 SQL 语句 sqlite3_open(),打开数据库 sqlite3_exec(),执行非查询的 sql 语句 sqlite3_prepare(),准备 sql 语句,执行 select 语句或者要使用 parameter bind 时,用这个函数(封装了 sqlite3_exec ) . Sqlite3_step(),在调用 sqlite3_prepare 后,使用这个函数在记录集中移动。 Sqlite3_close(),关闭数据库文件 还有一系列的函数,用于从记录集字段中获取数据,如 sqlite3_column_text(),取 text 类型的数据。 sqlite3_column_blob (),取 blob 类型的数据 sqlite3_column_int(),取 int 类型的数据 其他工具函数 1. 得到结果总共的行数 int sqlite3_column_count(sqlite3_stmt *pStmt); 如果过程没有返回值,如update,将返回0 2. 得到当前行中包含的数据个数 int sqlite3_data_count(sqlite3_stmt *pStmt); 如果sqlite3_step返回SQLITE_ROW,可以得到列数,否则为零。 3. 得到数据行中某个列的数据 sqlite3_column_xxx(sqlite3_stmt*,int iCol); 在sqlite3_step返回SQLITE_ROW后,使用它得到第iCol列的数据。 其中的xxx代表: blob:指向保存数据内存的指针 bytes,bytes16: 得到该blob类型数据的大小,或者text转换为UTF8/UTF16的字符串长度。 double,int,int64: 数值 text,text16:字符串指针 type:该列的数据类型(SQLITE_INTEGER,SQLITE_FLOAT,SQLITE_TEXT,SQLITE_BLOB,SQLITE_NULL) 注意:如果对该列使用了不同与该列本身类型适合的数据读取方法,得到的数值将是转换过的结果。 4. 得到数据行中某个列的数据的类型 int sqlite3_column_type(sqlite3_stmt*,int iCol); 返回值:SQLITE_INTEGER,SQLITE_FLOAT,SQLITE_TEXT,SQLITE_BLOB,SQLITE_NULL 使用的方法和sqlite3_column_xxx()函数类似。 二、:sqlite数据类型介绍 在进行数据库Sql操作之前,首先有个问题需要说明,就是Sqlite的数据类型,和其他的数据库不同,Sqlite支持的数据类型有他自己的特色,这个特色有时会被认为是一个潜在的缺点,但是这个问题并不在我们的讨论范围之内。 大多数的数据库在数据类型上都有严格的限制,在建立表的时候,每一列都必须制定一个数据类型,只有符合该数据类型的数据可以被保存在这一列当中。而在Sqlite 2.X中,数据类型这个属性只属于数据本生,而不和数据被存在哪一列有关,也就是说数据的类型并不受数据列限制(有一个例外:INTEGER PRIMARY KEY,该列只能存整型数据)。 但是当Sqlite进入到3.0版本的时候,这个问题似乎又有了新的答案,Sqlite的开发者开始限制这种无类型的使用,在3.0版本当中,每一列开始拥有自己的类型,并且在数据存入该列的时候,数据库会试图把数据的类型向该类型转换,然后以转换之后的类型存储。当然,如果转换被认为是不可行的,Sqlite仍然会存储这个数据,就像他的前任版本一样。 举个例子,如果你企图向一个INTEGER类型的列中插入一个字符串,Sqlite会检查这个字符串是否有整型数据的特征,如果有而且可以被数据库所识别,那么该字符串会被转换成整型再保存,如果不行,则还是作为整型存储。 总的来说,所有存在Sqlite 3.0版本当中的数据都拥有以下之一的数据类型: 空(NULL):该值为空 整型(INTEGEER):有符号整数,按大小被存储成1,2,3,4,6或8字节。 实数(REAL):浮点数,以8字节指数形式存储。 文本(TEXT):字符串,以数据库编码方式存储(UTF-8,UTF-16BE 或者 UTF-16-LE)。 BLOB:BLOB数据不做任何转换,以输入形式存储。 ps: 在关系数据库中,CLOB和BLOB类型被用来存放大对象。BOLB表示二进制大对象,这种数据类型通过用来保存图片,图象,视频等。CLOB表示字符大对象,能够存放大量基于字符的数据。 对应的,对于数据列,同样有以下的数据类型: TEXT NUMERIC INTEGER REAL NONE 数据列的属性的作用是确定对插入的数据的转换方向: TEXT 将数据向文本进行转换,对应的数据类型为NULL,TEXT 或 BLOB NUMERIC 将数据向数字进行转换,对应的数据类型可能为所有的五类数据,当试图存入文本 时将执行向整型或浮点类型的转换(视具体的数值而定),转换若不可行,则保留文本类型存储,NULL或BLOB不做变化 INTEGER 将数据向整型转换,类似于NUMERIC,不同的是没有浮点标志的浮点数将转换为整型保存 REAL 将数据向浮点数类型转换,类似于NUMERIC,不同的是整数将转换为浮点数保存 NULL 不做任何转换的数据列类型
|