Hallo alle zusammen, ich bin neu in diesem Bereich, ich habe mich ran gesetzt für meine Freundin und mich ein Programm für unser Desire zu schreiben, welches den Küchenstand Dokumentiert, also Artikel und Menge und daraus eine Einkaufsliste bastelt, wenn zum beispiel in der Küche nur noch 2 anstatt 3 Liter Milch vorhanden sind, soll 1x Milch automatisch auf die Einkaufsliste gesetzt werden.
Allerdings möchte ich das komplette Programm selber zurecht schustern, komme jedoch gerade beim Datenbank Helper nicht weiter ich habe folgendes erstellt:
package de.beta.kitchenmanager;
import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.database.sqlite.SQLiteStatement;import android.util.Log;
import java.util.ArrayList;import java.util.List;
public class DataHelper {
private static final String DATABASE_NAME = "example.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "table1";
private Context context; private SQLiteDatabase db;
private SQLiteStatement insertStmt; private static final String INSERT = "insert into " + TABLE_NAME + "(name) values (?)";
public DataHelper(Context context) { this.context = context; OpenHelper openHelper = new OpenHelper(this.context); this.db = openHelper.getWritableDatabase(); this.insertStmt = this.db.compileStatement(INSERT); }
public long insert(String name) { this.insertStmt.bindString(1, name); return this.insertStmt.executeInsert(); }
public void deleteAll() { this.db.delete(TABLE_NAME, null, null); }
public List selectAll() { List list = new ArrayList(); Cursor cursor = this.db.query(TABLE_NAME, new String[] { "name" }, null, null, null, null, "name desc"); if (cursor.moveToFirst()) { do { list.add(cursor.getString(0)); } while (cursor.moveToNext()); } if (cursor != null && !cursor.isClosed()) { cursor.close(); } return list; }
private static class OpenHelper extends SQLiteOpenHelper {
OpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, name TEXT)"); }
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w("Example", "Upgrading database, this will drop tables and recreate."); db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } }}
Alles anzeigen
Ich könnte Luftsprünge machen, ich kann Bananen hinzufügen und Blumenkohl und auf einer von mir erstellten Liste fügt er die auch ganz toll ein, sogar löschen kann ich die Datenbank..... doch wie füge ich jetzt zu jedem Artikel eine bestimmte Anzahl hinzu?????
Ich dachte mir so:
package de.beta.kitchenmanager;
import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.database.sqlite.SQLiteStatement;import android.util.Log;
import java.util.ArrayList;import java.util.List;
public class DataHelper {
private static final String DATABASE_NAME = "example.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "table1";
private Context context; private SQLiteDatabase db;
private SQLiteStatement insertStmt; private static final String INSERT = "insert into " + TABLE_NAME + "(name, anzahl) values (?,?)";
public DataHelper(Context context) { this.context = context; OpenHelper openHelper = new OpenHelper(this.context); this.db = openHelper.getWritableDatabase(); this.insertStmt = this.db.compileStatement(INSERT); }
public long insert(String name, String anzahl) { this.insertStmt.bindString(1, name); this.insertStmt.bindString(2, anzahl); return this.insertStmt.executeInsert(); }
public void deleteAll() { this.db.delete(TABLE_NAME, null, null); }
public List selectAll() { List list = new ArrayList(); Cursor cursor = this.db.query(TABLE_NAME, new String[] { "name","anzahl" }, null, null, null, null, "name desc"); if (cursor.moveToFirst()) { do { list.add(cursor.getString(0)); } while (cursor.moveToNext()); } if (cursor != null && !cursor.isClosed()) { cursor.close(); } return list; }
private static class OpenHelper extends SQLiteOpenHelper {
OpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, name TEXT, anzahl TEXT)"); }
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w("Example", "Upgrading database, this will drop tables and recreate."); db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } }}
Alles anzeigen
Und auf der Artikel Hinzufügen Seite dann anstatt:
package de.beta.kitchenmanager;
import android.app.Activity;
import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;
public class Plus extends Activity implements OnClickListener{ Button button_Einlagern; TextView textAbout; EditText text_Einlagern; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.plus); button_Einlagern = (Button)findViewById(R.id.button_Einlagern); text_Einlagern = (EditText)findViewById(R.id.text_Einlagern); button_Einlagern.setOnClickListener(this); }
@Override public void onClick(View src) { switch(src.getId()) { case R.id.button_Einlagern: String Artikel = text_Einlagern.getText().toString(); KitchenManager.dh.insert(Artikel);
Toast.makeText(this, Artikel + " eingelagert", Toast.LENGTH_LONG).show(); text_Einlagern.setText(""); break;
} }}
Alles anzeigen
einfach :
package de.beta.kitchenmanager;
import android.app.Activity;
import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;
public class Plus extends Activity implements OnClickListener{ Button button_Einlagern; TextView textAbout; EditText text_Einlagern, text_Anzahl; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.plus); button_Einlagern = (Button)findViewById(R.id.button_Einlagern); text_Einlagern = (EditText)findViewById(R.id.text_Einlagern); text_Anzahl = (EditText)findViewById(R.id.text_Anzahl); button_Einlagern.setOnClickListener(this); }
@Override public void onClick(View src) { switch(src.getId()) { case R.id.button_Einlagern: String Artikel = text_Einlagern.getText().toString(); String Anzahl = text_Anzahl.getText().toString(); KitchenManager.dh.insert(Artikel, Anzahl);
Toast.makeText(this, Artikel + " " + Anzahl + " eingelagert", Toast.LENGTH_LONG).show(); text_Einlagern.setText(""); text_Anzahl.setText(""); break;
} }}
Alles anzeigen
Jedoch funktioniert das alles nicht, das Prgramm stürtzt schon beim starten ab, weiß jemand was zu machen ist? Wo dort der Fehler liegt? Ich habe auch schon andere varianten gesehen wie man den Database Helper schreiben kann, jedoch komme ich mit dieser schreibweise am besten klar!
Vielen Dank an euch, grüße aus Kiel
Alex