2011-07-11 5 views
0

J'ai un problème à cause de deux bases de données:base de données SQLite Android sauver

La première base de données est juste un tas de valeurs en cours de lecture, donc ce n'est pas le problème. Je peux tirer des valeurs de la base de données, puis le faire apparaître sur l'appareil Android comme prévu. Le problème que je rencontre est que lorsque j'essaie d'enregistrer les résultats dans une table secondaire, chaque fois que j'exécute le programme, il crée de nouveau la table EVEN si elle existe. Il enregistre correctement et le résultat unique tirera quand je vais à l'écran des résultats enregistrés mais si je retourne à enregistrer une autre ligne à cette table de résultats, il recrée la table et l'ajoute à la première rangée . Une idée de comment résoudre ou contourner ce problème?

Mon code:

MyDataBaseHelper dbCon = new MyDataBaseHelper(this); 
dbCon.open(); 
dbCon.pushToDatabase(uniqueName, date, time, wingType, nozzle, orifice, angle, speed, pressure, dv1, dv5, dv9, sprayVolume1, sprayVolume2, droplet, tableExist); 
dbCon.close(); 

MyDataBaseHelper 
public void pushToDatabase(String uniqueName, String date, String time, String wingType, String nozzle, String orifice, String angle, String speed, String pressure, 
       String dv1, String dv5, String dv9, String sprayVolume1, String sprayVolume2, String droplet, String tableExist) 
     { 

      final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS Results(" 
       + "uniqueName TEXT," 
       + "date TEXT," 
       + "time TEXT," 
       + "wingType TEXT," 
       + "nozzle TEXT," 
       + "orifice TEXT," 
       + "angle TEXT," 
       + "pressure TEXT," 
       + "speed TEXT," 
       + "dv1 TEXT," 
       + "dv5 TEXT," 
       + "dv9 TEXT," 
       + "sprayvolume1 TEXT," 
       + "sprayvolume2 TEXT," 
       + "droplet TEXT);"; 
     myDB.execSQL(CREATE_TABLE); 

     ContentValues values = new ContentValues(); 

     values.put("uniqueName", uniqueName); 
     values.put("date", date); 
     values.put("time", time); 
     values.put("wingType", wingType); 
     values.put("nozzle", nozzle); 
     values.put("orifice", orifice); 
     values.put("angle", angle); 
     values.put("pressure", pressure); 
     values.put("speed", speed); 
     values.put("dv1", dv1); 
     values.put("dv5", dv5); 
     values.put("dv9", dv9); 
     values.put("sprayvolume1", sprayVolume1); 
     values.put("sprayvolume2", sprayVolume2); 
     values.put("droplet", droplet); 

     myDB.insert("Results", null, values); 
     myDB.close(); 

     //Cursor mCursor; 
     //mCursor = myDB.rawQuery(data, null); 
     //mCursor.moveToFirst();*/ 
    } 
+0

Votre question n'est pas clairement libellé: "... si je retourne sauvegarder une autre ligne à cette table de résultats, elle recrée la table et l'ajoute à la première rangée". Qu'est-ce que "ça" veut dire? Est-ce que vous dites simplement que votre première table nommée "Results" est écrite et que la directive IF NOT EXISTS est ignorée? – Tim

Répondre

2

Je ne compile rien, mais ce qui est bien visible, est que vous n'avez pas un Primary Key ensemble sur l'un des champs de table

 final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS Results(" 
      + "uniqueName TEXT," 
      + "date TEXT," 
      + "time TEXT," 
      + "wingType TEXT," 
      + "nozzle TEXT," 
      + "orifice TEXT," 
      + "angle TEXT," 
      + "pressure TEXT," 
      + "speed TEXT," 
      + "dv1 TEXT," 
      + "dv5 TEXT," 
      + "dv9 TEXT," 
      + "sprayvolume1 TEXT," 
      + "sprayvolume2 TEXT," 
      + "droplet TEXT, PRIMARY KEY(uniqueName));"; 
Questions connexes