Bonjour,

Je suis entrain de manipuler une base de donnée, la base se crée bien pour la version 1 mais quand je change de version pour avoir deux bases de données j'ai un message d'erreur

AndroidTest
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public class Test extends AndroidTestCase {
 
    String tag = "TEST_BDD";
 
    public void testCreation()
    {
        //Tache_BDD t_bdd = new Tache_BDD(this.getContext(),"BDD_TEST",null,1);
        Tache_BDD t_bdd = new Tache_BDD(this.getContext(),"BDD_TEST",null,2);
        Log.i(tag, "liste des tables " + t_bdd.allTableNames());
    }
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
public class Tache_BDD extends SQLiteOpenHelper {
 
    String tag = "Tache_DBB";
 
 
    private static final String TABLE_TACHE = "table_tache";
    private static final String COL_LIGNE = "LIGNE";
    private static final String COL_TITRE = "TITRE";
    private static final String COL_PRIORITE = "PRIORITE";
 
    private static final String CREATE_BDD = "CREATE TABLE " + TABLE_TACHE + " ("
            + COL_LIGNE + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + COL_TITRE + " TEXT NOT NULL, "
            + COL_PRIORITE + " INTEGER);";
 
    public Tache_BDD(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
    {
        super(context,name,factory,version);
        Log.i(tag, "Constructeur");
 
    }
 
    @Override
    public void onCreate (SQLiteDatabase db)
    {
        Log.i(tag, "Création");
 
        db.execSQL(CREATE_BDD);
 
        Log.i(tag, "Fin de création");
    }
 
    @Override
    public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion)
    {
        Log.i(tag, "mise à jour");
        db.execSQL("DROP TABLE IF EXIST "+ TABLE_TACHE);
        onCreate(db);
        Log.i(tag, "Fin de la mise à jour");
    }
 
    public List<String> allTableNames() {
        List<String> result = new ArrayList<String>() ;
        String selectQuery = "select name from sqlite_master where type = 'table'" ;
        Cursor c = this.getReadableDatabase().rawQuery(selectQuery, null);
        if (c.moveToFirst()) {
            do {
                String n =  c.getString(c.getColumnIndex("name"));
                result.add(n);
            } while (c.moveToNext());
        }
        return result;
    }
}
Message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
Test running started
android.database.sqlite.SQLiteException: near "EXIST": syntax error (code 1): , while compiling: DROP TABLE IF EXIST table_tache
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1663)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594)
at com.example.utilisateur.basededonnee.Tache_BDD.onUpgrade(Tache_BDD.java:54)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:257)
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188)
at com.example.utilisateur.basededonnee.Tache_BDD.allTableNames(Tache_BDD.java:62)
at com.example.utilisateur.basededonnee.Test.testCreation(Test.java:17)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
 
Finish