Android sqlite JOIN 查询与 String[] 给出的 select 列

Android sqlite JOIN query with the select columns given by String[]

我有一个包含我想要的列的字符串数组 select:

String[] columns = {"col1", "col2", "col3"};

这些列将来可能会发生变化,但始终是可用列的一个子集。

我找不到 SQLiteDatabase API 让我将此数组作为列传递。到目前为止,我唯一的解决方案是将使用 , 作为分隔符的列进行字符串连接,并将其添加到我的查询字符串中并执行 rawQuery.

有更好的解决方案吗?

编辑

查询是 JOIN 查询。

SQLiteDatabase 中的 query() 方法接受一个 String[] columns 参数,这似乎是您正在寻找的东西。

使用 , 连接字符串的原始查询也可以工作,这基本上就是 query() 在幕后所做的。

Oh, I forgot to mention it involves a JOIN too

那么您最好的选择可能是 rawQuery() 并且 SQL 您正在构建自己。 Android SQLite wrapper API 真的不太灵活。

你可以这样做-

ArrayList<String> dynamicColumnList = new ArrayList<>();
//add column dynamically to the list  
String columns[]= dynamicColumnList.toArray(new String[0]);
sqLiteDatabase.query("TableName",columns,"id",new String[]{id},null,null,null);

可以使用SQLiteQueryBuilder.

添加 JOINsetTables and pass the String array to projectionIn argument of query

感谢@RalphBergmann。