2017-10-23 1 views
3
zurück

Lassen Sie mich damit beginnen zu erklären, wie ich Daten von SQLite einfügen und zurückgeben.SQlite gibt 0

Zunächst erstelle ich die Tabelle wie folgt aus:

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

Dann füge ich in die Tabelle wie folgt in SQLite:

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

Und ich stecken Sie ihn aus der Tätigkeit wie folgt aus:

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

Sie werden feststellen, dass ich erstellt habe _viewID INTEGER PRIMARY KEY AUTOINCREMENT Ich verwende dies, um das spezifische zu bekommen ViewHolder in meinem Adapter.

Ich erhalte diese _viewID durch dies zu tun:

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

Das funktioniert perfekt und gibt den _viewId richtig wie erwartet.


Ich versuche dann, indem Sie diese _LESSON_PROBLEM von SQLite zu bekommen:

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; 

} 

und von meinem Adapter Ich nenne:

String lessonProblem = helper.getLessonProblem(viewId); 

Die obige String lessonProblem dann 0 zurück.

ich meine Datenbank und alle Daten korrekt eingesetzt ist, hier ein Bild meiner Datenbank überprüft haben:

myDatabase

Ich kann nicht verstehen, warum es 0 zurückkehrt, wenn klar ist es nicht, Kann mir bitte jemand helfen, auf das Problem hinzuweisen?

+1

Kann jemand bitte sagen Sie mir, warum meine Frage wurde überstimmt? Was habe ich getan, um abzustimmen? –

Antwort

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

Sie einen String-Wert als int bekommen und dann die Konvertierung in einen String. Ändern Sie das in etwas wie

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

Sloppy Fehler. Sie sollten getString() anstelle von getInt() verwenden.

Gibt den Wert der angeforderten Spalte als String zurück. Das Ergebnis und ob diese Methode eine Ausnahme auslöst, wenn der Spaltenwert null ist oder der Spaltentyp kein Zeichenkettentyp ist, ist implementierungsdefiniert.

Schließlich

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

Vielen Dank für Ihre Antwort, ich werde @laalto antworten, nur weil er zuerst geantwortet hat. Vielen Dank noch mal. –

+1

Für was es wert ist, haben Sie mit der falschen getString() verknüpft, und es gibt eine zusätzliche ')' close paren auch. – laalto

+1

Vielen Dank für Ihre Antwort. –