8

我正在使用 Android 进行开发,我需要使用类似运算符和变量对 sqlite 进行查询。

我刚刚尝试修改的代码是此链接中存在的数据库的实现。

所以,我试图对链接中创建的表进行查询,以便从表中只选择一个名称。我正在这样做:

Cursor c = sampleDB.rawQuery("SELECT FirstName, Age FROM " +
SAMPLE_TABLE_NAME + " where" +field+ " like %"+search+"%" , null);

其中 field 和 search 是上面以这种方式定义的两个变量:

final String field = "LastName";
final String search = "Makam";

如果我在输出中执行应用程序,我应该会看到一行包含我在查询中选择的姓名和年龄。但是,我什么也没得到!!!

节目Logcat of Eclipse

sqlite returned: error code = 1,msg = near "like": syntax error.

但我很确定它的语法是正确的。有人可以帮助我吗?

4

4 回答 4

9

使用这种方式:

Cursor c = sampleDB.rawQuery("SELECT FirstName, Age FROM " +
SAMPLE_TABLE_NAME + " where " +field+ " like '%"+search+"%'" , null);

编辑:创建功能

public Cursor getSearch(String SAMPLE_TABLE_NAME, String field,
            String search) {
        SQLiteDatabase sampleDB = this.getReadableDatabase();
        Cursor c = sampleDB.rawQuery("SELECT FirstName, Age FROM "
                + SAMPLE_TABLE_NAME + " where " + field + " like '%" + search
                + "%'", null);
        return c;
    }
于 2013-05-02T10:54:00.673 回答
3

在我看来,好像您可能在WHEREand之间缺少一个空格field

于 2013-05-02T10:55:20.663 回答
3
selection.append(column_name).append(" like ?");
                    selectionArgs = new String[]{"%" + mCategoryName + "%"};
                    db.query(TABLE_URI,null,selection.toString(),selectionArgs,null);
于 2016-11-08T16:10:06.147 回答
1

尝试这个:

final String field = "LastName";
final String search = "Makam";

String query = "SELECT FirstName, Age FROM " +
SAMPLE_TABLE_NAME + " where " +field+ " like '%+search+%'";

Cursor c = sampleDB.rawQuery(query,null);

一切顺利!

于 2013-05-02T10:58:23.523 回答