
Micka
Fortgeschrittenes Mitglied
Hey,
ich bin gerade dabei ein Haushaltsbuch zu schreiben.
In meiner StartseiteActivity will ich dazu zu Testzwecken einen Eintrag in eine Datenbank machen. Dies hab ich mir gedacht kann ich in der onCreate Methode machen. Wenn es einmal geklappt hat kommt der Source Code für den manuellen Eintrag dort wieder raus.
Hier mein Quellcode:
In meiner onCreate Methode öffne oder erstelle ich meine Datenbank tabellen mit den Attributen _id und tabellenname.
Direkt danach will ich einen Eintrag machen. Dabei kommen Exceptions
hier mein LogCat:
ich bin gerade dabei ein Haushaltsbuch zu schreiben.
In meiner StartseiteActivity will ich dazu zu Testzwecken einen Eintrag in eine Datenbank machen. Dies hab ich mir gedacht kann ich in der onCreate Methode machen. Wenn es einmal geklappt hat kommt der Source Code für den manuellen Eintrag dort wieder raus.
Hier mein Quellcode:
Code:
package micka.haushaltsbuch;
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
public class Startseiteactivity extends Activity {
[B] final static String MY_DB_NAME = "FinanzenDB";
final static String MY_DB_TABLE = "eintraege";[/B]
final static String tag="ensacom";
/** Called when the activity is first created. */
@Override
[B]public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SQLiteDatabase myDB = null;
try {
myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
myDB.execSQL("CREATE TABLE IF NOT EXISTS tabellen"
+ " (_id integer primary key autoincrement,"
+ " tabellenname text not null)"
+ ";");
myDB.execSQL("INSERT INTO tabellen (tabellenname) "
+"VALUES('eintraege');");
} finally {
if (myDB != null)
myDB.close();
}
onCreateDBAndDBTabled();
setContentView(R.layout.startseitelayout);
}[/B]
/** Erzeugt Menüeintrag beenden **/
public static final int beenden_ID = Menu.FIRST;
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add(0, beenden_ID, Menu.NONE, "beenden");
return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case beenden_ID:
finish();
default:
return super.onOptionsItemSelected(item);
}
}
//ButtonFunktionen
public void onClickEintragHinzufuegen(final View sfNormal)
{
final Intent i = new Intent(this, EintragHinzufuegenActivity.class);
startActivity(i);
}
public void onClickEintraegeAnzeigen(final View sfNormal)
{
final Intent i = new Intent(this, TabellenAnzeigenActivity.class);
startActivity(i);
}
/** Datenbank und Tabellen erstellen wenn noch nicht vorhanden */
private void onCreateDBAndDBTabled()
{
SQLiteDatabase myDB = null;
try {
myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
myDB.execSQL("CREATE TABLE IF NOT EXISTS " + MY_DB_TABLE
+ " (_id integer primary key autoincrement,"
+ " day integer(2), month integer(2),"
+ " year integer(4), wofuer text not null,"
+ " betrag real)"
+";");
} finally {
if (myDB != null)
myDB.close();
}
}
}
Direkt danach will ich einen Eintrag machen. Dabei kommen Exceptions
hier mein LogCat:
01-04 11:57:15.234: E/Database(188): Failure 1 (table tabellen has no column named tabellenname) on 0x122128 when preparing 'INSERT INTO tabellen (tabellenname) VALUES('eintraege');'.
01-04 11:57:15.254: D/AndroidRuntime(188): Shutting down VM
01-04 11:57:15.274: W/dalvikvm(188): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
01-04 11:57:15.274: E/AndroidRuntime(188): Uncaught handler: thread main exiting due to uncaught exception
01-04 11:57:15.324: E/AndroidRuntime(188): java.lang.RuntimeException: Unable to start activity ComponentInfo{micka.haushaltsbuch/micka.haushaltsbuch.Startseiteactivity}: android.database.sqlite.SQLiteException: table tabellen has no column named tabellenname: INSERT INTO tabellen (tabellenname) VALUES('eintraege');
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.os.Handler.dispatchMessage(Handler.java:99)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.os.Looper.loop(Looper.java:123)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread.main(ActivityThread.java:4363)
01-04 11:57:15.324: E/AndroidRuntime(188): at java.lang.reflect.Method.invokeNative(Native Method)
01-04 11:57:15.324: E/AndroidRuntime(188): at java.lang.reflect.Method.invoke(Method.java:521)
01-04 11:57:15.324: E/AndroidRuntime(188): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
01-04 11:57:15.324: E/AndroidRuntime(188): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
01-04 11:57:15.324: E/AndroidRuntime(188): at dalvik.system.NativeStart.main(Native Method)
01-04 11:57:15.324: E/AndroidRuntime(188): Caused by: android.database.sqlite.SQLiteException: table tabellen has no column named tabellenname: INSERT INTO tabellen (tabellenname) VALUES('eintraege');
01-04 11:57:15.324: E/AndroidRuntime(188): at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1610)
01-04 11:57:15.324: E/AndroidRuntime(188): at micka.haushaltsbuch.Startseiteactivity.onCreate(Startseiteactivity.java:28)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
01-04 11:57:15.324: E/AndroidRuntime(188): ... 11 more