2010-03-24 39 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