android sqlite create table 指定 類型 一個 好處 欄目 Android 简体版
原文   原文鏈接

用個例子來解釋下最近遇到一個問題。java

在android sqlite3命令行中執行create table t(a)建立表。這裏不指定a的具體類型。android

而後執行insert into t values(0)。sql

若是我在sqlite3命令行中使用"select * from t where a = 0",能查詢成功;若是是「select * from t where a='0'」,則失敗。數據庫

緣由是我在調用values.put("a", 0);時,0是整型,因此數據庫中認爲是數字。因此where中使用'0',數據庫不知道該column應該使用什麼類型,因此不會轉化成數字,因此查詢不到東西。命令行

若是create table t(a integer),具體指定a的類型爲integer,則兩條語句都會查詢成功。sqlite

由於sql解析器知道該列的具體類型,因此即便指定string的'0'進來,仍然能夠自動轉化爲數字0,而後再查詢。string

 

在java編寫程序的時候的時候,由於SQLiteDatabase.rawQuery中若是指定sql參數必須爲String類型,因此若是在建立table時不指定具體類型,那string就不會自動轉化爲數字,那麼查詢就會失敗。it

相關文章
相關標籤/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
本站公眾號
   歡迎關注本站公眾號,獲取更多信息