Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite游标查询错误“like”和“==”不处理内容提供程序“selection”定义_Sqlite_Android Cursorloader - Fatal编程技术网

SQLite游标查询错误“like”和“==”不处理内容提供程序“selection”定义

SQLite游标查询错误“like”和“==”不处理内容提供程序“selection”定义,sqlite,android-cursorloader,Sqlite,Android Cursorloader,在我的SQLite选择器定义中,这可能是一个愚蠢的错误,但似乎无法从到目前为止发布的类似问题和错误中看出这一点。我可能犯了一个愚蠢的错误,但我一生都找不到。请让我知道,如果你需要更多的信息,以便能够帮助 因此,这种方法非常有效: selection = "((" + TransContract.TransEntry.COLUMN_DATE + " > " + Long.toString(dateOutput) + ") AND

在我的SQLite选择器定义中,这可能是一个愚蠢的错误,但似乎无法从到目前为止发布的类似问题和错误中看出这一点。我可能犯了一个愚蠢的错误,但我一生都找不到。请让我知道,如果你需要更多的信息,以便能够帮助

因此,这种方法非常有效:

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%”。在查询中构造比较字符串时,不使用开始和结束单引号。第二个查询有两个问题:“==”应该是一个“=”并且比较值没有用单引号括起来