2011-07-11 81 views
0

所以我有,因爲兩個數據庫的問題:Android的SQLite數據庫保存

的第一個數據庫只是讀取一堆值的,所以這不是問題。我可以從數據庫中提取值,然後使其按照預期顯示在Android設備上。我遇到的問題是,當我嘗試將結果保存到輔助表格時,每次運行該程序時,如果它存在,它會重新創建表格EVEN。

它保存正確,單個結果將通過當我去保存的結果屏幕時,但如果我回去保存另一行到此結果表,它重新創建表並將其添加到第一行。任何想法如何解決或規避這個問題?

我的代碼:

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

你的問題不明確措辭:「...如果我回去保存另一行到這個結果表,它重新創建表並將其添加到第一行」。 「那」是指什麼?你是否只是說你的第一個名爲「Results」的表正在變得過於簡單並且IF NOT EXISTS指令被忽略? – Tim

回答

2

我沒有編譯任何東西,但什麼是清晰可見的,是你沒有任何表中的字段

Primary Key
 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));";