带布尔值的sqlite?

带布尔值的sqlite?,sqlite,Sqlite,我从服务器上得到一些文本和布尔值,我需要将它们保存在数据库中 这是我的桌子。我将布尔值定义为整数,因为在sqlite中没有布尔值 db.execSQL("CREATE TABLE outcomesStore(id INTEGER PRIMARY KEY AUTOINCREMENT , allowgo INTEGER,cod TEXT,youdidComments INTEGER, youwent INTEGER,ByDate INTEGER ," + "OnCom

我从服务器上得到一些文本和布尔值,我需要将它们保存在数据库中

这是我的桌子。我将布尔值定义为整数,因为在sqlite中没有布尔值

db.execSQL("CREATE TABLE outcomesStore(id INTEGER PRIMARY KEY AUTOINCREMENT , allowgo INTEGER,cod TEXT,youdidComments INTEGER, youwent INTEGER,ByDate INTEGER ," +
                "OnCompletion INTEGER,yourtext TEXT , yourGroup TEXT, yourConsultation INTEGER )");
我从服务器获取这些值

Store[] Storedata = Configuration.getStore();


    booleanvalues[0] = Store[0].isallowgo ();
像这样插入

 helperdatabase = new DatabaseHelperInurseBusiness(this);
            db = helperdatabase.getWritableDatabase();

            ContentValues insertOutcomes = new ContentValues();


            insertOutcomes.put(helperdatabase.ALLOW_GO,booleanvalues[0]);
        db.insert("outcomesStore", helperdatabase.ALLOW_GO,insertOutcomes);

它甚至没有给出任何错误也不起作用。

实际上,SQLite确实支持
BOOLEAN
类型,但可能与您期望的方式不完全一样

您可以使用标准的
create TABLE
创建
BOOLEAN
类型的列,然后填充它:

CREATE TABLE mytable (name VARCHAR(10), flag BOOLEAN);
INSERT INTO mytable (name, flag) VALUES ('Alice', 0);
INSERT INTO mytable (name, flag) VALUES ('Bob',   1);
然后,您可以取回数据,并在执行此操作时使用标准的
布尔逻辑:

SELECT * FROM mytable WHERE flag
或者使用不同的
布尔表达式:

SELECT * FROM mytable WHERE NOT flag
等等。()

换句话说,这一切都非常有效,唯一的问题是您必须使用
0
而不是
FALSE
1
而不是
TRUE
(这包括尝试从客户端软件设置值)。请注意,这有点类似于其他SQL引擎(例如,PostgreSQL支持使用
'0'
/
'1'
'f'
/
't'
false
true
通过客户端软件设置
false
/
true
值)

此外,如果在数值上下文中使用此
布尔
字段(如加法或乘法),它将表现为数字0或1,而在其他SQL引擎中,添加
布尔
整数
可能会因不兼容的类型而导致异常。

我找到了解决方案

谢谢Yaqub Ahamad

    insertOutcomes.put(DatabaseHelperInurseBusiness.ALLOW_GO,storedata.isAllowGo()== true ? 1:0);

插入前将
布尔值[0]
转换为数字。试试这个:insertOutcomes.put(helperdatabase.ALLOW_GO,1);