2012-03-11 2 views
0

J'essaie d'ajouter une deuxième table à mon application mais je n'ai pas de chance. Les deux tables sont leurs propres classes et sont des singletons. Je passe une référence de la base de données dans la méthode onUpgrade et de nouveau en tant que variable d'instance.Tableau supplémentaire non créé

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    transTable = TransactionTable.getInstance(db); 
    sysTable = SystemTable.getInstance(db); 

    onCreate(db); 

    transTable.updateTable(); 
    sysTable.updateTable(); 
} 

La méthode onCreate appelle simplement les méthodes create dans toutes les tables.

@Override 
public void onCreate(SQLiteDatabase db) { 
    transTable.createTable(); 
    sysTable.createTable(); 
} 

La seconde table, sysTable, ne lance pas et exception lors de l'exécution de l'instruction create suivante.

public void createTable() { 
    db.rawQuery("CREATE TABLE IF NOT EXISTS " + tableName + " (" 
      + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + lastUsed 
      + " INTEGER, " + balance + " INTEGER, " + accountName 
      + " TEXT, UNIQUE (" + accountName + "))", null); 
} 

Mais, quand je lance une requête simple comme la suivante:

db.rawQuery("select * from " + tableName, null); 

Je reçois une erreur indiquant

android.database.sqlite.SQLiteException: no such table: system_t: , 
while compiling: select * from system_t 

Il n'y a pas de problème avec la première table étant tombé ou créé. Des idées?

Répondre

0

changement méthode createTable le code:

db.rawQuery 

à

db.execSQL() 
+1

homme Aaahh! De toutes les choses ... Merci bigcat. – DroidT

Questions connexes