2009-06-16 5 views
0

Un exemple très simple que j'essaie de créer en apprenant la programmation de l'application iPhone.Comment obtenir la clé de l'objet parent sur iPhone avec Sqlite

Première TableView montre les marques, en sélectionnant une prise d'utilisateur à vue différente (puis-je utiliser la même vue pour afficher les modèles) pour afficher les modèles. Si les modèles TableView, qui affiche les modèles de voitures, permettent à l'utilisateur d'ajouter un nouvel enregistrement, comment et où puis-je capturer la clé primaire (pk) de la clé parente (make)?

Quelle méthode devrais-je capturer la clé primaire et comment?

base de données SQLite:

CREATE TABLE make(pk INTEGER PRIMARY KEY, parentkey INTEGER DEFAULT 0, title TEXT); 

INSERT INTO make(title) VALUES('Honda'); 
INSERT INTO make(title) VALUES('Toyota'); 
INSERT INTO make(title) VALUES('Mazda'); 
INSERT INTO make(title) VALUES('Nissan'); 

INSERT INTO make(title, parentkey) VALUES('Civic', 1); 
INSERT INTO make(title, parentkey) VALUES('Accord', 1); 
INSERT INTO make(title, parentkey) VALUES('Corolla', 2); 
INSERT INTO make(title, parentkey) VALUES('Corona', 2); 

Répondre

0

Via SQL, vous pouvez interroger la table SQLITE_SEQUENCE après chaque insertion:

SELECT seq FROM SQLITE_SEQUENCE WHERE name = 'make'

Cela ne fonctionnera de manière fiable si vous faites vos inserts et sélectionnez cette option dans la même transaction, en verrouillant la table pour que personne d'autre ne puisse faire une insertion avant d'obtenir la valeur du seq table de correspondance.


Utilisation de l'API (et non SQL):

sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);

(de http://www.sqlite.org/c3ref/last_insert_rowid.html)

Questions connexes