2010-03-24 55 views
1

我明白標題聽起來令人困惑,但我們的目標是非常明確的一個不同的表:如何插入表格的最新ROW_ID爲使用Android和SQLite

我建設,需要兩個表的應用程序:軌道和航點。

用戶通過文本字段輸入曲目名稱,表格在track_id下生成一個ID。

在路點表中有一列叫做track_id_fk。當調用OnLocationChanged()方法時,經度和緯度與時間一起被輸入到表格中。

我想將軌道表中最新軌道條目的track_id添加到航點表中的track_id_fk列。

我使用下面的代碼:

SQLiteDatabase db = waypoints.getWritableDatabase(); 
     ContentValues waypointvalues = new ContentValues(); 
     waypointvalues.put(LONGITUDE, loc.getLongitude()); 
     waypointvalues.put(LATITUDE, loc.getLatitude()); 
     waypointvalues.put(TIME, System.currentTimeMillis()); 
     waypointvalues.put(TRACK_ID_FK, "last inserted trackid"); 
     db.insertOrThrow(TABLE_NAME, null, waypointvalues); 

我不能確定爲應該是什麼樣的價值,其中「最後插入的TrackID」是。

感謝

回答

4

insertOrThrow返回新插入的行的行號,或-1,如果發生錯誤

SQLiteDatabase db1 = tracks.getWritableDatabase(); 
    ContentValues tracksvalues = new ContentValues(); 
    tracksvalues.put(COL1, '1'); 
    tracksvalues.put(COL2, '2'); 
    Long insertid=db1.insertOrThrow(TABLE_NAME1, null, tracksvalues); 

    if (insertid!=-1) { 

     SQLiteDatabase db2 = waypoints.getWritableDatabase(); 
     ContentValues waypointvalues = new ContentValues(); 
     waypointvalues.put(LONGITUDE, loc.getLongitude()); 
     waypointvalues.put(LATITUDE, loc.getLatitude()); 
     waypointvalues.put(TIME, System.currentTimeMillis()); 
     waypointvalues.put(TRACK_ID_FK, insertid); 
     db2.insertOrThrow(TABLE_NAME2, null, waypointvalues); 

    } 
+0

感謝您的答覆,這正是我需要的,但是,值。 put語句是獨立的方法。 插入到軌道表中的事件發生在OnCreate()方法中,並且在OnLocationChanged()方法中插入GP座標到航點表中。 我將如何引用insertid Long變量? – jcrowson 2010-03-24 20:02:01

+0

將它保存在某個地方供以後使用。這是面向對象的問題,如果你仍然無法弄清楚,請發佈一個新問題。 – Pentium10 2010-03-24 20:08:09

+0

我剛剛重讀了我的問題,我想我只是有一天!顯然,它只需要一個長的trackid變量聲明在頂部:)感謝您的幫助Pentium10! – jcrowson 2010-03-24 21:03:11

相關問題