2010-03-24 6 views
1

Je comprends le titre peut paraître déroutant, mais l'objectif est très clair:Comment insérer la dernière row_id d'une table dans une autre table en utilisant Android et SQLite

Je construis une application qui nécessite deux tables: pistes et waypoints.

Un utilisateur entre le nom de la piste via un champ de texte et la table génère un ID sous track_id.

Dans la table de waypoints, il y a une colonne appelée track_id_fk. Lorsque la méthode OnLocationChanged() est appelée, la longitude et la latitude sont entrées dans la table, avec l'heure.

Je souhaite ajouter le track_id de la nouvelle entrée de la piste dans la colonne track_id_fk de la table des waypoints.

J'utilise le code suivant:

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); 

Je ne suis pas sûr de ce que la valeur devrait être là où « dernier TrackID Inséré » est.

Merci

Répondre

4

insertOrThrow Renvoie la ligne ID de la ligne nouvellement insérée, ou -1 si une erreur est survenue

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

Merci pour la réponse, c'est exactement ce que je dois, cependant, les valeurs. Les déclarations put sont dans des méthodes séparées. L'insertion dans la table de trace se produit dans la méthode OnCreate() et l'insertion de coordonnées GP dans la table de waypoints se produit dans la méthode OnLocationChanged(). Comment faire référence à la variable insertid Long? – jcrowson

+0

Enregistrez-le quelque part pour une utilisation ultérieure. C'est une question de POO, si vous ne pouvez toujours pas comprendre, postez une nouvelle question. – Pentium10

+0

Je viens de relire ma question, je pense que je venais d'avoir un de ces jours! Evidemment, il fallait juste une longue déclaration de variable trackid au sommet :) merci pour votre aide Pentium10! – jcrowson

Questions connexes