我从SQLite数据库中提取书名。我已经使用参数注入试图在其中拉出带有撇号的标题,但有些工作,有些会使应用程序崩溃。
有效的标题是工程师拇指的冒险但是 Stockbroker的职员的冒险和“Gloria Scott”的冒险都抛出错误。我在这里看不到一个模式......
DatabaseHelper的片段:
public String getStoryBody(String story) {
String storyBody = "";
// Select all query
String selectQuery = "SELECT body FROM " + BOOKS + " WHERE title = ?";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, new String[] {story});
if (cursor.moveToFirst()) {
do {
storyBody = cursor.getString(0);
} while (cursor.moveToNext());
}
return storyBody;
}
来自StoryBodyActivity的片段:
storyBodyTextView = (TextView) findViewById(R.id.story_body_text_view);
storyBodyScrollView = (ScrollView) findViewById(R.id.story_body_scroll_view);
DatabaseHelper db = new DatabaseHelper(this);
String storyBody = db.getStoryBody(story);
Log.i("story", storyBody);
storyBodyTextView.setText(Html.fromHtml(storyBody));
修改
生成的错误是Log.i("story", storyBody);
行上的空指针异常:
java.lang.NullPointerException:println需要一条消息
编辑2
我的数据库结构是:
图书
答案 0 :(得分:1)
撇号对你来说看起来一样,但实际上是不同的角色。在这种特殊情况下,如果您从工程师的拇指中复制一个,并使用那个替换标题中的所有其他引号,它将起作用。
会发生什么: 如果仔细观察,那些不起作用的是更直的。它使你的代码不完整,因为它之后发生的一切都将被视为代码,然后当实际的“文本结束”发生时,它现在将读取代码作为文本。 将记录导入数据库时应解决此问题!