SQLite数据类型的注意事项

时间:2024-05-22 21:22:54

     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中,字段没有类型或域。当给一个字段声明了类型,该字段实际上仅仅具有了该类型的亲和性。

      SQLite数据类型的注意事项


   4.注意

    (1)建表时指定字段为integer,存储的数值可以是int类型,也可以是long类型。但是查询数据时,解析cursor,如果是long类型的数据,用int去接收,得到的数据会是一个负值。(笔者就在这上面吃了亏),所以如果integer类型存放了int和long两种类型时,一定要做好标记,分别解析。

   (2)查询时通过时间来排序,可以使用cast进行类型转换。实际开发中不用cast,有时也可以正常查询(比如String转 integer)。