DatabaseLastInsertRowId()

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

DatabaseLastInsertRowId()

Message par Thyphoon »

Maintenant que Sqlite3 est intégré a PureBasic il ne manque plus qu'une fonction
DatabaseLastInsertRowId() Histoire de connaitre l'Id du dernier insert
qu'en pensez vous ?
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

SQLite3 n'est pas intégré officiellement, il n'y a qu'un simple lien ODBC.
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Progi1984 a écrit :SQLite3 n'est pas intégré officiellement, il n'y a qu'un simple lien ODBC.
Heu ... tu es sur ?
pourtant il y a bien la commande UseSQLiteDatabase() en plus de la commande UseODBCDatabase() et il y a une sqlite3.lib dans Purelibraries/Windows/Librarie

je suppose donc qu'il y a bien une intégration non ? surtotu que la sqlite3.lib contient tout les fonctions de la sqlite3.dll ou alors je comprends pas l'interêt de la chose.
Edit:
dans la news sur PB 4.2 il est bien marqué

Code : Tout sélectionner

Added: SQLite library
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

OOps, dsl, j'avais mal lu le nom de la procédure, je croyais que c'était UseSQLiteODBCDatabase(). Désolé de ma fausse affirmation !
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Progi1984 a écrit :OOps, dsl, j'avais mal lu le nom de la procédure, je croyais que c'était UseSQLiteODBCDatabase(). Désolé de ma fausse affirmation !
Pas de souci :P Et que penses tu de ma suggestion ?
En attendant voici un code d'apres une suggestion de NetMaestro. Mais ça ne marche que pour une base sqlite3

Code : Tout sélectionner

ImportC "sqlite3.lib"
sqlite3_last_insert_rowid(hDB.l)
EndImport

Procedure DatabaseLastInsertRowId(n)
  hDB.l=IsDatabase(n)
  ProcedureReturn sqlite3_last_insert_rowid(hDB.l)
EndProcedure
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

petite correction du code sinon ça ne fonctionne pas

Code : Tout sélectionner

Global hDB.l
ImportC "sqlite3.lib"
sqlite3_last_insert_rowid(hDB.l)
EndImport

Procedure DatabaseLastInsertRowId()
  LastId.l=sqlite3_last_insert_rowid(hDB.l)
  Debug "hDB:"+Str(hDb)
  Debug "LastId:"+Str( LastId)
  ProcedureReturn LastId
EndProcedure

;Demarre la Base de donnée
UseSQLiteDatabase()
result=OpenDatabase(0, "padb.s3db", "", "")
If result=0
  Debug DatabaseError()
Else
  hDB = PeekL(PeekL(result+4)) 
EndIf


Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Un autre code bien sympa proposer part Kiffi sur le forum anglais
et beaucoup plus simple !

Code : Tout sélectionner

Procedure DatabaseLastInsertRowId(db.l=0)
  DatabaseQuery(db, "Select last_insert_rowid()")
  NextDatabaseRow(db)
  ProcedureReturn GetDatabaseLong(db, 0)
EndProcedure
Répondre