SQLite查询接受带有撇号的某些值,但不接受其他值

时间:2017-11-05 13:06:48

标签: android sqlite

我从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

我的数据库结构是:

图书

  • ID
  • 标题
  • AUTHOR_ID
  • 集合

1 个答案:

答案 0 :(得分:1)

撇号对你来说看起来一样,但实际上是不同的角色。在这种特殊情况下,如果您从工程师的拇指中复制一个,并使用那个替换标题中的所有其他引号,它将起作用。

会发生什么: 如果仔细观察,那些不起作用的是更直的。它使你的代码不完整,因为它之后发生的一切都将被视为代码,然后当实际的“文本结束”发生时,它现在将读取代码作为文本。 将记录导入数据库时​​应解决此问题!