I have 3 tables in my sqllite database Two are config tables and one is main table where my data is stored. now how to retrive data from main table by joining 2 tables in android, How and where to perform join operations.
Can anyone guide me.
你可以只执行一个 rawQuery。
例如这样的:
db.rawQuery("SELECT a.*
FROM table_1 a
INNER JOIN table_2 b ON a.id=b.anyId
INNER JOIN table_3 c ON b.id= c.anyId
WHERE c.key = ?", new String[]{"test"});
第一个参数是您要执行的查询。对于要添加到查询中的所有键,只需?
在查询中添加一个。
第二个参数是一个字符串数组。在这个数组中,你把你的键,就像上面给出的例子 value test
。
编辑:
也可以将 rawQuery 用于update
,insert
或delete
.
例如一个简单的更新查询:
db.rawQuery("UPDATE table_1
SET fieldA = ?,
fieldB = ?
WHERE id = ?", new String[]{"test", "test2", "1"});
类 DatabaseHelper 扩展 SQLiteOpenHelper
在你的函数中写下下面的代码......
SQLiteDatabase db = this.getReadableDatabase();
private final String MY_QUERY = "YOUR QUERY";
db.rawQuery(MY_QUERY, new String[]{"Parameter"});
db.close();
你需要rawQuery方法来解决这个问题。
private final String MY_QUERY = "SELECT * FROM table_a a INNER JOIN table_b b ON a.id=b.other_id WHERE b.property_id=?";
db.rawQuery(MY_QUERY, new String[]{String.valueOf(propertyId)});
但是如果你想做一个好的实现,为每个表创建一个 SQLiteHelper 和 DataSource 并在数据源中做关系。