Z
zumafx
Fortgeschrittenes Mitglied
- 58
Hallo,
ich programmiere eigentlich schon seit Jahren, allerdings erst seit ein paar Tagen für Android. Ich habe eine kleine App erstellt, in der ich ein paar Daten erfasse und die in einer anderen Activity anzeige. Soweit, sogut.
Nun möchte ich aber die Daten in einer Datenbank speichern und da bin ich wohl zu doof, jedenfalls hab ich den ganzen Tag gelesen und getestet, aber ich kriege es einfach nicht ans laufen
hier mal meine Codeschnipsel:
dbHandler.java
so dachte ich zu speichern
und so wollte ich wieder auslesen
leider hab ich noch keine Ahnung wie man in AndroidStudio debuggt, aber auch wenn, bin ich wohl noch zu sehr Android-Frischling, um herrauszufinden, wie ich meine Daten in der DB speichere und wieder auslese.
Dank an alle, die bis hier gelesen haben und auch evtl. mir helfen können
ich programmiere eigentlich schon seit Jahren, allerdings erst seit ein paar Tagen für Android. Ich habe eine kleine App erstellt, in der ich ein paar Daten erfasse und die in einer anderen Activity anzeige. Soweit, sogut.
Nun möchte ich aber die Daten in einer Datenbank speichern und da bin ich wohl zu doof, jedenfalls hab ich den ganzen Tag gelesen und getestet, aber ich kriege es einfach nicht ans laufen
hier mal meine Codeschnipsel:
dbHandler.java
Code:
package com.zumafx.Bipo;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DbHandler extends SQLiteOpenHelper {
// Datenbank Version
private static final int DATABASE_VERSION = 2;
// DatenbankName
private static final String DATABASE_NAME = "Stimmungen";
// TabellenName
private static final String TABLE_NAME = "Stimmung";
// Spaltennamen Tabelle Stimmung
private static final String Field_Id = "id";
private static final String Field_Tag = "Tag";
private static final String Field_Monat = "Monat";
private static final String Field_Jahr = "Jahr";
private static final String Field_Zustand = "Zustand";
private static final String Field_Stimmung = "Stimmung";
private static final String Field_Gereitzt = "Gereitzt";
private static final String Field_Text = "Text";
public DbHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Tabelle erzeugen
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE = "CREATE TABLE " +
TABLE_NAME + "(" +
Field_Id + " INTEGER PRIMARY KEY," +
Field_Tag + " INTEGER,"+
Field_Monat + " INTEGER," +
Field_Jahr + " INTEGER,"+
Field_Zustand + " TEXT," +
Field_Stimmung + " TEXT," +
Field_Gereitzt + " TEXT," +
Field_Text + " TEXT" +")";
db.execSQL(CREATE_TABLE);
}
// Upgrade Datenbank
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// ToDo: Alte Daten sichern
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
// ToDo: Alte Daten wieder einlesen
}
// Stimmung einfügen
public void addStimmung(StimmungDs Stimmung) {
SQLiteDatabase db = this.getWritableDatabase();
int id = getStimmungenCount(db);
id++;
ContentValues values = new ContentValues();
values.put(Field_Id, id);
values.put(Field_Tag, Stimmung.getTag());
values.put(Field_Monat, Stimmung.getMonat());
values.put(Field_Jahr, Stimmung.getJahr());
values.put(Field_Zustand, Stimmung.getZustand());
values.put(Field_Stimmung, Stimmung.getStimmung());
values.put(Field_Gereitzt, Stimmung.getGereitzt());
values.put(Field_Text, Stimmung.getText());
db.insert(TABLE_NAME, null, values);
db.close();
}
// Einen DatenSatz lesen
public StimmungDs getStimmung(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, new String[] {
Field_Id,
Field_Tag,
Field_Monat,
Field_Jahr,
Field_Zustand,
Field_Stimmung,
Field_Gereitzt,
Field_Text }, Field_Id + "=?",
new String[] { String.valueOf(id) },
null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
StimmungDs st = new StimmungDs(
Integer.parseInt(cursor.getString(0)),
Integer.parseInt(cursor.getString(1)),
Integer.parseInt(cursor.getString(2)),
Integer.parseInt(cursor.getString(3)),
cursor.getString(4),
cursor.getString(5),
Boolean.parseBoolean(cursor.getString(6)),
cursor.getString(7));
db.close();
return st;
}
// Alle Datensätze holen
public List<StimmungDs> getAlleStimmungen() {
List<StimmungDs> StimmungList = new ArrayList<StimmungDs>();
String selectQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
StimmungDs st = new StimmungDs();
st.setId(Integer.parseInt(cursor.getString(0)));
st.setTag(Integer.parseInt(cursor.getString(1)));
st.setMonat(Integer.parseInt(cursor.getString(2)));
st.setJahr(Integer.parseInt(cursor.getString(3)));
st.setZustand(cursor.getString(4));
st.setStimmung(cursor.getString(5));
st.setGereitzt(Boolean.parseBoolean(cursor.getString(6)));
st.setText(cursor.getString(7));
StimmungList.add(st);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return StimmungList;
}
// Update eines Datensatzes
public int updateStimmung(StimmungDs Stimmung) {
SQLiteDatabase db = this.getWritableDatabase();
int ok;
ContentValues values = new ContentValues();
values.put(Field_Id, Stimmung.getId());
values.put(Field_Tag, Stimmung.getTag());
values.put(Field_Monat, Stimmung.getMonat());
values.put(Field_Jahr, Stimmung.getJahr());
values.put(Field_Zustand, Stimmung.getZustand());
values.put(Field_Stimmung, Stimmung.getStimmung());
values.put(Field_Gereitzt, Stimmung.getGereitzt());
values.put(Field_Text, Stimmung.getText());
ok = db.update(TABLE_NAME, values, Field_Id + " = ?",
new String[] { String.valueOf(Stimmung.getId()) });
db.close();
return ok;
}
// Datensatz löschen
public void deleteStimmung(StimmungDs Stimmung) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_NAME, Field_Id + " = ?",
new String[] { String.valueOf(Stimmung.getId()) });
db.close();
}
// Anzahl Einträge holen
public int getStimmungenCount(SQLiteDatabase db) {
int Anzahl = 0;
String countQuery = "SELECT * FROM " + TABLE_NAME;
Cursor cursor = db.rawQuery(countQuery, null);
Anzahl = cursor.getCount();
cursor.close();
db.close();
return Anzahl;
}
}
Code:
....
DbHandler db = new DbHandler(this);
StimmungDs StDs = new StimmungDs();
StDs.setTag(vday);
StDs.setMonat(vmonth);
StDs.setJahr(vyear);
StDs.setZustand(Auswahl);
StDs.setStimmung(stimmung);
StDs.setGereitzt(cb.isChecked());
StDs.setText(message);
db.addStimmung(StDs);
....
Code:
DbHandler db = new DbHandler(this);
List<StimmungDs> ls = db.getAlleStimmungen();
ListView lv = (ListView) findViewById(R.id.Liste);
ListAdapter adapter = new ArrayAdapter<>(getApplicationContext(),
android.R.layout.simple_list_item_1, ls);
lv.setAdapter(adapter);
Dank an alle, die bis hier gelesen haben und auch evtl. mir helfen können