Sindy McMore
Sindy McMore

Reputation: 127

SQLite Querying with user defined data

I have a query that joins 2 tables get the required data on my android, what picture here is the user clicks on an item and the item's ID is used to query the right data in the Database, I know I can simply use database.query() but it according to my research it is used for simply database querying only, in my case I should use rawQuery() which provides more power of the database. below is my query which links table 1 to table 2 to get the users name from table one and user last name from table 2 if the foreign key is the same as user key

Assume this is my query:

 String sQuery = SELECT table1.ID, table2.userlastname FROM table1, table2 WHERE "+table1.ID = table2.foreign;

If i try to specify the user id like below it gets all data in the database table which means i should replace id with "=?" but how do I do this when I am dealing which such a query, one that uses db.rawQuery() instead of db.query()

  `private Object userInfo(int id)
   {
    String sQuery = SELECT table1.ID, table2.userlastname 
    FROM table1, table2 WHERE "+table1.ID = id;

   }`

Upvotes: 0

Views: 47

Answers (2)

theboldbaldguy
theboldbaldguy

Reputation: 101

Basically you replace the parameter by question marks '?' and pass them through a String array in the order they appear in the query.

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);

Upvotes: 3

Sindy McMore
Sindy McMore

Reputation: 127

it did not work until I joined table 2 like:

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

Upvotes: 0

Related Questions