我的sqllite数据库中有3个表 两个是配置表,一个是存储数据的主表。 现在如何通过连接android中的2个表,如何以及在何处执行连接操作来从主表中检索数据。
任何人都可以指导我。
答案 0 :(得分:9)
你可以执行一个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"});
第一个参数是您要执行的查询。对于要添加到查询中的所有密钥,只需在查询中添加?
即可
第二个参数是字符串数组。在这个数组中,您可以放置键,例如上面给出的值test
。
修改强>
也可以将rawQuery用于update
,insert
或delete
。
例如,一个简单的更新查询:
db.rawQuery("UPDATE table_1
SET fieldA = ?,
fieldB = ?
WHERE id = ?", new String[]{"test", "test2", "1"});
答案 1 :(得分:0)
类DatabaseHelper扩展了SQLiteOpenHelper
在你的功能中写下以下代码......
SQLiteDatabase db = this.getReadableDatabase();
private final String MY_QUERY = "YOUR QUERY";
db.rawQuery(MY_QUERY, new String[]{"Parameter"});
db.close();
答案 2 :(得分:-1)
您需要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,并在数据源中建立关系。