ECR
- Forum-Beiträge: 72
30.07.2012, 16:15:16 via Website
30.07.2012 16:15:16 via Website
Ich habe hier 3 Klassen, wobei ich eine Klasse nicht hochladen, da es sich nur um die Klasse handelt wechle das Datenobjekt halten kann.
Ich wollte eigentlich nur eine kleine Beispielapp machen. Die Idee ist es eine Tabelle zu füllen und sie dann mit der Windows CMD die erstellte Tabelle auszulesen.
Leider kann ich den Code drehen und wenden wie ich will, ich bekomme immer eine Fehlermeldung. Komischerweise erhalte ich nicht einmal das Log.d() ?
Das ist die Fehlermeldung welche ich erhalte:
Sieht hier jemand einen Fehler??
Das ist die "Startklasse":
Und das ist die Klasse welche es dann in eine DB schreiben soll:
Ich wollte eigentlich nur eine kleine Beispielapp machen. Die Idee ist es eine Tabelle zu füllen und sie dann mit der Windows CMD die erstellte Tabelle auszulesen.
Leider kann ich den Code drehen und wenden wie ich will, ich bekomme immer eine Fehlermeldung. Komischerweise erhalte ich nicht einmal das Log.d() ?
Das ist die Fehlermeldung welche ich erhalte:
107-30 13:58:57.161: I/Process(1003): Sending signal. PID: 1003 SIG: 9
207-30 14:09:36.011: I/dalvikvm(1044): threadid=3: reacting to signal 3
307-30 14:09:36.211: I/dalvikvm(1044): Wrote stack traces to '/data/anr/traces.txt'
407-30 14:09:36.261: D/dalvikvm(1044): newInstance failed: no <init>()
507-30 14:09:36.301: D/AndroidRuntime(1044): Shutting down VM
607-30 14:09:36.331: W/dalvikvm(1044): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
707-30 14:09:36.411: E/AndroidRuntime(1044): FATAL EXCEPTION: main
807-30 14:09:36.411: E/AndroidRuntime(1044): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{ch.dbtut/ch.dbtut.DBTutActivity}: java.lang.InstantiationException: can't instantiate class ch.dbtut.DBTutActivity; no empty constructor
907-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
1007-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
1107-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread.access$600(ActivityThread.java:123)
1207-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
1307-30 14:09:36.411: E/AndroidRuntime(1044): at android.os.Handler.dispatchMessage(Handler.java:99)
1407-30 14:09:36.411: E/AndroidRuntime(1044): at android.os.Looper.loop(Looper.java:137)
1507-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread.main(ActivityThread.java:4424)
1607-30 14:09:36.411: E/AndroidRuntime(1044): at java.lang.reflect.Method.invokeNative(Native Method)
1707-30 14:09:36.411: E/AndroidRuntime(1044): at java.lang.reflect.Method.invoke(Method.java:511)
1807-30 14:09:36.411: E/AndroidRuntime(1044): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
1907-30 14:09:36.411: E/AndroidRuntime(1044): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
2007-30 14:09:36.411: E/AndroidRuntime(1044): at dalvik.system.NativeStart.main(Native Method)
2107-30 14:09:36.411: E/AndroidRuntime(1044): Caused by: java.lang.InstantiationException: can't instantiate class ch.dbtut.DBTutActivity; no empty constructor
2207-30 14:09:36.411: E/AndroidRuntime(1044): at java.lang.Class.newInstanceImpl(Native Method)
2307-30 14:09:36.411: E/AndroidRuntime(1044): at java.lang.Class.newInstance(Class.java:1319)
2407-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
2507-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
2607-30 14:09:36.411: E/AndroidRuntime(1044): ... 11 more
2707-30 14:09:36.691: I/dalvikvm(1044): threadid=3: reacting to signal 3
2807-30 14:09:36.771: I/dalvikvm(1044): Wrote stack traces to '/data/anr/traces.txt'
2907-30 14:09:37.051: I/dalvikvm(1044): threadid=3: reacting to signal 3
3007-30 14:09:37.121: I/dalvikvm(1044): Wrote stack traces to '/data/anr/traces.txt'
207-30 14:09:36.011: I/dalvikvm(1044): threadid=3: reacting to signal 3
307-30 14:09:36.211: I/dalvikvm(1044): Wrote stack traces to '/data/anr/traces.txt'
407-30 14:09:36.261: D/dalvikvm(1044): newInstance failed: no <init>()
507-30 14:09:36.301: D/AndroidRuntime(1044): Shutting down VM
607-30 14:09:36.331: W/dalvikvm(1044): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
707-30 14:09:36.411: E/AndroidRuntime(1044): FATAL EXCEPTION: main
807-30 14:09:36.411: E/AndroidRuntime(1044): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{ch.dbtut/ch.dbtut.DBTutActivity}: java.lang.InstantiationException: can't instantiate class ch.dbtut.DBTutActivity; no empty constructor
907-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
1007-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
1107-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread.access$600(ActivityThread.java:123)
1207-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
1307-30 14:09:36.411: E/AndroidRuntime(1044): at android.os.Handler.dispatchMessage(Handler.java:99)
1407-30 14:09:36.411: E/AndroidRuntime(1044): at android.os.Looper.loop(Looper.java:137)
1507-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread.main(ActivityThread.java:4424)
1607-30 14:09:36.411: E/AndroidRuntime(1044): at java.lang.reflect.Method.invokeNative(Native Method)
1707-30 14:09:36.411: E/AndroidRuntime(1044): at java.lang.reflect.Method.invoke(Method.java:511)
1807-30 14:09:36.411: E/AndroidRuntime(1044): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
1907-30 14:09:36.411: E/AndroidRuntime(1044): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
2007-30 14:09:36.411: E/AndroidRuntime(1044): at dalvik.system.NativeStart.main(Native Method)
2107-30 14:09:36.411: E/AndroidRuntime(1044): Caused by: java.lang.InstantiationException: can't instantiate class ch.dbtut.DBTutActivity; no empty constructor
2207-30 14:09:36.411: E/AndroidRuntime(1044): at java.lang.Class.newInstanceImpl(Native Method)
2307-30 14:09:36.411: E/AndroidRuntime(1044): at java.lang.Class.newInstance(Class.java:1319)
2407-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
2507-30 14:09:36.411: E/AndroidRuntime(1044): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
2607-30 14:09:36.411: E/AndroidRuntime(1044): ... 11 more
2707-30 14:09:36.691: I/dalvikvm(1044): threadid=3: reacting to signal 3
2807-30 14:09:36.771: I/dalvikvm(1044): Wrote stack traces to '/data/anr/traces.txt'
2907-30 14:09:37.051: I/dalvikvm(1044): threadid=3: reacting to signal 3
3007-30 14:09:37.121: I/dalvikvm(1044): Wrote stack traces to '/data/anr/traces.txt'
Sieht hier jemand einen Fehler??
Das ist die "Startklasse":
1package ch.dbtut;
2
3import android.os.Bundle;
4import android.app.Activity;
5import android.util.Log;
6import android.view.Menu;
7import android.view.MenuItem;
8import android.support.v4.app.NavUtils;
9
10public class Star extends Activity {
11
12 private Activity activity;
13
14 @Override
15 public void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState);
17 setContentView(R.layout.main);
18 activity = this;
19 Log.d("Ich bin der TAG","StarActivity");
20
21 String sql ="CREATE TABLE testtabelle (id INTEGER PRIMARY KEY AUTOINCREMENT,start DATE,ende DATE,anzahlLektionen int,klasse VARCHAR(50), zimmername VARCHAR(50),bezeichnung VARCHAR(50));";
22
23 DBTutActivity test = new DBTutActivity(activity,"viewtabelle",sql);
24 }
25
26 @Override
27 public boolean onCreateOptionsMenu(Menu menu) {
28 getMenuInflater().inflate(R.menu.activity_star, menu);
29 return true;
30 }
31
32
33}
2
3import android.os.Bundle;
4import android.app.Activity;
5import android.util.Log;
6import android.view.Menu;
7import android.view.MenuItem;
8import android.support.v4.app.NavUtils;
9
10public class Star extends Activity {
11
12 private Activity activity;
13
14 @Override
15 public void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState);
17 setContentView(R.layout.main);
18 activity = this;
19 Log.d("Ich bin der TAG","StarActivity");
20
21 String sql ="CREATE TABLE testtabelle (id INTEGER PRIMARY KEY AUTOINCREMENT,start DATE,ende DATE,anzahlLektionen int,klasse VARCHAR(50), zimmername VARCHAR(50),bezeichnung VARCHAR(50));";
22
23 DBTutActivity test = new DBTutActivity(activity,"viewtabelle",sql);
24 }
25
26 @Override
27 public boolean onCreateOptionsMenu(Menu menu) {
28 getMenuInflater().inflate(R.menu.activity_star, menu);
29 return true;
30 }
31
32
33}
Und das ist die Klasse welche es dann in eine DB schreiben soll:
1package ch.dbtut;
2
3import android.app.Activity;
4import android.content.ContentValues;
5import android.content.Context;
6import android.database.sqlite.SQLiteDatabase;
7import android.database.sqlite.SQLiteDatabase.CursorFactory;
8import android.database.sqlite.SQLiteOpenHelper;
9import android.os.Bundle;
10import android.util.Log;
11import android.view.Menu;
12
13public class DBTutActivity extends SQLiteOpenHelper {
14
15 // bietet Methoden Verwalten einer SQLite-Datenbank. Dazu gehören das
16 // Erstellen und Löschen von Datenbanken und Tabellen, sowie das Ausführen
17 // von SQLAnweisungen.
18 private SQLiteDatabase myDB;
19 private String dBTabelle;
20 private String tabellenSQL;
21
22
23 public DBTutActivity(Context activity, String dbName, String sql) {
24
25 super(activity, dbName, null, 1);
26 Log.d("Konstruktur","Ich bin im Konstruktor");
27
28 this.tabellenSQL = sql.toUpperCase();
29
30 // onCreate(myDB );
31 this.myDB = getWritableDatabase();
32 DatensatzStpl ds = new DatensatzStpl(1232, 12345, 5, "IT-0912", "202",
33 "Progammierung");
34
35 datenSatzErstellen(ds);
36
37 }
38
39 @Override
40 public synchronized void close() {
41 // TODO Auto-generated method stub
42 if (myDB != null) {
43 myDB.close();
44 myDB = null;
45 }
46 super.close();
47 }
48
49 @Override
50 public void onCreate(SQLiteDatabase db) {
51 try {
52 myDB.execSQL(tabellenSQL);
53 Log.d("carpelibrum", "datenbank wird angelegt");
54 } catch (Exception ex) {
55 Log.e("carpediam", ex.getMessage());
56 }
57
58 }
59
60 @Override
61 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
62 // TODO Auto-generated method stub
63
64 }
65
66 public long datenSatzErstellen(DatensatzStpl ds) {
67
68 ContentValues daten = new ContentValues();
69 daten.put("start", ds.start);
70 daten.put("ende", ds.ende);
71 daten.put("anzahlLektionen", ds.anzahlLektionen);
72 daten.put("klasse", ds.klasse);
73 daten.put("zimmername", ds.zimmername);
74 daten.put("bezeichnung", ds.bezeichnung);
75
76 return myDB.insert(dBTabelle, null, daten);
77
78 }
79}
2
3import android.app.Activity;
4import android.content.ContentValues;
5import android.content.Context;
6import android.database.sqlite.SQLiteDatabase;
7import android.database.sqlite.SQLiteDatabase.CursorFactory;
8import android.database.sqlite.SQLiteOpenHelper;
9import android.os.Bundle;
10import android.util.Log;
11import android.view.Menu;
12
13public class DBTutActivity extends SQLiteOpenHelper {
14
15 // bietet Methoden Verwalten einer SQLite-Datenbank. Dazu gehören das
16 // Erstellen und Löschen von Datenbanken und Tabellen, sowie das Ausführen
17 // von SQLAnweisungen.
18 private SQLiteDatabase myDB;
19 private String dBTabelle;
20 private String tabellenSQL;
21
22
23 public DBTutActivity(Context activity, String dbName, String sql) {
24
25 super(activity, dbName, null, 1);
26 Log.d("Konstruktur","Ich bin im Konstruktor");
27
28 this.tabellenSQL = sql.toUpperCase();
29
30 // onCreate(myDB );
31 this.myDB = getWritableDatabase();
32 DatensatzStpl ds = new DatensatzStpl(1232, 12345, 5, "IT-0912", "202",
33 "Progammierung");
34
35 datenSatzErstellen(ds);
36
37 }
38
39 @Override
40 public synchronized void close() {
41 // TODO Auto-generated method stub
42 if (myDB != null) {
43 myDB.close();
44 myDB = null;
45 }
46 super.close();
47 }
48
49 @Override
50 public void onCreate(SQLiteDatabase db) {
51 try {
52 myDB.execSQL(tabellenSQL);
53 Log.d("carpelibrum", "datenbank wird angelegt");
54 } catch (Exception ex) {
55 Log.e("carpediam", ex.getMessage());
56 }
57
58 }
59
60 @Override
61 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
62 // TODO Auto-generated method stub
63
64 }
65
66 public long datenSatzErstellen(DatensatzStpl ds) {
67
68 ContentValues daten = new ContentValues();
69 daten.put("start", ds.start);
70 daten.put("ende", ds.ende);
71 daten.put("anzahlLektionen", ds.anzahlLektionen);
72 daten.put("klasse", ds.klasse);
73 daten.put("zimmername", ds.zimmername);
74 daten.put("bezeichnung", ds.bezeichnung);
75
76 return myDB.insert(dBTabelle, null, daten);
77
78 }
79}
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.