2012-12-14 44 views
1


每當我使用下面的代碼將多個記錄插入到表中時,它只會插入最後一個初始化值。

下面是將數據插入表中的方法:使用ContentValue在Sqlite數據庫的兩列中插入多個記錄

public long insertQuote() { 
     ContentValues initialValues = new ContentValues(); 
     initialValues.put(KEY_PHID, 100); 
     initialValues.put(KEY_LAT, 28.5700); 
     initialValues.put(KEY_LAT, 28.4700); 
     initialValues.put(KEY_LAT, 27.1833); 
     initialValues.put(KEY_LAT, 26.4583); 

     initialValues.put(KEY_LON, 77.3200); 
     initialValues.put(KEY_LON, 77.0300); 
     initialValues.put(KEY_LON, 78.0167); 
     initialValues.put(KEY_LON, 80.3173); 

     return db.insert(DATABASE_TABLE, null, initialValues); 
    } 

在這種情況下,該列鍵「KEY_LAT」我只能看到一個SOP的最後一個初始值「26.4583」(Sys.out .println)在logcat上輸出。

對於另一列鍵「KEY_LON」也是如此。我只能看到這兩條記錄。

我想他們沒有插入表格中作爲put()方法跳過以前的"to-be-inserted"值並接受最後一個特定的列。

任何幫助表示讚賞。謝謝。

回答

4

發生這種情況是因爲所有人都使用相同的密鑰LAT和LON。這被覆蓋。

你應該使用不同的密鑰,如

public long insertQuote() { 
     ContentValues initialValues = new ContentValues(); 
     initialValues.put(KEY_PHID, 100); 
     initialValues.put(KEY_LAT1, 28.5700); 
     initialValues.put(KEY_LAT2, 28.4700); 
     initialValues.put(KEY_LAT3, 27.1833); 
     initialValues.put(KEY_LAT4, 26.4583); 

     initialValues.put(KEY_LON1, 77.3200); 
     initialValues.put(KEY_LON2, 77.0300); 
     initialValues.put(KEY_LON3, 78.0167); 
     initialValues.put(KEY_LON4, 80.3173); 

     return db.insert(DATABASE_TABLE, null, initialValues); 
    } 

編輯:

所以,你應該使用這種方法。

public long insertQuote() { 
      ContentValues initialValues = new ContentValues(); 
      initialValues.put(KEY_PHID, 100); 
      initialValues.put(KEY_LAT, 28.5700); 
      initialValues.put(KEY_LON, 77.3200); 
      db.insert(DATABASE_TABLE, null, initialValues); 
      initialValues.put(KEY_LAT, 28.4700); 
      initialValues.put(KEY_LON, 77.0300); 
      db.insert(DATABASE_TABLE, null, initialValues); 
      initialValues.put(KEY_LAT, 27.1833); 
      initialValues.put(KEY_LON, 78.0167); 
      db.insert(DATABASE_TABLE, null, initialValues); 
      initialValues.put(KEY_LAT, 26.4583); 
      initialValues.put(KEY_LON, 80.3173); 
      return db.insert(DATABASE_TABLE, null, initialValues); 
     } 
+0

使用不同的「KEY_LAT1,..KEY_LAT3 ..」將表示不同的列名稱。因爲KEY_LAT和KEY_LON被聲明爲:'public String KEY_LAT =「LATS」; \t public String KEY_LON =「LONS」;'這裏LATS和LONS是一個表中的兩個不同的列字段。你的意思是說我應該聲明KEY_LAT1 =「LATS」和KEY_LAT2 =「LATS」等。 – beerBear

+0

好的。你想要這些在不同的行,對不對? –

+0

這是我的表結構:'phID(整數類型)| LATS(真實類型)| LONS(類型爲real)'我希望所有KEY_LAT值位於名爲LATS的單個列中,並且所有KEY_LON值位於另一個名爲LONS的列中。 – beerBear

相關問題