2017-11-05 10 views
-1

私はSQLiteデータベースから書籍のタイトルを引っ張っています。私はパラメータインジェクションを使ってタイトルをアポストロフィでプルしようとしましたが、いくつかの仕事といくつかはアプリをクラッシュさせます。SQLiteクエリは、アポストロフィでいくつかの値を受け入れますが、他の値は受け入れません。

作品タイトルは、両方のエラーを投げるエンジニアの親指の冒険が、株式仲買人の書記官「グロリア・スコット」の冒険の冒険です。エラーが発生した

がnull

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)); 

EDIT:StoryBodyActivityから

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; 
} 

スニペット:私はここで、パターン... DatabaseHelperから

スニペットを見ることができませんLog.i("story", storyBody);行のポインタ例外:

のjava.lang.NullPointerException:

ブックス

  • ID
  • タイトル
  • :printlnのメッセージ

EDIT 2

私のデータベース構造である必要があります

  • コレクション
  • +0

    エラーを投稿!ちょうど選択のためにrawQueryを使用しないでください – pleft

    +0

    BOOKS変数には何がありますか? –

    +0

    @AbdulWaheed 'BOOKS =" books "; – Sebastian

    答えて

    1

    アポストロフィがあなたに同じように見えるが、実際には異なる文字にすることができますAUTHOR_ID。この特定のケースでは、エンジニアの親指から1つをコピーし、それを使用してタイトルの他のすべての引用符を置き換えると、それが動作します。

    何が起こるか: よく見ると、動作しないものはよりまっすぐです。それは、コードとして見える後に起こるすべてのものとしてあなたのコードを不完全にし、実際の "テキストエンディング"が起きたときに、それ以降のコードをテキストとして読むようになります。 この問題は、レコードをデータベースにインポートするときに対処する必要があります。

    +0

    ねえ、私はこれを試しましたが、何らかの理由でうまくいきませんでした。 – Sebastian

    関連する問題