我从服务器获取一些文本和布尔值我需要将它们保存在数据库中.
这是我的桌子.我在sqlite中将布尔值定义为INTEGER couse,没有布尔值.
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 )");
Run Code Online (Sandbox Code Playgroud)
我从服务器获取这些值.
Store[] Storedata = Configuration.getStore();
booleanvalues[0] = Store[0].isallowgo ();
Run Code Online (Sandbox Code Playgroud)
并插入这样的
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);
Run Code Online (Sandbox Code Playgroud)
它没有工作,甚至没有给出任何错误.
mvp*_*mvp 27
实际上,SQLite确实支持BOOLEAN类型,但可能并不完全符合您的预期.
您可以BOOLEAN使用标准创建类型列CREATE TABLE,然后填充它:
CREATE TABLE mytable (name VARCHAR(10), flag BOOLEAN);
INSERT INTO mytable (name, flag) VALUES ('Alice', 0);
INSERT INTO mytable (name, flag) VALUES ('Bob', 1);
Run Code Online (Sandbox Code Playgroud)
然后,您可以恢复数据,并BOOLEAN在执行此操作时使用标准逻辑:
SELECT * FROM mytable WHERE flag
Run Code Online (Sandbox Code Playgroud)
或使用不同的BOOLEAN表达:
SELECT * FROM mytable WHERE NOT flag
Run Code Online (Sandbox Code Playgroud)
等等.(强制性SQLFiddle)
换句话说,这一切的伟大工程,唯一的缺点是,你必须使用0替代FALSE和1取代TRUE(这包括试图从客户端软件中设置的值).请注意,这有点类似于其它SQL引擎(例如,PostgreSQL支持使用'0'/ '1','f'/ 't'和false/ true设置FALSE/ TRUE通过客户端软件的值).
此外,如果您BOOLEAN在数字上下文中使用此字段(如添加或乘法),它将表现为数字0或1,而在其他SQL引擎中添加BOOLEAN并INTEGER可能由于不兼容的类型而导致异常.
| 归档时间: |
|
| 查看次数: |
23840 次 |
| 最近记录: |