我有一个连接2个表的查询获取我的android所需的数据,这里的图片是用户点击一个项目,项目的ID用于查询数据库中的正确数据,我知道我可以简单地使用database.query()
但根据我的研究,它仅用于数据库查询,在我的情况下,我应该使用rawQuery()
,它提供了更强大的数据库功能。下面是我的查询,它将表1与表2相关联,以获取表1中的用户名和表2中的用户姓(如果外键与用户键相同)
假设这是我的查询:
String sQuery = SELECT table1.ID, table2.userlastname FROM table1, table2 WHERE "+table1.ID = table2.foreign;
如果我尝试像下面那样指定用户ID,它会获取数据库表中的所有数据,这意味着我应该用“=?”替换id
但是当我处理这样一个使用db.rawQuery()
代替db.query()
`private Object userInfo(int id)
{
String sQuery = SELECT table1.ID, table2.userlastname
FROM table1, table2 WHERE "+table1.ID = id;
}`
答案 0 :(得分:3)
基本上你用问号替换参数'?'并按照它们在查询中出现的顺序将它们传递给String数组。
String queryStr = "SELECT table1.ID, table2.userlastname
FROM table1
INNER JOIN table2 ON table1.ID = table2.foreign;
WHERE table1.ID = ?";
String[] args = new String[1];
args[0] = String.valueOf(id);
Cursor cur = db.rawQuery(queryStr, args);
答案 1 :(得分:0)
在我加入表2之前它没有用:
`String queryStr = "SELECT table1.ID, table2.userlastname
FROM table1
INNER JOIN table2 ON table1.ID = table2.foreign
WHERE table1.ID = ?";
String[] args = new String[1];
args[0] = String.valueOf(id);
Cursor cur = db.rawQuery(queryStr, args);`