我正在使用sqlite for android,我想要一个函数,它返回一个包含满足条件的所有对象的数组。我来解释一下:
我有两张桌子: Peliculas
private static final String CREATE_PELICULAS_TABLE =
"CREATE TABLE " + PELICULAS_TABLE + " (" +
KEY_PELICULA_ID + " LONG PRIMARY KEY, "
+ KEY_PELICULA_PORTADA + " BLOB NOT NULL, "
+ KEY_PELICULA_DIRECTOR + "TEXT NOT NULL"
+ ")";
潘迪恩特斯
private static final String CREATE_PENDIENTES_TABLE =
"CREATE TABLE " + PENDIENTES_TABLE + " (" +
KEY_PENDIENTES_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_PEN_IDSerieOPeli + " LONG NOT NULL );";
在数据库中,"Pendientes“是已被添加为待定(pendientes)的电影(películas)的In。我想要一个函数,它通过一个内部连接返回一个包含所有电影的数组。
我认为带有内连接的查询如下所示:
private final String QUERY= "SELECT * FROM PELICULAS_TABLE a INNER JOIN PENDIENTES_TABLE b WHERE a.KEY_PELICULA_ID=b.KEY_PEN_IDSerieOPeli";
我想我也必须使用rawQuery,但我不确定。
但我不知道如何在一个数组中返回所有这些电影(骨盆项目)。
发布于 2018-09-28 05:02:57
您可以使用rawQuery方法或推荐的查询方法返回游标。
所以你可以选择
Cursor csr = db.rawQuery(QUERY,null);
或
Cursor csr = db.query("PELICULAS_TABLE a INNER JOIN PENDIENTES_TABLE b",null,"a.KEY_PELICULA_ID=b.KEY_PEN_IDSerieOPeli",null,null,null,null);
你的方法(函数)可以是:-
public ArrayList<Movies> getAllMoviesThatFulfillCondition() {
ArrayList<Movies> rv = new ArrayList<>();
Cursor csr = db.query("PELICULAS_TABLE a INNER JOIN PENDIENTES_TABLE b",null,"a.KEY_PELICULA_ID=b.KEY_PEN_IDSerieOPeli",null,null,null,null);
while (csr.moveToNext()) {
long current_SerieOPeli = csr.getLong(csr.getColumnIndex(KEY_PEN_IDSerieOPeli));
long current_Pelicula_ID = csr.getLong(csr.getColumnIndex(KEY_PELICULA_ID));
byte[] current_Pelicula_Portada = csr.getBlob(csr.getColumnIndex(KEY_PELICULA_PORTADA));
String current_Pelicula_Director = csr.getString(csr.getColumnIndex(KEY_PELICULA_DIRECTOR));
rv.add(new Movie(??????????));
}
csr.close();
return rv;
}
如果结果游标中的任何列名不是唯一的(例如,KEY_PELICULA_ID解析为字符串ID,KEY_PENDIENTES_ID解析为字符串"ID"),则必须使用作为<>E220
private final String QUERY= "SELECT * FROM PELICULAS_TABLE INNER JOIN PENDIENTES_TABLE ON " + PELICULAS_TABLE + "." + KEY_PELICULA_ID + "=" + PENDIENTES_TABLE + "." + KEY_PEN_IDSerieOPeli;
https://stackoverflow.com/questions/52542122
复制相似问题