原创 【原创】SQLite学习笔记3

2009-9-9 16:13 2364 8 9 分类: MCU/ 嵌入式

SQLite用一种动态类型系统。值的数据类型只和自身有关,而和所储存的位置无关。SQLite向后兼容通用的静态类型数据库引擎系统。为了达到最大的兼容性,SQLite支持为列所储存的数据建议一个类型(注意不是强迫)。理论上,任何列依旧可以储存任类型的数据,只是针对某些列,如果给定了一个建议类型的话,数据库将按建议的类型储存数据。这个被优先使用的数据类型被称为“亲和类型”。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


SQLite3中有以下几种亲和类型:


TEXT:具有TEXT亲和类型的列将把数据储存为:NULL,TEXT或者BLOB类型,若插入一个数字数据,则这个数字数据在被储存前将被转换为文本


NUMERIC:具有NUMERIC亲和类型的列,可以将数据作为五种类型中的某一种来储存。若插入一个文本数据,它会尝试将文本转换为整数或实数,若转换成功,则用INTEGERREAL类型储存数据,若不能转换则用TEXT类型储存数据。


INTEGER:


REAL:


NONE:无任何转换,数据输入时不会将数据强制转换为其他类型。


比较表达式的结果遵循以下规则:


A、  一个空储存类型的值小于任何值(包括另一个具有空储存类型的值)


B、  一个整数值或实数值小于任何文本值或BLOB


C、  一个文本值小于BLOB值。


D、  当两个BLOB文本比较时,取决于memcmp()函数。


SQLite数据库中储存的数据有下面几种类型(有可能是由数据库引擎转换而来):


NULL:空值


INTEGER:有符号整数,根据值的大小被储存为123468字节的整数。


REAL:浮点数,作为8字节IEEE浮点数保存。


TEXT:文本字符串,用数据库编码保存(UTF-8,UFT-16,UTF-16-LE


BLOBblob数据,严格按照输入格式保存


除了INTEGER PRIMARY KEY列以外数据库中的其他列能用来储存任何类型的数据。


    具体的值,不如SQL语句部分的带双引号或单引号的文字被定义为文本,若文字没带引号并没有小数点或指数则被定义为整数,若文字没带引号但有小数点或指数则被定义为实数,若值是空则被定义为空值,BLOB数据使用符号X’ABCD’来标识


SQLite3错误代码:


#define SQLITE_OK           0   /* Successful result */


#define SQLITE_ERROR        1   /* SQL error or missing database */


#define SQLITE_INTERNAL     2   /* An internal logic error in SQLite */


#define SQLITE_PERM         3   /* Access permission denied */


#define SQLITE_ABORT        4   /* Callback routine requested an abort */


#define SQLITE_BUSY         5   /* The database file is locked */


#define SQLITE_LOCKED       6   /* A table in the database is locked */


#define SQLITE_NOMEM        7   /* A malloc() failed */


#define SQLITE_READONLY     8   /* Attempt to write a readonly database */


#define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite_interrupt() */


#define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */


#define SQLITE_CORRUPT     11   /* The database disk image is malformed */


#define SQLITE_NOTFOUND    12   /* (Internal Only) Table or record not found */


#define SQLITE_FULL        13   /* Insertion failed because database is full */


#define SQLITE_CANTOPEN    14   /* Unable to open the database file */


#define SQLITE_PROTOCOL    15   /* Database lock protocol error */


#define SQLITE_EMPTY       16   /* (Internal Only) Database table is empty */


#define SQLITE_SCHEMA      17   /* The database schema changed */


#define SQLITE_TOOBIG      18   /* Too much data for one row of a table */


#define SQLITE_CONSTRAINT  19   /* Abort due to contraint violation */


#define SQLITE_MISMATCH    20   /* Data type mismatch */


#define SQLITE_MISUSE      21   /* Library used incorrectly */


#define SQLITE_NOLFS       22   /* Uses OS features not supported on host */


#define SQLITE_AUTH        23   /* Authorization denied */


#define SQLITE_ROW         100  /* sqlite_step() has another row ready */


#define SQLITE_DONE        101  /* sqlite_step() has finished executing

文章评论1条评论)

登录后参与讨论

xucun915_925777961 2009-9-10 13:28

学习一下
相关推荐阅读
huotingtu_505472073 2014-01-12 22:18
嵌入式程序员面试问题集锦
这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意...
huotingtu_505472073 2011-04-14 23:24
【转】一种实用的步进电机驱动电路
1 引言步进电动机是一种将电脉冲信号转换成角位移或线位移的精密执行元件,由于步进电机具有控制方便、体积小等特点,所以在数控系统、自动生产线、自动化仪表、绘图机和计算机外围设备中得到广泛应用。微电子学的...
huotingtu_505472073 2011-04-14 23:22
【转】几种微型电机驱动电路分析
 以下所述电路用于3V供电的微型直流电机的驱动,这种电机有两根引线,更换两根引线的极性,电机换向。该驱动电路要求能进行正反转和停止控制。 电路一: 如下图所示,这电路是作者最初设计的电路,P1.3、P...
huotingtu_505472073 2011-02-18 19:57
【转】集成运放组成的电压比较器
1. 功能及应用:主要用来判断输入信号电位之间的相对大小,它至少有两个输入端及一个输出端,通常用一个输入端接被比较信号Ui,另一个则接基准电压VR 定门限电压(或称阀值)的UT。输出通常仅且仅有二...
huotingtu_505472073 2011-01-26 08:05
【转】直流无刷电动机工作原理与控制方法12
研究结果表明,在半导体薄片上产生的霍尔电动势E可用下式表示: 式中RH ——霍尔系数(  );IH——控制电流(A);B——磁感应强度(T);d——薄片厚度(m);p——材料电阻率(Ω*s);...
huotingtu_505472073 2011-01-26 07:55
【转】直流无刷电动机工作原理与控制方法1
序言   由于直流无刷电动机既具有交流电动机的结构简单、运行可靠、维护方便等一系列优点,又具备直流电动机的运行效率高、无励磁损耗以及调速性能好等诸多优点,故在当今国民经济各领域应用日益普及。   一个...
我要评论
1
8
关闭 站长推荐上一条 /2 下一条