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