在SQLite数据库中使用布尔值

时间:2016-07-07 17:24:56

标签: android database sqlite relational-database android-sqlite

我读到SQLite数据库支持boolean值。这是我创建表格的查询:

private static final String CREATE_TABLE_PROMEMORIE_RSI = "CREATE TABLE IF NOT EXIXSTS "
            + promemorieRSI.PROMEMORIE_RSI_TABLE + " ("
            + promemorieRSI.ID + " integer primary key autoincrement, "
            + promemorieRSI.GIORNO + " integer, "
            + promemorieRSI.MESE + " integer, "
            + promemorieRSI.ANNO + " integer, "
            + promemorieRSI.NOT_RIP_RSI + " boolean, "
            + promemorieRSI.RIP_VAL_RSI + " integer, "
            + promemorieRSI.UNIT_RIP_VAL_RSI + " text, "
            + promemorieRSI.NOT_FISSA_RSI + " boolean, "
            + promemorieRSI.ETICHETTA_RSI + " text, "
            + promemorieRSI.REQUEST_CODE_RSI + " integer);";

如您所见,我将not_rip_rsinot_fissa_rsi列设置为boolean个值。我读到数据库分别将truefalse值存储为10整数值,但现在我无法理解:

  • 当我向数据库添加记录时,我应该为这些列使用什么值?

为了更好的解释,请参阅我的插入方法:

public void inserisciPromemoriaRSI(Integer giorno, Integer mese, Integer anno, Boolean not_rip, Integer rip_val, String unit_rip_val, Boolean not_fissa, String etichetta, Integer request_code){
        ContentValues val = new ContentValues();
        val.put(promemorieRSI.GIORNO, giorno);
        val.put(promemorieRSI.MESE, mese);
        val.put(promemorieRSI.ANNO, anno);
        val.put(promemorieRSI.NOT_RIP_RSI, not_rip);
        val.put(promemorieRSI.RIP_VAL_RSI, rip_val);
        val.put(promemorieRSI.UNIT_RIP_VAL_RSI, unit_rip_val);
        val.put(promemorieRSI.NOT_FISSA_RSI, not_fissa);
        val.put(promemorieRSI.ETICHETTA_RSI, etichetta);
        val.put(promemorieRSI.REQUEST_CODE_RSI, request_code);
        mDb.insert(promemorieRSI.PROMEMORIE_RSI_TABLE, null, val);
    }

如您所见,要添加记录,我对这些列使用boolean值。即使我将这些列的条目的值设置为boolean类型,当我添加记录时,我应该使用整数值10而不是{ {1}}值,或者数据库会自动将boolean true1存储为0吗?我是否必须使用false来获取布尔值?我在代码中犯了错误吗?如果是这样,我该如何解决这个问题。有什么建议?

1 个答案:

答案 0 :(得分:1)

SQLite中不存在boolean。而是将boolean值作为INTEGER存储在SQLite中。您可以使用0 false1 true。当您从数据库中选择INTEGER时,要将其更改为boolean,请使用:

boolean isTrue = cursor.getInt(columnNo) > 0;

如果您想要值false,那么:

boolean isFalse = cursor.getInt(columnNo) < 1;

请查看this帖子和this帖子以获取更多信息。