【发布时间】: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..”不是一个值,而是一个应该嵌入到插入语句中的查询。
有没有办法做到这一点?
【问题讨论】: