SQLite查询用户定义的数据

时间:2015-11-13 14:35:41

标签: android database sqlite

我有一个连接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;

   }`

2 个答案:

答案 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);`