首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SQLite数据库中使用布尔值

在SQLite数据库中使用布尔值
EN

Stack Overflow用户
提问于 2016-07-07 17:24:56
回答 1查看 7.9K关注 0票数 2

我看到SQLite数据库支持boolean值。下面是创建表的查询:

代码语言:javascript
运行
复制
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整数值,但现在我无法理解这一点:

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

为了得到更好的解释,下面是我的插入方法:

代码语言:javascript
运行
复制
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的整数值而不是boolean值,还是数据库会自动将true存储为1false将存储为0?我需要使用cursor.getInt(column_index) == 1来获得布尔值吗?我的代码有错吗?如果是的话,我如何解决这个问题?有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-07 21:03:04

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

代码语言:javascript
运行
复制
boolean isTrue = cursor.getInt(columnNo) > 0;

如果您想要一个false值,那么:

代码语言:javascript
运行
复制
boolean isFalse = cursor.getInt(columnNo) < 1;

有关更多信息,请查看this帖子和this帖子。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38251678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档