SQLite数据类型的注意事项
2017-11-18 18:06
211 查看
sqlite使用动态数据类型,即值的数据类型与值相关,与其容器无关。
1.存储类(Storage Class):数据保存到文件后的表现形式。有:
NULL - 空值
INTERGER - 有符号整数类型
REAL - 浮点数类型
TEXT - 字符串(其编码取决于DB的编码)
BLOB - 二进制表示。
sqlite通过值的类型来判断其类型:
(1)sql语句中被单引号或双引号括起来的文字,被指派为TEXT。
(2)如果文字没有被引号括起来,且没有小数点和指数,被指派为INTEGER.
(3)如果文字没有被引号括起来,且有小数点和指数,被指派为REAL.
2.类型亲和性:任何列仍然可以存储任何类型的数据,当数据插入时,该字段的数据将会优先采用亲缘类型作为该值的存储方式。类型亲和性预定了用什么存储类在字段中存储值。一个字段的亲和性由它预声明的类型决定。
有:
TEXT
NUMERIC
INTEGER
REAL
NONE
3.声明类型:创建表时使用的的数据类型。在SQLite中,字段没有类型或域。当给一个字段声明了类型,该字段实际上仅仅具有了该类型的亲和性。
4.注意
(1)建表时指定字段为integer,存储的数值可以是int类型,也可以是long类型。但是查询数据时,解析cursor,如果是long类型的数据,用int去接收,得到的数据会是一个负值。(笔者就在这上面吃了亏),所以如果integer类型存放了int和long两种类型时,一定要做好标记,分别解析。
(2)查询时通过时间来排序,可以使用cast进行类型转换。实际开发中不用cast,有时也可以正常查询(比如String转 integer)。
1.存储类(Storage Class):数据保存到文件后的表现形式。有:
NULL - 空值
INTERGER - 有符号整数类型
REAL - 浮点数类型
TEXT - 字符串(其编码取决于DB的编码)
BLOB - 二进制表示。
sqlite通过值的类型来判断其类型:
(1)sql语句中被单引号或双引号括起来的文字,被指派为TEXT。
(2)如果文字没有被引号括起来,且没有小数点和指数,被指派为INTEGER.
(3)如果文字没有被引号括起来,且有小数点和指数,被指派为REAL.
2.类型亲和性:任何列仍然可以存储任何类型的数据,当数据插入时,该字段的数据将会优先采用亲缘类型作为该值的存储方式。类型亲和性预定了用什么存储类在字段中存储值。一个字段的亲和性由它预声明的类型决定。
有:
TEXT
NUMERIC
INTEGER
REAL
NONE
3.声明类型:创建表时使用的的数据类型。在SQLite中,字段没有类型或域。当给一个字段声明了类型,该字段实际上仅仅具有了该类型的亲和性。
4.注意
(1)建表时指定字段为integer,存储的数值可以是int类型,也可以是long类型。但是查询数据时,解析cursor,如果是long类型的数据,用int去接收,得到的数据会是一个负值。(笔者就在这上面吃了亏),所以如果integer类型存放了int和long两种类型时,一定要做好标记,分别解析。
(2)查询时通过时间来排序,可以使用cast进行类型转换。实际开发中不用cast,有时也可以正常查询(比如String转 integer)。
相关文章推荐
- 在Servlet中往数据库中写入时间类型数据时的注意事项
- 常用sql命令@oracle数据类型概括@权限、角色、用户的创建于使用@伪列及其注意事项
- 【C++注意事项】1 数据类型及类型转换
- text数据类型字段输出显示内容(注意事项)
- Opencv中Mat数据类型CV_8UC3转换为 CV_32FC3注意事项
- SQLite字段类型使用注意事项
- 数据类型转换及注意事项
- C语言注意事项——数据类型、操作符和表达式
- Asp.net中数据类型赋值注意事项
- 使用webService时,gsoap数据类型注意事项
- MySQL数据类型:UNSIGNED注意事项
- mysql权限和使用注意事项及mysql 数据类型详解和innodb,myisam区别
- Python - 简单数据类型之注意事项
- C语言中数据类型间的转换问题和注意事项
- SQLite中使用时的数据类型注意
- 关于js数据类型注意事项
- 【C++注意事项】1 数据类型及类-------自http://blog.csdn.net/nomasp处转载
- C# 使用DateTimePicker与数据库中类型为datetime的数据作比较的一些注意事项
- MySQL_MySQL数据类型:UNSIGNED注意事项
- 关于数据库中varchar/nvarchar类型数据的获取注意事项