jeudi 1 mars 2007

Programmation : utiliser SQLite avec PureBasic

SQLite est une bibliothèque écrite en C qui permet d'embarquer dans son programme la gestion d'une vraie base de donnée.
Elle n'a pas pour vocation à être utilisé dans un environnement avec des accès concurrentiels mais vise plutôt les applications qui ont besoin d'une gestion plus poussée des données sans passer par un serveur de base de donnée.
PureBasic est le langage que j'utilise quotidiennement (avec le C/C++) et il lui manque le support de cette bibliothèque. Je vous propose d'y remédier.
Rien de plus simple, il suffit d'installer un compilateur C comme PellesC, de télécharger la version C épurée de SQLite (pas le tarball), de créer un nouveau projet "bibliothèque statique" dans PellesC et d'y ajouter tout le contenu de l'archive de SQLite précédemment téléchargée sauf le fichier "tclsqlite.c".
Il suffit ensuite de se rendre dans les options du projet dans PellesC, dans l'onglet "Compilateur", mettez les informations de debug à "Aucune", la librairie d'éxécution à "Multi-Treads (LIB)", optimisations à "Vitesse augmentée", conventions à "__cdecl" puis de cocher les extensions Microsoft et PellesC.
Lancez la compilation, il ne devrait y avoir que quelques warning sans grande gravité, un fichier "SQLite.lib" sera généré dans le dossier "output" du projet.
Lancez maintenant l'IDE de PureBasic, copiez/collez ce code, il vous servira à tester que la lib fonctionne parfaitement avec le code PureBasic :


ImportC "crtmt.lib" ; <-- à mettre dans le root du projet PB
EndImport

ImportC "sqlite.lib"
sqlite3_close.l(db)
sqlite3_open.l(filename.p-utf8, db)
sqlite3_exec.l(db, sql.p-utf8, *callback, argument, *result)
EndImport

Define db.l, res.l

If sqlite3_open("test.sdb", @db) = 0
MessageRequester("DEBUG","db = "+ Str(db) )
If db
MessageRequester("DEBUG","OPENED" )
sql.s = "select * from ma_table"
sqlite3_exec(db, sql, #Null, #Null, @res) MessageRequester("DEBUG","sqlite3_exec = "+ Str(res) )
If sqlite3_close(db) = 0
MessageRequester("DEBUG","CLOSED")
EndIf
EndIf
EndIf
End


Il ne vous reste plus qu'à copier le fichier "crtmt.lib" qui se trouve dans le dossier "LIB" de l'installation de PellesC puis le fichier "sqlite.lib", précédemment compilé, à la racine du code source PureBasic, à noter qu'avec les dernières versions de SQLite, il faut désactiver le debugger.
Happy coding :)

7 commentaires:

Progi1984 a dit…

Merci KarlKox,

mais peux tu tester si ca marche avec mon wrapper SQLite, stp :
http://www.purebasic.fr/french/viewtopic.php?t=6220

KarLKoX a dit…

Dakoda, je m'en vais voir ça :)

Franck... a dit…

J'ai testé en suivant à la lettre ton tutorial et ca ne marche pas du tout...

:(

KarLKoX a dit…

Si tu tests avec les nouvelles versions de SQLite, j'ai constaté qu'il faut désactiver le debugger de PureBasic, tu as ici : http://sbougribate.free.fr/Files/PureBasic/SOCPB2006_SQLite-KarLKoX.rar

un pack avec tout ce qu'il faut :)

KarLKoX a dit…

Erf ! blogspot a un peu de mal avec les urls un peu long, voici l'url segmentée :

http://sbougribate.free.fr/
Files/
PureBasic/
SOCPB2006_SQLite-KarLKoX.rar

Franck... a dit…

Pour informations, tu désactiver le débuggueur via commande : DisableDebugger

puis EnableDebugger pour le réactiver :)

Gandelf a dit…

Bonjour,
Je suis actuellement à la recherche d'un language de programmation avec lequel je pourrai débuter mais également "aller plus loin". Je suis tombé sur un site qui parlait de Pure Basic et de site en site je suis arrivé ici ;)
Pouvez vous me dire si vous êtes satisfait de ce language, si on peut faire un peu de base de donnée / impression de formulaire, ou si je dois plutôt me tourner vers un autre language !?
Merci d'avance!