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

相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
本站公众号
   欢迎关注本站公众号,获取更多信息