Uzimanje svih vrednosti iz tabele - Android

Shadowles

Obećava
Banovan
Poruka
74
Imam SQLiteHelper klasu i u njoj ovako:

Java:
@Override
    public void onCreate(SQLiteDatabase MyDB) {
        MyDB.execSQL("CREATE table Profesor(id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT, full_name TEXT, field TEXT, semester TEXT)");
        MyDB.execSQL("CREATE table Predmet(id INTEGER PRIMARY KEY AUTOINCREMENT, subject TEXT, semester TEXT)");
        MyDB.execSQL("CREATE table Profesor_Predmet(id_professor INTEGER PRIMARY KEY, id_subject INTEGER)");
    }

Zatim unutra imam ovu metodu

Java:
    public ArrayList<String> getProfessorData(String username) {
        SQLiteDatabase MyDB = this.getReadableDatabase();
        Cursor cursor = MyDB.rawQuery("SELECT * FROM Profesor WHERE username = ?", new String[] {username});
        ArrayList<String> data = new ArrayList<>();
        data.add(String.valueOf(cursor.getInt(1)));
        data.add(cursor.getString(2));
        data.add(cursor.getString(3));
        data.add(cursor.getString(4));
        data.add(cursor.getString(5));
        data.add(cursor.getString(6));

        cursor.close();
        return data;
    }

Ne znam da li se ovako uzimaju vrednosti iz tabele u Javi. Dalje pokušam u aktivnosti uzeti i prikazati podatke ali kad god nakon logovanja udjem u tu aktivnost, prekine mi rad aplikacije:

Java:
professorData = db.getProfessorData(username);

        professorID.setText(professorData.get(0));
        usernameInfo.setText(professorData.get(1));
        String[] full_name = professorData.get(2).split(" ");
        firstName.setText(full_name[0]);
        lastName.setText(full_name[1]);
        subject.setText(professorData.get(3));
        semester.setText(professorData.get(4));

Zna li neko?
 
Uspeo sam ovaj deo. Promenio sam funkciju u helperu:

Java:
    public Cursor getData(String username) {
        SQLiteDatabase MyDB = this.getReadableDatabase();
        Cursor cursor = MyDB.rawQuery("SELECT * FROM Profesor WHERE username = ?", new String[] {username});
        return cursor;
    }

A u aktivnosti mogu ovo:

Java:
        Cursor result = db.getData(username);
        StringBuffer buffer = new StringBuffer();
        while (result.moveToNext()) {
            buffer.append("Professor ID: " + result.getInt(0));
            buffer.append("Professor username: " + result.getString(1));
            buffer.append("Professor password: " + result.getString(2));
            buffer.append("Professor full name: " + result.getString(3));
            buffer.append("Professor subject: " + result.getString(4));
            buffer.append("Professor semester: " + result.getString(5));
        }

Medjutim, meni ne trebaju ovi podaci ovako, ja želim da budu unutar liste. Ovo sam prikazao pomoću AlertDijaloga i radi super, svi podaci su tu. Ali kako da umesto buffera to bude lista? Ili, kako izvući ove vrednosti iz buffera?
 
Uspeo sam ovaj deo. Promenio sam funkciju u helperu:

Java:
    public Cursor getData(String username) {
        SQLiteDatabase MyDB = this.getReadableDatabase();
        Cursor cursor = MyDB.rawQuery("SELECT * FROM Profesor WHERE username = ?", new String[] {username});
        return cursor;
    }

A u aktivnosti mogu ovo:

Java:
        Cursor result = db.getData(username);
        StringBuffer buffer = new StringBuffer();
        while (result.moveToNext()) {
            buffer.append("Professor ID: " + result.getInt(0));
            buffer.append("Professor username: " + result.getString(1));
            buffer.append("Professor password: " + result.getString(2));
            buffer.append("Professor full name: " + result.getString(3));
            buffer.append("Professor subject: " + result.getString(4));
            buffer.append("Professor semester: " + result.getString(5));
        }

Medjutim, meni ne trebaju ovi podaci ovako, ja želim da budu unutar liste. Ovo sam prikazao pomoću AlertDijaloga i radi super, svi podaci su tu. Ali kako da umesto buffera to bude lista? Ili, kako izvući ove vrednosti iz buffera?
Moras da napravis listbox tabelu pa da napunis. To je GUI element, ne znam kako se zove u Androidu. U principu mozda ima pod imenom table ili tako nekako...
 
Uspeo sam, ahahaha, nisam bio inicijalizovao arraylist...

Java:
 Cursor result = db.getData(username);

        while (result.moveToNext()) {
                  professorData.add(String.valueOf(result.getInt(0)));
                  professorData.add(result.getString(1));
                  professorData.add(result.getString(2));
                  professorData.add(result.getString(3));
                  professorData.add(result.getString(4));
                  professorData.add(result.getString(5));
        }

        Toast.makeText(this, professorData.get(1), Toast.LENGTH_SHORT).show();

Sad ću izvlačiti deo po deo i prikazivati ih kroz TextView. Ceo dan radim ovu aplikaciju za faks.

pocetni meni.jpg


Znači, i registracija i logovanje i prikaz podataka i logout i ovo i ono. Uff...
 

Back
Top