如何在Android应用程序中执行SQLite查询?

时间:2009-08-07 06:25:00

标签: android sqlite android-sqlite

我正在尝试在我的Android数据库上使用此查询,但它不会返回任何数据。我错过了什么吗?

SQLiteDatabase db = mDbHelper.getReadableDatabase();
    String select = "Select _id, title, title_raw from search Where(title_raw like " + "'%Smith%'" +
    ")";        
    Cursor cursor = db.query(TABLE_NAME, FROM, 
            select, null, null, null, null);
    startManagingCursor(cursor);
    return cursor;

5 个答案:

答案 0 :(得分:108)

这将返回所需的光标

Cursor cursor = db.query(TABLE_NAME, new String[] {"_id", "title", "title_raw"}, 
                "title_raw like " + "'%Smith%'", null, null, null, null);

答案 1 :(得分:57)

或者,db.rawQuery(sql,selectionArgs)存在。

Cursor c = db.rawQuery(select, null);

答案 2 :(得分:26)

如果您要匹配的模式是变量,这也会有效。

dbh = new DbHelper(this);
        SQLiteDatabase db = dbh.getWritableDatabase();
        Cursor c = db.query("TableName", new String[]{"ColumnName"}
        , "ColumnName LIKE ?" ,new String[]{_data+"%"}, null, null, null);
        while(c.moveToNext())
        {
            // your calculation goes here
        }

答案 3 :(得分:10)

我来这里是为了提醒您如何设置查询,但现有示例很难遵循。这是一个有更多解释的例子。

SQLiteDatabase db = helper.getReadableDatabase();

String table = "table2";
String[] columns = {"column1", "column3"};
String selection = "column3 =?";
String[] selectionArgs = {"apple"};
String groupBy = null;
String having = null;
String orderBy = "column3 DESC";
String limit = "10";

Cursor cursor = db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit);

参数

  • table:您要查询的表的名称
  • columns:您要返回的列名称。不要返回您不需要的数据。
  • selection:您希望从列返回的行数据(这是WHERE子句。)
  • selectionArgs:这取代了上面?字符串中的selection
  • groupByhaving:此组将具有特定条件的数据的列中的重复数据分组。任何不需要的参数都可以设置为null。
  • orderBy:对数据进行排序
  • limit:限制返回的结果数量

答案 4 :(得分:1)

试试这个,这适用于我的代码 name是一个字符串:

cursor = rdb.query(true, TABLE_PROFILE, new String[] { ID,
    REMOTEID, FIRSTNAME, LASTNAME, EMAIL, GENDER, AGE, DOB,
    ROLEID, NATIONALID, URL, IMAGEURL },                    
    LASTNAME + " like ?", new String[]{ name+"%" }, null, null, null, null);