MySQLite bricht bei getWritableDatabase(); ab.

  • Antworten:15
ma mue
  • Forum-Beiträge: 13

12.07.2012, 13:42:54 via Website

Hi ich bin neu im forum und auch beim androidprogramieren.

habe das problem das sich die app beim aufrufen der datenbank aufhängt also in der zeile ourDatabase = ourHelper.getWritableDatabase(); in der methode public aktien_db open() {

1package de.GFD.bapp;
2
3import android.content.ContentValues;
4import android.content.Context;
5import android.database.Cursor;
6import android.database.SQLException;
7import android.database.sqlite.SQLiteDatabase;
8import android.database.sqlite.SQLiteOpenHelper;
9
10public class aktien_db {
11
12
13 private static final String DATABASE_NAME = "BApp";
14 private static final String DATABASE_TABLE = "aktien_tabelle";
15 private static final int DATABASE_VERSION = 1;
16
17 public static final String KEY_ISIN = "ISIN";
18 public static final String KEY_BEZEICHNUNG = "Bezeichnung";
19
20 private dbHelper ourHelper;
21 private final Context ourContext;
22 private SQLiteDatabase ourDatabase;
23
24 private static class dbHelper extends SQLiteOpenHelper{
25
26 public dbHelper(Context context) {
27 super(context, DATABASE_NAME, null, DATABASE_VERSION);
28 // TODO Auto-generated constructor stub
29 }
30
31 @Override
32 public void onCreate(SQLiteDatabase db) {
33 // TODO Auto-generated method stub
34 db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
35 KEY_ISIN + " TEXT NOT NULL, " +
36 KEY_BEZEICHNUNG + " TEXT NOT NULL );"
37 );
38 }
39
40 @Override
41 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
42 // TODO Auto-generated method stub
43 db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
44 onCreate(db);
45
46 }
47
48
49 }
50
51 public aktien_db(Context c){
52 ourContext = c;
53
54 }
55
56 public aktien_db open() {
57
58 ourHelper = new dbHelper(ourContext);
59
60 ourDatabase = ourHelper.getWritableDatabase();
61
62 return this;
63
64 }
65
66 public void close(){
67 ourHelper.close();
68 }
69
70 public long createEntry(String iSIN, String name) {
71 // TODO Auto-generated method stub
72 ContentValues cv = new ContentValues();
73 cv.put(KEY_ISIN, iSIN);
74 cv.put(KEY_BEZEICHNUNG, name);
75 return ourDatabase.insert(DATABASE_TABLE, null, cv);
76
77 }
78
79 public aktien_stack getData() {
80 // TODO Auto-generated method stub
81 aktien_stack anfang = null;
82 aktien_stack a = null;
83 String[] columns = new String[] {KEY_ISIN, KEY_BEZEICHNUNG};
84 Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
85
86
87 int iISIN = c.getColumnIndex(KEY_ISIN);
88 int iBezeichnung = c.getColumnIndex(KEY_BEZEICHNUNG);
89
90 for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
91
92
93
94 if(anfang==null){
95 anfang = new aktien_stack();
96 anfang.Set_aktien_stack(c.getString(iISIN), c.getString(iBezeichnung));
97 anfang.next=null;
98
99 }
100 else{
101 a = new aktien_stack();
102 a.next = anfang;
103 a.Set_aktien_stack(c.getString(iISIN), c.getString(iBezeichnung));
104 anfang = a;
105
106 }
107
108 }
109 return anfang;
110
111 }
112
113
114}

107-12 07:33:53.448: D/dalvikvm(2344): GC_FOR_ALLOC freed 61K, 3% free 9013K/9283K, paused 83ms
207-12 07:33:53.468: I/dalvikvm-heap(2344): Grow heap (frag case) to 9.772MB for 960012-byte allocation
307-12 07:33:53.528: I/dalvikvm(2344): threadid=3: reacting to signal 3
407-12 07:33:53.688: I/dalvikvm(2344): Wrote stack traces to '/data/anr/traces.txt'
507-12 07:33:53.698: D/dalvikvm(2344): GC_CONCURRENT freed <1K, 3% free 9950K/10247K, paused 5ms+4ms
607-12 07:33:53.988: I/dalvikvm(2344): threadid=3: reacting to signal 3
707-12 07:33:53.988: I/dalvikvm(2344): Wrote stack traces to '/data/anr/traces.txt'
807-12 07:33:54.488: I/dalvikvm(2344): threadid=3: reacting to signal 3
907-12 07:33:54.488: I/dalvikvm(2344): Wrote stack traces to '/data/anr/traces.txt'
1007-12 07:33:58.048: D/gralloc_goldfish(2344): Emulator without GPU emulation detected.
1107-12 07:33:58.108: I/dalvikvm(2344): threadid=3: reacting to signal 3
1207-12 07:33:58.138: I/dalvikvm(2344): Wrote stack traces to '/data/anr/traces.txt'
1307-12 07:33:58.888: I/dalvikvm(2344): threadid=3: reacting to signal 3
1407-12 07:33:58.898: I/dalvikvm(2344): Wrote stack traces to '/data/anr/traces.txt'
1507-12 07:34:00.098: I/System.out(2344): megaTest1
1607-12 07:34:00.098: I/System.out(2344): Testebene2 7
1707-12 07:34:00.098: I/System.out(2344): Testebene2 8
1807-12 07:34:00.108: D/AndroidRuntime(2344): Shutting down VM
1907-12 07:34:00.108: W/dalvikvm(2344): threadid=1: thread exiting with uncaught exception (group=0xb4058180)
2007-12 07:34:00.148: E/AndroidRuntime(2344): FATAL EXCEPTION: main
2107-12 07:34:00.148: E/AndroidRuntime(2344): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.GFD.bapp/de.GFD.bapp.menue}: java.lang.NullPointerException
2207-12 07:34:00.148: E/AndroidRuntime(2344): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
2307-12 07:34:00.148: E/AndroidRuntime(2344): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
2407-12 07:34:00.148: E/AndroidRuntime(2344): at android.app.ActivityThread.access$600(ActivityThread.java:123)
2507-12 07:34:00.148: E/AndroidRuntime(2344): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
2607-12 07:34:00.148: E/AndroidRuntime(2344): at android.os.Handler.dispatchMessage(Handler.java:99)
2707-12 07:34:00.148: E/AndroidRuntime(2344): at android.os.Looper.loop(Looper.java:137)
2807-12 07:34:00.148: E/AndroidRuntime(2344): at android.app.ActivityThread.main(ActivityThread.java:4424)
2907-12 07:34:00.148: E/AndroidRuntime(2344): at java.lang.reflect.Method.invokeNative(Native Method)
3007-12 07:34:00.148: E/AndroidRuntime(2344): at java.lang.reflect.Method.invoke(Method.java:511)
3107-12 07:34:00.148: E/AndroidRuntime(2344): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
3207-12 07:34:00.148: E/AndroidRuntime(2344): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
3307-12 07:34:00.148: E/AndroidRuntime(2344): at dalvik.system.NativeStart.main(Native Method)
3407-12 07:34:00.148: E/AndroidRuntime(2344): Caused by: java.lang.NullPointerException
3507-12 07:34:00.148: E/AndroidRuntime(2344): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
3607-12 07:34:00.148: E/AndroidRuntime(2344): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
3707-12 07:34:00.148: E/AndroidRuntime(2344): at de.GFD.bapp.aktien_db.open(aktien_db.java:60)
3807-12 07:34:00.148: E/AndroidRuntime(2344): at de.GFD.bapp.MySQL_get_data_online.setData(MySQL_get_data_online.java:32)
3907-12 07:34:00.148: E/AndroidRuntime(2344): at de.GFD.bapp.menue.onCreate(menue.java:43)
4007-12 07:34:00.148: E/AndroidRuntime(2344): at android.app.Activity.performCreate(Activity.java:4465)
4107-12 07:34:00.148: E/AndroidRuntime(2344): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
4207-12 07:34:00.148: E/AndroidRuntime(2344): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
4307-12 07:34:00.148: E/AndroidRuntime(2344): ... 11 more
4407-12 07:34:00.378: I/dalvikvm(2344): threadid=3: reacting to signal 3
4507-12 07:34:00.378: I/dalvikvm(2344): Wrote stack traces to '/data/anr/traces.txt'
4607-12 07:34:00.789: I/dalvikvm(2344): threadid=3: reacting to signal 3
4707-12 07:34:00.798: I/dalvikvm(2344): Wrote stack traces to '/data/anr/traces.txt'


Vielen Dank für die Hilfe ;)
lg Mathias

— geändert am 12.07.2012, 15:04:11

Antworten
ma mue
  • Forum-Beiträge: 13

12.07.2012, 14:38:57 via Website

Danke peinlich :*) aber das hat den fehler leider noch nicht behoben

hier nochmal der log fals sich was geändert hat

107-12 07:51:03.614: D/dalvikvm(2547): GC_FOR_ALLOC freed 34K, 3% free 9013K/9283K, paused 75ms
207-12 07:51:03.635: I/dalvikvm-heap(2547): Grow heap (frag case) to 9.772MB for 960012-byte allocation
307-12 07:51:03.714: I/dalvikvm(2547): threadid=3: reacting to signal 3
407-12 07:51:03.804: I/dalvikvm(2547): Wrote stack traces to '/data/anr/traces.txt'
507-12 07:51:03.824: D/dalvikvm(2547): GC_CONCURRENT freed <1K, 3% free 9950K/10247K, paused 5ms+3ms
607-12 07:51:04.184: I/dalvikvm(2547): threadid=3: reacting to signal 3
707-12 07:51:04.214: I/dalvikvm(2547): Wrote stack traces to '/data/anr/traces.txt'
807-12 07:51:04.685: I/dalvikvm(2547): threadid=3: reacting to signal 3
907-12 07:51:04.704: I/dalvikvm(2547): Wrote stack traces to '/data/anr/traces.txt'
1007-12 07:51:07.864: I/dalvikvm(2547): threadid=3: reacting to signal 3
1107-12 07:51:07.864: I/dalvikvm(2547): Wrote stack traces to '/data/anr/traces.txt'
1207-12 07:51:08.114: D/gralloc_goldfish(2547): Emulator without GPU emulation detected.
1307-12 07:51:08.464: I/dalvikvm(2547): threadid=3: reacting to signal 3
1407-12 07:51:08.494: I/dalvikvm(2547): Wrote stack traces to '/data/anr/traces.txt'
1507-12 07:51:08.973: I/dalvikvm(2547): threadid=3: reacting to signal 3
1607-12 07:51:08.984: I/dalvikvm(2547): Wrote stack traces to '/data/anr/traces.txt'
1707-12 07:51:10.493: D/AndroidRuntime(2547): Shutting down VM
1807-12 07:51:10.503: W/dalvikvm(2547): threadid=1: thread exiting with uncaught exception (group=0xb4058180)
1907-12 07:51:10.514: E/AndroidRuntime(2547): FATAL EXCEPTION: main
2007-12 07:51:10.514: E/AndroidRuntime(2547): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.GFD.bapp/de.GFD.bapp.menue}: java.lang.NullPointerException
2107-12 07:51:10.514: E/AndroidRuntime(2547): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
2207-12 07:51:10.514: E/AndroidRuntime(2547): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
2307-12 07:51:10.514: E/AndroidRuntime(2547): at android.app.ActivityThread.access$600(ActivityThread.java:123)
2407-12 07:51:10.514: E/AndroidRuntime(2547): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
2507-12 07:51:10.514: E/AndroidRuntime(2547): at android.os.Handler.dispatchMessage(Handler.java:99)
2607-12 07:51:10.514: E/AndroidRuntime(2547): at android.os.Looper.loop(Looper.java:137)
2707-12 07:51:10.514: E/AndroidRuntime(2547): at android.app.ActivityThread.main(ActivityThread.java:4424)
2807-12 07:51:10.514: E/AndroidRuntime(2547): at java.lang.reflect.Method.invokeNative(Native Method)
2907-12 07:51:10.514: E/AndroidRuntime(2547): at java.lang.reflect.Method.invoke(Method.java:511)
3007-12 07:51:10.514: E/AndroidRuntime(2547): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
3107-12 07:51:10.514: E/AndroidRuntime(2547): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
3207-12 07:51:10.514: E/AndroidRuntime(2547): at dalvik.system.NativeStart.main(Native Method)
3307-12 07:51:10.514: E/AndroidRuntime(2547): Caused by: java.lang.NullPointerException
3407-12 07:51:10.514: E/AndroidRuntime(2547): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
3507-12 07:51:10.514: E/AndroidRuntime(2547): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
3607-12 07:51:10.514: E/AndroidRuntime(2547): at de.GFD.bapp.aktien_db.open(aktien_db.java:60)
3707-12 07:51:10.514: E/AndroidRuntime(2547): at de.GFD.bapp.MySQL_get_data_online.setData(MySQL_get_data_online.java:32)
3807-12 07:51:10.514: E/AndroidRuntime(2547): at de.GFD.bapp.menue.onCreate(menue.java:43)
3907-12 07:51:10.514: E/AndroidRuntime(2547): at android.app.Activity.performCreate(Activity.java:4465)
4007-12 07:51:10.514: E/AndroidRuntime(2547): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
4107-12 07:51:10.514: E/AndroidRuntime(2547): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
4207-12 07:51:10.514: E/AndroidRuntime(2547): ... 11 more
4307-12 07:51:10.853: I/dalvikvm(2547): threadid=3: reacting to signal 3
4407-12 07:51:10.883: I/dalvikvm(2547): Wrote stack traces to '/data/anr/traces.txt'
4507-12 07:51:11.083: I/dalvikvm(2547): threadid=3: reacting to signal 3
4607-12 07:51:11.093: I/dalvikvm(2547): Wrote stack traces to '/data/anr/traces.txt'



LG Mathias

— geändert am 12.07.2012, 15:03:42

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

12.07.2012, 15:39:29 via Website

Keine Ahnung, so habe ich dieses Konstrukt auch noch nie gebaut (statischer Inner Class SQLiteOpenHelper greift auf statische Objekte der umgebenden Klasse zu). Ich würde das mal debuggen um zu schauen ob auch alles in der korrekten Reihenfolge abläuft.

* Wird die Datenbank überhaupt angelegt?

* Ich würde zum Beispiel keinen Semikolon hinter das CREATE TABLE setzen. Ich habe allerdings noch nie ausprobiert ob das geht oder nicht.

* Die von Dir verwendete Groß-/Kleinschrift hat mich beim Lesen extrem behindert (Methode Set_aktien_stack(), Klasse aktien_db). Damit legst Du Dich selbst irgendwann mal aufs Kreuz.

Antworten
ma mue
  • Forum-Beiträge: 13

13.07.2012, 10:04:12 via Website

ich hab jetzt mal getestet ob überhaupt eine Datenbank erzeugt wird doch wird die onCreate(SQLiteDatabase db) garnicht erst aufgerufen.

woran kann das liegen ?


LG Mathias

Antworten
ma mue
  • Forum-Beiträge: 13

13.07.2012, 14:25:03 via Website

1aktien_db entry = new aktien_db(MySQL_get_data_online.this);
2
3 entry.open();
4
5 entry.createEntry(ISIN, name );
6
7 entry.close();

aber zu entry.createEntry(ISIN, name ); kommt er grnicht erst.

MySQL_get_data_online ist der classen name: public class MySQL_get_data_online extends Activity{ ...

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

13.07.2012, 15:04:55 via Website

Hast Du Tipps von mir mal probiert (Semikolon raus, Groß-/Kleinschrift prüfen, ...)? Ansonsten hilft nur Debuggen.

Der Knackpunkt ist die Zeile "new aktien_db()". Geh das mal komplett im Debugger durch. Ist Context vernünftig belegt? NullPointerException kommt ja nicht von ungefähr.

Da ich den getWriteableDatabase in allen meinen Apps überschreibe (meine Datenbanken können intern oder extern liegen) kenne ich diese Methode sehr genau. Glaub mal, da ist nix Kompliziertes. Solange Du einen gültigen Datenbank-Dateinamen übergibst, die Datenbankdatei nicht anderweitig gelockt ist und der Context stimmt wird die Datenbankdatei entweder angelegt oder geöffnet. Im ersten Fall wird onCreate aufgerufen im zweiten onUpgrade.

Setz mal im Debugger einen Breakpoint auf beide Methoden (onCreate, onUpgrade).

— geändert am 13.07.2012, 15:05:53

Antworten
ma mue
  • Forum-Beiträge: 13

16.07.2012, 11:28:18 via Website

danke ich werds probieren

Antworten
ma mue
  • Forum-Beiträge: 13

17.07.2012, 09:10:57 via Website

hab jetzt meinen fehler gefunden. :D

habe den context einer nicht aktiven classe übergeben .

Dnke für die Hilfe Harald Wilhelm

Antworten
ma mue
  • Forum-Beiträge: 13

19.07.2012, 14:33:34 via Website

hätte noch eine frage wenn ich jetzt eine 2te tabelle in meine DB einfügen will kann ich das auch in einer anderen klasse machen ??

weil bei mir funktioniert das i-wie nicht ):


hab jetzt meine zweite klasse so erstellt.


1package de.GFD.bapp;
2
3import android.content.ContentValues;
4import android.content.Context;
5import android.database.Cursor;
6import android.database.sqlite.SQLiteDatabase;
7import android.database.sqlite.SQLiteOpenHelper;
8
9
10
11public class notiz_db {
12
13
14 int ID;
15 private static final String DATABASE_NAME = "BApp";
16 private static String DATABASE_TABLE = "notiz_tabelle";
17 private static final int DATABASE_VERSION = 3;
18
19 public static final String KEY_ID = "ID";
20 public static final String KEY_NAME = "Titel";
21 public static final String KEY_TEXT = "Text";
22
23
24
25 private dbHelper ourHelper;
26 private final Context ourContext;
27 private SQLiteDatabase ourDatabase;
28
29 private static class dbHelper extends SQLiteOpenHelper{
30
31 public dbHelper(Context context) {
32 super(context, DATABASE_NAME, null, DATABASE_VERSION);
33 // TODO Auto-generated constructor stub
34 }
35
36 @Override
37 public void onCreate(SQLiteDatabase db) {
38 // TODO Auto-generated method stub
39 db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
40 KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
41 KEY_NAME + " TEXT NOT NULL, " +
42 KEY_TEXT + " TEXT NOT NULL);"
43 );
44
45 }
46
47 @Override
48 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
49 // TODO Auto-generated method stub
50 db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
51 onCreate(db);
52
53 }
54
55
56 }
57
58 public notiz_db(Context c){
59 ourContext = c;
60
61
62 }
63
64 public notiz_db open() {
65 ourHelper = new dbHelper(ourContext);
66 ourDatabase = ourHelper.getWritableDatabase();
67 return this;
68
69 }
70
71 public void close(){
72 ourHelper.close();
73 }
74
75 public long createEntry(String titel, String text) {
76
77 ContentValues cv = new ContentValues();
78
79 cv.put(KEY_NAME, titel);
80 cv.put(KEY_TEXT, text);
81
82
83 return ourDatabase.insert(DATABASE_TABLE, null, cv);
84
85 }
86
87 public long createEntryupdate(String titel, String text, String titelalt) {
88
89 ContentValues cv = new ContentValues();
90
91 cv.put(KEY_NAME, titel);
92 cv.put(KEY_TEXT, text);
93
94 return ourDatabase.update(DATABASE_TABLE, cv, KEY_NAME + "=" + titelalt , null);
95 }
96
97
98 public notiz_stack getData(int i) {
99 // TODO Auto-generated method stub
100 notiz_stack anfang = null;
101 notiz_stack ende = null;
102 notiz_stack a = null;
103 String[] columns = new String[] {KEY_ID, KEY_NAME, KEY_TEXT};
104 Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
105
106
107 int iID = c.getColumnIndex(KEY_ID);
108 int iName = c.getColumnIndex(KEY_NAME);
109 int iText = c.getColumnIndex(KEY_TEXT);
110
111 for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
112
113
114 if(anfang==null){
115 anfang = new notiz_stack();
116 anfang.Set_notiz_stack(c.getInt(iID),c.getString(iName), c.getString(iText));
117 anfang.next=null;
118 anfang.last=null;
119 ende=anfang;
120 }
121 else{
122 a = new notiz_stack();
123 a.next = anfang;
124 a.Set_notiz_stack(c.getInt(iID),c.getString(iName), c.getString(iText));
125 anfang = a;
126 anfang.next.last =anfang;
127 }
128
129
130 }
131 if(i==1){
132 return ende;
133 }
134
135 return anfang;
136
137 }
138
139 public int getRowNumber(){
140 int x=0;
141 Cursor c = ourDatabase.query(DATABASE_TABLE, null, null, null, null, null, null);
142
143 for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
144 x++;
145
146 }
147 return x;
148 }
149
150 public String get_text(String titel) {
151
152
153 String[] columns = new String[] {KEY_ID, KEY_NAME, KEY_TEXT};
154 Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "=" + titel , null, null, null, null);
155 c.moveToFirst();
156 int iText = c.getColumnIndex(KEY_TEXT);
157
158 return c.getString(iText);
159 }
160
161 public void createEntryloeschen(String titel) {
162 String a,b;
163 ContentValues cv = new ContentValues();
164 String[] columns = new String[] {KEY_ID, KEY_NAME, KEY_TEXT};
165 Cursor cd = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "=" + titel, null, null, null, null);
166 cd.moveToFirst();
167 Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "=" + titel, null, null, null, null);
168 c.moveToFirst();
169 c.moveToNext();
170
171
172 int iID = cd.getColumnIndex(KEY_ID);
173 int iName = cd.getColumnIndex(KEY_NAME);
174 int iText = cd.getColumnIndex(KEY_TEXT);
175
176
177 for (cd.moveToFirst(); !c.isAfterLast(); cd.moveToNext()){
178
179 a = c.getString(iName);
180 b = c.getString(iText);
181 this.ID = c.getInt(iID);
182
183 cv.put(KEY_NAME, a);
184 cv.put(KEY_TEXT, b);
185
186 ourDatabase.update(DATABASE_TABLE, cv, KEY_NAME + "=" + titel , null);
187 c.moveToNext();
188
189 }
190 ourDatabase.delete(DATABASE_TABLE, KEY_NAME + "=" + this.ID, null);
191
192 }
193
194}


nur jedes mal wenn ich die neue tabelle aufrufe sagt er mir das "no such table"

der context wird auch aus der neuen klasse übergeben aus der ich die datenbank aufrufe.

Danke schonmal ^^

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

19.07.2012, 17:58:32 via Website

Du willst also pro Tabelle in Deiner DB eine Klasse bauen die jeweils den statischen SQLiteOpenHelper als Inner Class enthält und jeweils nur für diese Datenbanktabelle den onCreate/onUpgrade macht?

Keine Ahnung ob das geht oder nicht, das habe ich noch nie gemacht.

Sorry, da muss ich passen.

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

19.07.2012, 18:12:31 via App

Ich bins nochmal.

Wie ich oben schon mal vermutet hatte geht das nicht. Guck Dir mal bei grepcode den Sourcecode des SQLiteOpenHelper an. Erste Zeile im getWritableDatabase. Wenn die Datenbank bereits geöffnet ist wird direkt ein return aufgerufen. Es gibt keinen onCreate, keinen onUpgrade, nix.

Ich hatte schon die ganze Zeit so ein Bauchgefühl. Das was Du da machst wird scheitern. Schau Dir bitte im Web an wie das richtig geht. Da gibts 100te funktionierende Beispiele.

Der SQLiteOpenHelper ist zur Verwaltung einer Datenbank - nicht zur Verwaltung einer Datenbank-Tabelle.

— geändert am 19.07.2012, 18:18:32

Antworten
ma mue
  • Forum-Beiträge: 13

19.07.2012, 20:09:34 via Website

habs auch schon befürchtet ^^

Danke

Antworten
ma mue
  • Forum-Beiträge: 13

19.07.2012, 21:03:52 via Website

muss ich dann eigentlich immer den selben context benutzen oder immer den aus welcher aktiven klasse ich die datenbank aufrufe

Antworten