带布尔值的sqlite?
我从服务器上得到一些文本和布尔值,我需要将它们保存在数据库中 这是我的桌子。我将布尔值定义为整数,因为在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
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);