[Tuto] SQlite : RowID

Informations pour bien débuter en PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

[Tuto] SQlite : RowID

Message par falsam »

RowId Qu'est ce que c'est ?
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
■ Exemple avec une base de données créer en mémoire contenant une table produits dans laquelle on va insérer deux enregistrements.

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
Ca pourrait vous interesser.
- 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.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: [Tuto] SQlite : RowID

Message par Kwai chang caine »

Merci de TUTO 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre