android - 使用 ContentProvider 插入时的 CASE 表达式

标签 android database sqlite android-contentprovider

我访问了sqlfiddle.com并做了一些测试。

我想获得一个 SQL 语句,让我插入一行,并有一个字段(下面称为 active),其值取决于表是否为空。

我使用了以下架构:

CREATE TABLE kids (
        identifier    INTEGER PRIMARY KEY, 
        name          VARCHAR, 
        surname       VARCHAR, 
        active        INTEGER);


INSERT INTO 
    kids
VALUES 
    (1, "name1", "surname1", CASE WHEN EXISTS (SELECT * FROM kids) THEN 0 ELSE 1 END);  

INSERT INTO 
    kids
VALUES 
    (2, "name2", "surname2", CASE WHEN EXISTS (SELECT * FROM kids) THEN 0 ELSE 1 END);  

我在执行 SELECT * FROM kids 时得到以下结果:

+---+-------+----------+---+
| 1 | name1 | surname1 | 1 |
+---+-------+----------+---+
| 2 | name2 | surname2 | 0 |
+---+-------+----------+---+

这是完美的。问题是,我如何使用 SQLiteContentProvidersAndroid 中执行这个insertinsert(在 ContentProvidersSQLite 实例上都将 ContentValues 作为参数,我无法添加那里的子查询,它会被字面上读取和写入。

这有可能实现吗?如果你能想到任何其他的方法,也欢迎。

谢谢。

最佳答案

实现您的要求的另一种方法是在插入之前检查基础字段的值,然后将整个数据连同计算值一起插入 Activity 字段

关于android - 使用 ContentProvider 插入时的 CASE 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41872629/

相关文章:

android - 通过短信在 openfire 中进行客户端验证

android - 为什么 Android 中的项目高度不包裹内容?

java - Java android studio 项目中的NoFileFoundException

javascript - AngularJS 从 SQLite 数据库中填充选择下拉列表

database - pgAdmin - 角色 "my username"的连接太多

android - 如果我通过数据库浏览器更新数据库,它在我的应用程序中不会改变

java - 代码 14 : Unable to open database

java - Android Widget 未出现在 Widget 列表中

mysql - 在除一列之外的所有列上选择不同的行

ruby-on-rails - 删除模式迁移 Ruby on Rails sqlite3