SQLite游标查询错误“like”和“==”不处理内容提供程序“selection”定义
在我的SQLite选择器定义中,这可能是一个愚蠢的错误,但似乎无法从到目前为止发布的类似问题和错误中看出这一点。我可能犯了一个愚蠢的错误,但我一生都找不到。请让我知道,如果你需要更多的信息,以便能够帮助 因此,这种方法非常有效:SQLite游标查询错误“like”和“==”不处理内容提供程序“selection”定义,sqlite,android-cursorloader,Sqlite,Android Cursorloader,在我的SQLite选择器定义中,这可能是一个愚蠢的错误,但似乎无法从到目前为止发布的类似问题和错误中看出这一点。我可能犯了一个愚蠢的错误,但我一生都找不到。请让我知道,如果你需要更多的信息,以便能够帮助 因此,这种方法非常有效: selection = "((" + TransContract.TransEntry.COLUMN_DATE + " > " + Long.toString(dateOutput) + ") AND
selection = "((" +
TransContract.TransEntry.COLUMN_DATE + " > " +
Long.toString(dateOutput) + ") AND (" +
TransContract.TransEntry.COLUMN_DATE + " <= " + Long.toString(dateOutputEnd) + "))";
或者以这种方式:
selection = TransContract.TransEntry.COLUMN_CATEGORY + " like " + '%'+
"Transport General" + "%";
selection = TransContract.TransEntry.COLUMN_CATEGORY + " == " +
"Transport General";
我收到E/AndroidRuntime:致命异常
我的光标查询:
cursor = database.query(
TransContract.TransEntry.TABLE_NAME,
projection,
selection,
selectionArgs,
null,
null,
sortOrder);
找到类别列的My DbHelper:
String SQL_CREATE_ENTRIES =
"CREATE TABLE " + TransContract.TransEntry.TABLE_NAME + " (" +
TransContract.TransEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
TransContract.TransEntry.COLUMN_AMOUNT + " REAL, " +
TransContract.TransEntry.COLUMN_TYPE + " INTEGER NOT NULL DEFAULT 0, " + // debit, credit
TransContract.TransEntry.COLUMN_ACCOUNT + " INTEGER, " + // wallet, savings, more later.
TransContract.TransEntry.COLUMN_ACCOUNT_FROM + " INTEGER, " + // defaults from wallet 0
TransContract.TransEntry.COLUMN_ACCOUNT_TO + " INTEGER, " + // defaults back to wallet 0
TransContract.TransEntry.COLUMN_CATEGORY + " TEXT, " +
TransContract.TransEntry.COLUMN_TITLE + " TEXT, " +
TransContract.TransEntry.COLUMN_DATE + " INTEGER, " +
TransContract.TransEntry.COLUMN_RECURRING + " INTEGER NOT NULL DEFAULT 0," +
TransContract.TransEntry.COLUMN_FREQUENCY + " TEXT," +
TransContract.TransEntry.COLUMN_END_DATE + " INTEGER" +
");";
编辑
谢谢你的评论,我应该更具体一些!我的堆栈跟踪确实是一个语法错误,它来自我正在粘贴的新代码行
Caused by: android.database.sqlite.SQLiteException: near "General": syntax error (code 1): , while compiling: SELECT _id, category, title, amount, type, date FROM transactions WHERE category == Transport General ORDER BY date DESC
问题是字符串的双引号中有单引号,谢谢@Ton Plooij,但奇怪的是比较值不需要单引号
以下是工作解决方案:
selection = TransContract.TransEntry.COLUMN_CATEGORY + " = " +
"'Transport General'";
我不知道编程语言是如何工作的,但两个失败的SQlite查询字符串似乎都创建得不正确。like查询应类似于TransContract.TransEntry.COLUMN_类别,类似于“%Transport General%”。在查询中构造比较字符串时,不使用开始和结束单引号。第二个查询有两个问题:“==”应该是一个“=”并且比较值没有用单引号括起来