1. 程式人生 > >SQLite資料型別的注意事項

SQLite資料型別的注意事項

     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)。