SQLite学习笔记3

前端之家收集整理的这篇文章主要介绍了SQLite学习笔记3前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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


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_OK0/* Successful result */


#define sqlITE_ERROR1/* sql error or missing database */


#define sqlITE_INTERNAL2/* An internal logic error in sqlite */


#define sqlITE_PERM3/* Access permission denied */


#define sqlITE_ABORT4/* Callback routine requested an abort */


#define sqlITE_BUSY5/* The database file is locked */


#define sqlITE_LOCKED6/* A table in the database is locked */


#define sqlITE_NOMEM7/* A malloc() Failed */


#define sqlITE_READONLY8/* Attempt to write a readonly database */


#define sqlITE_INTERRUPT9/* Operation terminated by sqlite_interrupt() */


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


#define sqlITE_CORRUPT11/* The database disk image is malformed */


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


#define sqlITE_FULL13/* Insertion Failed because database is full */


#define sqlITE_CANTOPEN14/* Unable to open the database file */


#define sqlITE_PROTOCOL15/* Database lock protocol error */


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


#define sqlITE_SCHEMA17/* The database schema changed */


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


#define sqlITE_CONSTRAINT19/* Abort due to contraint violation */


#define sqlITE_MISMATCH20/* Data type mismatch */


#define sqlITE_MISUSE21/* Library used incorrectly */


#define sqlITE_NOLFS22/* Uses OS features not supported on host */


#define sqlITE_AUTH23/* Authorization denied */


#define sqlITE_ROW100/* sqlite_step() has another row ready */


#define sqlITE_DONE101/* sqlite_step() has finished executing

原文链接:https://www.f2er.com/sqlite/199938.html

猜你在找的Sqlite相关文章