2011-07-11 79 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));";