2017-10-23 15 views
3

SQLiteからデータを挿入して返す方法を説明することから始めましょう。SQliteは0を返す

まず私はこのような表を作成します。

public void insertLesson(String _id, String lessonTitle, String lessonDate, String lessonProblem) { 
    ContentValues contentValue = new ContentValues(); 
    contentValue.put(SQLiteHelper._ID, _id); 
    contentValue.put(SQLiteHelper.LESSON_TITLE, lessonTitle); 
    contentValue.put(SQLiteHelper.LESSON_DATE, lessonDate); 
    contentValue.put(SQLiteHelper.LESSON_PROBLEM, lessonProblem); 
    this.getWritableDatabase().insert(SQLiteHelper.TABLE_NAME_STUDENTSPECIFICLESSON, null, contentValue); 
} 

そして、私はこのような活動から、それを挿入します:その後、私はSQLiteの中で次のようにテーブルに挿入

private static final String CREATE_TABLE_STUDENT_LESSON = " create table STUDENTSPECIFICLESSON (_id TEXT , _viewID INTEGER PRIMARY KEY AUTOINCREMENT , _LESSON_TITLE TEXT , _LESSON_DATE TEXT , _LESSON_PROBLEM TEXT);"; 

public void onCreate(SQLiteDatabase db) { 
    db.execSQL(CREATE_TABLE_STUDENT_LESSON); 
} 

sqLiteHelper.insertLesson(id,etLessonTitle.getText().toString(),currentDateandTime,etLessonProbStu.getText().toString()); 

私が作成したことに気づくでしょう_viewID INTEGER PRIMARY KEY AUTOINCREMENT私はこれを使用して特定のViewHolderをアダプタに追加します。

は、私はこれを行うことによって、この_viewIDを得る:

public String getLessonViewHolderID(String _path){ 
    String id = null; 

    Cursor cursor = getReadableDatabase().rawQuery("Select "+SQLiteHelper._viewID+" from "+SQLiteHelper.TABLE_NAME_STUDENTSPECIFICLESSON+" Where " 
      +SQLiteHelper.LESSON_TITLE +"='"+_path+"'",null); 

    if (cursor != null) { 
     cursor.moveToFirst(); 
    } 
    if (cursor == null) { 
    } else if (cursor.moveToFirst()) { 
     do { 
      id = String.valueOf(cursor.getInt(cursor.getColumnIndex(SQLiteHelper._viewID))); 

     } while (cursor.moveToNext()); 
     cursor.close(); 
    } else { 

    } 
    return id; 
} 

これは完璧に動作し、期待通りに正しく_viewIdを返します。


私は、このことによって、SQLiteのから_LESSON_PROBLEMを取得しよう:私は呼ん

public String getLessonProblem(String _id){ 


    String id = null; 

    Cursor cursor = getReadableDatabase().rawQuery("Select _LESSON_PROBLEM from "+SQLiteHelper.TABLE_NAME_STUDENTSPECIFICLESSON+" Where " 
      +SQLiteHelper._viewID +"='"+_id+"'",null); 


    if (cursor != null) { 
     cursor.moveToFirst(); 
    } 
    if (cursor == null) { 
    } else if (cursor.moveToFirst()) { 
     do { 
      id = String.valueOf(cursor.getInt(cursor.getColumnIndex("_LESSON_PROBLEM"))); 

     } while (cursor.moveToNext()); 
     cursor.close(); 
    } else { 

    } 
    return id; 

} 

と私Adapterからの:

String lessonProblem = helper.getLessonProblem(viewId); 

上記String lessonProblemが、その後0を返します。

私は自分のデータベースをチェックして、すべてのデータが正しく挿入されて、ここに私のデータベースのイメージは次のとおりです。

myDatabase

明確にされていないときには0を返している理由を私は理解できません、誰かが問題の原因を指摘してくれますか?

+1

誰かが私の質問は否決しまった理由を教えていただけますか?投票するために私は何をしましたか? –

答えて

5
id = String.valueOf(cursor.getInt(cursor.getColumnIndex("_LESSON_PROBLEM"))); 

あなたはintとして文字列値を取得し、その文字列にそれを変換しています。そのようなものに変更してください

id = cursor.getString(cursor.getColumnIndex("_LESSON_PROBLEM")); 
7

間違いがあります。 getInt()の代わりにgetString()を使用する必要があります。

要求された列の値を文字列として返します。結果と 列の値がnullの場合にこのメソッドが例外をスローするかどうか または列の型が文字列型でないかどうかは実装定義です。

最後に

cursor.getString(cursor.getColumnIndex("_LESSON_PROBLEM")); 
+0

お返事ありがとうございました。彼が最初に答えたので、私は@ laaltoの回答を受け入れることになります。もう一度ありがとうございます。 –

+1

それは価値があるのですが、あなたは間違ったgetString()にリンクしています。余分な ')' close parenもあります。 – laalto

+1

お返事ありがとうございます。 –

関連する問題