Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.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
Android-当我在数据库中使用撇号并选择数据时崩溃_Android - Fatal编程技术网

Android-当我在数据库中使用撇号并选择数据时崩溃

Android-当我在数据库中使用撇号并选择数据时崩溃,android,Android,我从sqlite数据库中选择数据。我的问题是,当数据库中有撇号时,我是John,例如,我试图选择数据,然后我的应用程序崩溃 若数据库中并没有撇号,那个么一切都正常 我的选择数据功能: String query = "SELECT * FROM " + mainCollumn + " WHERE used=0 " + " AND season <= " + seasons + " ORDER BY RANDOM() LIMIT " + count ; SQLiteDatabase

我从sqlite数据库中选择数据。我的问题是,当数据库中有撇号时,我是John,例如,我试图选择数据,然后我的应用程序崩溃

若数据库中并没有撇号,那个么一切都正常

我的选择数据功能:

String query = "SELECT * FROM " + mainCollumn  + " WHERE used=0 " + " AND season <= " + seasons + " ORDER BY RANDOM() LIMIT " + count ;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(query, null);

    if(cursor.moveToFirst()){
        do {
            Question question = new Question(Integer.parseInt(cursor.getString(0)),
                    cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4),cursor.getString(5),
                    Integer.parseInt(cursor.getString(6)));

            questionList.add(question);
        }while(cursor.moveToNext());
    }

感谢您的帮助。

这是任何SQL的问题,因为单引号撇号是文本分隔符。在数据中,必须用另一个字符替换撇号,或用双撇号替换单撇号

Daniel O'Neil
变成

Daniel O''Neil
[编辑]
UgglyNoodles的建议更好。

这是任何SQL的问题,因为单引号撇号是文本分隔符字符。在数据中,必须用另一个字符替换撇号,或用双撇号替换单撇号

Daniel O'Neil
变成

Daniel O''Neil
[编辑]
UgglyNoodles的建议更好。

您可以通过用双撇号替换撇号来专门处理撇号,但最好的方法是使用selectionArgs而不是rawQuery


您可以通过使用双撇号替换撇号来专门处理撇号,但最好的方法是使用selectionArgs而不是rawQuery


我需要更多的信息。是否有日志或调试器输出?是否使用?selectionArg参数将处理这个问题:db.rawQueryquery,新字符串[]{seasons}。此外,这不是必需的:Integer.parseIntcursor.getString0,只需使用:cursor.getInt0.Going需要更多信息。是否有日志或调试器输出?是否使用?selectionArg参数将处理这个问题:db.rawQueryquery,新字符串[]{seasons}。此外,这不是必需的:Integer.parseIntcursor.getString0,只需使用:cursor.getInt0。