Page 1 sur 1

DatabaseLastInsertRowId()

Publié : jeu. 03/janv./2008 15:31
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 ?

Publié : jeu. 03/janv./2008 16:20
par Progi1984
SQLite3 n'est pas intégré officiellement, il n'y a qu'un simple lien ODBC.

Publié : jeu. 03/janv./2008 16:26
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

Publié : jeu. 03/janv./2008 17:13
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 !

Publié : jeu. 03/janv./2008 17:20
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

Publié : jeu. 03/janv./2008 20:52
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



Publié : jeu. 03/janv./2008 21:48
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