E
Elbern
Neues Mitglied
- 0
Guten Tag,
mit @Jaiel Hilfe habe ich mir nun etwas zusammen gebastelt, leider kommt immer ein Fehler:
Hier meine DbHelper Klasse:
Hier die DataBaseSource:
Und hier möchte ich einen Eintrag hinzufügen:
Ich weiß nicht, wieso das nicht funktionieren will?!
mfg
Elbern
mit @Jaiel Hilfe habe ich mir nun etwas zusammen gebastelt, leider kommt immer ein Fehler:
Code:
Caused by: android.database.sqlite.SQLiteException: no such table: budget_list (code 1): , while compiling: SELECT id, datum, type, beschreibung, summe FROM budget_list WHERE id=-1
Hier meine DbHelper Klasse:
PHP:
public class DbHelper extends SQLiteOpenHelper {
//Datenbankname und Version
public static final String DB_NAME = "budget.db";
public static final int DB_VERSION = 1;
public static final String COLUMN_ID = "id";
public static final String COLUMN_SUMME = "summe";
public static final String COLUMN_DATE = "datum";
public static final String COLUMN_BESCHREIBUNG = "beschreibung";
public static final String COLUMN_TYPE = "type";
//Tabellenname
public static final String TABLE_BUDGET_LIST = "budget_list";
//hier wird das CREATE TABLE Statement in einem String gespeichert um es später auszuführen
public static final String SQL_CREATE = "CREATE TABLE " + TABLE_BUDGET_LIST +
"(" +COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "+
COLUMN_DATE+" STRING NOT NULL, " + COLUMN_TYPE + " int , " + COLUMN_BESCHREIBUNG + " TEXT NOT NULL, "+ COLUMN_SUMME +" DOUBLE NOT NULL"+ " );";
public DbHelper(Context context){
super (context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Hier die DataBaseSource:
PHP:
private static final String LOG_TAG = DataBaseSource.class.getSimpleName();
private SQLiteDatabase database;
private DbHelper dbHelper;
private String[] columns = {
dbHelper.COLUMN_ID,
dbHelper.COLUMN_DATE,
dbHelper.COLUMN_TYPE,
dbHelper.COLUMN_BESCHREIBUNG,
dbHelper.COLUMN_SUMME
};
public DataBaseSource(Context context) {
dbHelper = new DbHelper(context);
}
public boolean open() {
try{
database = dbHelper.getWritableDatabase();
return true;
}
catch (SQLiteException e){
e.printStackTrace();
}
return false;
}
public void close() {
dbHelper.close();
}
public BudgetItem insertBudgetItemToDB(String date, int type, String beschreibung, double summe) {
if(!database.isOpen())
return null;
ContentValues values = new ContentValues();
values.put(DbHelper.COLUMN_DATE, date);
values.put(DbHelper.COLUMN_TYPE, type);
values.put(DbHelper.COLUMN_BESCHREIBUNG, beschreibung);
values.put(DbHelper.COLUMN_SUMME, summe);
Cursor cursor = database.query(DbHelper.TABLE_BUDGET_LIST,
columns, DbHelper.COLUMN_ID + "=" +
database.insert(DbHelper.TABLE_BUDGET_LIST, null, values),
null, null, null, null);
if(cursor==null||!cursor.moveToFirst())
return null;
BudgetItem bItem= cursorToBudgetItem (cursor);
cursor.close();
return bItem;
}
private BudgetItem cursorToBudgetItem(Cursor cursor) {
BudgetItem tmpBI=null;
try{
tmpBI = new BudgetItem(
cursor.getInt(cursor.getColumnIndexOrThrow(DbHelper.COLUMN_ID)),
cursor.getString(cursor.getColumnIndexOrThrow(DbHelper.COLUMN_DATE)),
cursor.getDouble(cursor.getColumnIndexOrThrow(DbHelper.COLUMN_SUMME)),
cursor.getInt(cursor.getColumnIndexOrThrow(DbHelper.COLUMN_TYPE)),
cursor.getString(cursor.getColumnIndexOrThrow(DbHelper.COLUMN_BESCHREIBUNG)));}
catch(IllegalArgumentException e){
e.printStackTrace();
}
return tmpBI;
}
public List<BudgetItem> getAllBudgetItemsFromDB() {
List<BudgetItem> bItemList = new ArrayList<>();
Cursor cursor = database.query(DbHelper.TABLE_BUDGET_LIST,
columns, null, null, null, null, null);
if(cursor==null||!cursor.moveToFirst())
return null;
while(!cursor.isAfterLast()) {
bItemList.add(cursorToBudgetItem(cursor));
if(!cursor.moveToNext())
return null;
}
cursor.close();
return bItemList;
}
Und hier möchte ich einen Eintrag hinzufügen:
PHP:
DataBaseSource db = new DataBaseSource(getApplicationContext());
if(!db.open())
return;
db.insertBudgetItemToDB(datum, 0, beschreibung, Double.valueOf(new_guthaben));
db.close();
Ich weiß nicht, wieso das nicht funktionieren will?!
mfg
Elbern