Chaque entrée dans des tables SQLite a une clé 64 bits entier signé unique appelé le rowid.
Cette clé est toujours disponible en tant que colonne non déclaré nommé rowid.
Si la table a une colonne de type INTEGER PRIMARY KEY alors la colonne est un autre alias pour le rowid.
Nota : Row = Rangée & id = Identifiant (Oui j'ai osé mettre ça ^^)
Comment connaitre le rowid du dernier enregistrement inséré ?
La procédure DatabaseLastInsertRowId(Database) permet de connaitre le rowid d'un enregistrement que vous venez d'insérer.
Code : Tout sélectionner
Procedure DatabaseLastInsertRowId(Database)
If DatabaseQuery(Database, "Select last_insert_rowid()")
NextDatabaseRow(Database)
ProcedureReturn GetDatabaseLong(Database, 0)
Else
ProcedureReturn -1
EndIf
EndProcedure
Code : Tout sélectionner
Enumeration
#DataBase
EndEnumeration
Declare DatabaseLastInsertRowId(Database)
UseSQLiteDatabase()
Global ReqSql.s
;Création d'une base de donnée en mémoire
OpenDatabase(#DataBase, ":memory:", "", "")
;Creation de la table produits (trés simplifié)
ReqSql = "CREATE TABLE Produits ("
ReqSql + "idauto INTEGER PRIMARY KEY," ;Identification auto
ReqSql + "nom TEXTE," ;Nom du produit
ReqSql + "pu INTEGER" ;Prix unitaire
ReqSql + ");"
DatabaseUpdate(#DataBase, ReqSql)
;Ajout de deux produits
ReqSql = "INSERT INTO produits (nom, pu) values ("
ReqSql + Chr(34) + "Règle" + Chr(34)+Chr(44) ;Nom du produit
ReqSql + Chr(34) + 10 + Chr(34)+")" ;Montant
DatabaseUpdate(#Database, ReqSql)
Debug "Row id = " + DatabaseLastInsertRowId(#Database)
ReqSql = "INSERT INTO produits (nom, pu) values ("
ReqSql + Chr(34) + "Poêle" + Chr(34)+Chr(44) ;Nom du produit
ReqSql + Chr(34) + 9 + Chr(34)+")" ;Montant
DatabaseUpdate(#Database, ReqSql)
Debug "Row id = " + DatabaseLastInsertRowId(#Database)
;Liste des produits
ReqSql = "SELECT idauto, nom, pu FROM produits"
DatabaseQuery(#Database, ReqSql)
While NextDatabaseRow(#Database)
Debug "IdAuto : " + GetDatabaseLong(#Database, 0) + " Produit : " + GetDatabaseString(#Database, 0) + " P.U. : " + Str(GetDatabaseLong(#Database, 1))
Wend
Procedure DatabaseLastInsertRowId(Database)
If DatabaseQuery(Database, "Select last_insert_rowid()")
NextDatabaseRow(Database)
ProcedureReturn GetDatabaseLong(Database, 0)
Else
ProcedureReturn -1
EndIf
EndProcedure
- Créer et mettre à jour une base de données Sqlite
- SQLite Explorer
- Insérer des images dans une base de données SQlite
- Jointure avec 3 tables d'une base de données.