android sqlite 查询boolean,关于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
我读到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_rsi和not_fissa_rsi列设置为boolean值。 我读到数据库将true和false值分别存储为1和0整数值,但是现在我不明白这一点:
将记录添加到数据库时,这些列应使用什么值?
为了获得更好的解释,这是我的insert方法:
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类型,当我添加记录时,也应该使用1或0的整数值而不是boolean的值,否则 数据库自动将true存储为1和false存储为0? 我是否必须使用cursor.getInt(column_index) == 1来获取布尔值? 我的代码有误吗? 如果是这样,我该如何解决这个问题。 有什么建议么?
您的代码使用什么语言? PS您已经用谷歌搜索了吗?
SQLite中的存储布尔值的可能重复项
已经看到有关此论点的问题,但无法回答我的问题
boolean在SQLite中不存在。 而是在SQLite中将boolean值存储为数据库中的INTEGER。 可以使用的值为0(对于false)和1(对于true)。 当您从数据库中选择INTEGER并将其更改为boolean时,可以使用:
boolean isTrue = cursor.getInt(columnNo) > 0;
如果要false的值,则:
boolean isFalse = cursor.getInt(columnNo) < 1;
看看这篇文章和这篇文章以获取更多信息。
我已经看过这些帖子,但是我根本听不懂。如果将这些列的值设置为boolean类型,则在插入记录时让我传递integer值(1或< x3>)还是boolean?
您在表中创建的列的类型为integer,并传递值1或0。 boolean在SQLite中不存在,并存储为整数。
让我看看是否理解。在查询表时,我必须将boolean类型更改为integer(是否大写相同,对吗?),但是我可以传递boolean值键入insert方法,数据库将自动将其转换为integer(0或1)(因此,我只需要更改查询即可制成表)
差不多了您必须传递integer,对于false来说是0,对于true来说是1。如果传递boolean,则应用可能崩溃。SQLite中不存在数据类型boolean。
非常感谢您:)
我必须对我的提醒应用程序进行重大更改。如果您的知识非常基础,则可以对其进行硬编码,但是我喜欢它
这会不必要地增加db的大小
+10101010是的,我同意。我不认为SQLite具有像MSSQL一样的BIT数据类型
更多推荐




所有评论(0)