- Forum-Beiträge: 4
21.06.2012, 16:49:35 via Website
21.06.2012 16:49:35 via Website
ich bin noch neu in der Android Entwicklung (3 Monate?). Und ich habe schon viel gelesen zu dem SQLiteOpenHelper aber ich habe scheinbar noch ein verständnis Problem.
- Wann genau wird die onUpgrade aufgerufen?
- brauche ich transactions, oder achtet da die Datenbank bei onUpgrade selbst drauf?
Ich hab mit db.setversion(2) die Version auf 2 erhöht, aber es passierte weiter nichts. Beim restart der App kommt dann der Fehler, dass er nicht downgraden kann von Version 2 auf 1.
Anbei mein Code:
2{
3 private Context context;
4 public DatabaseHelper(Context context)
5 {
6 super(context, context.getResources().getString(R.string.DBName), null,
7 Integer.parseInt(context.getResources().getString(
8 R.string.DBVersion)));
9 this.context = context;
10 }
11 @Override
12 public void onCreate(SQLiteDatabase db)
13 {
14 try
15 {
16 fillDatabse(db, "db.sql");
17 }
18 catch (Exception e)
19 {
20 // TODO Auto-generated catch block
21 e.printStackTrace();
22 }
23 }
24 @Override
25 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
26 {
27 // context.deleteDatabase(context.getResources().getString(R.string.DBName));
28 Log.i("DatabaseHelper", "onUpgrade aufgerufen");
29 try
30 {
31 db.beginTransaction();
32 db.execSQL("DROP TABLE IF EXISTS produkt_has_kriterium, kriterium_has_wertemoeglichkeit, wertemoeglichkeit, kriterium, typKriterium, produkt");
33 fillDatabse(db, "dpProd.sql");
34 db.setTransactionSuccessful();
35 }
36 catch (Exception e)
37 {
38 db.endTransaction();
39 }
40 finally
41 {
42 db.endTransaction();
43 }
44 }
45
46 private void fillDatabse(SQLiteDatabase db, String file) throws Exception
47 {
48 for (String sql : context.getResources().getStringArray(
49 R.array.DBCreate))
50 {
51 db.execSQL(sql);
52 }
53 FileReader fReader = new FileReader(file);
54 BufferedReader bReader = new BufferedReader(fReader);
55 String row;
56 while ((row = bReader.readLine()) != null)
57 {
58 db.execSQL(row);
59 }
60 }
61}
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.