【问题标题】:Android SQLITE Insert into table with values coming from a subqueryAndroid SQLITE 使用来自子查询的值插入表中
【发布时间】:2017-04-02 08:15:59
【问题描述】:

在我的数据库驱动应用程序中,我需要执行插入查询,其中一个或多个字段的值来自子查询。

insert into 语句可能类似于以下示例:

INSERT INTO MyTable (field_1, field_2)
VALUES('value for field 1', (SELECT field_x FROM AnotherTable WHERE ...))

目前我正在手动构建查询:

String MyQuery = "INSERT INTO mytable (field_1, field_2)
    VALUES('value for field 1', (SELECT field_x FROM AnotherTable WHERE ...))"; // Of course my query is far more complex and is built in several steps but the concept is safe, I end up with a SQL String

SQLiteDatabase= db = getWritableDatabase();

db.execSQL(MyQuery); // And it works flawlessy as it was a Swiss Clock

我想做的是:

SQLiteDatabase db = getWritableDatabase();
ContentValues values = new ContentValues();

values.put("field_1", "value for field 1");
values.put("field_2", ThisIsAQuery("(SELECT field_x FROM AnotherTable WHERE ...)"));

db.insert("MyTable", null, values);
db.close();

假方法 ThisIsAQuery(...) 是缺失的部分,它应该告诉查询生成器“SELECT..”不是一个值,而是一个应该嵌入到插入语句中的查询。

有没有办法做到这一点?

【问题讨论】:

    标签: sqlite insert subquery


    【解决方案1】:

    ContentValues 容器的全部意义在于能够安全地使用字符串,而不会将它们解释为 SQL 命令。

    不能使用带有insert() 的子查询。从另一个表中获取值的唯一方法是执行单独的查询;在这种情况下,ThisIsAQuery() 将是 stringForQuery()longForQuery()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-22
      • 2017-03-28
      • 1970-01-01
      • 2015-12-06
      • 2015-01-03
      • 1970-01-01
      • 2014-04-20
      • 2016-06-20
      相关资源
      最近更新 更多