Page 1 sur 2
Utilisation de la lib interne pour les base de donnée
Publié : sam. 02/févr./2008 18:31
par wolfjeremy
Salut,
J'ai quelques difficultés à utiliser la lib interne pour les base sqlite.
Je met donc à jour un programme pour l'utiliser (qui n'était pas fini, donc je me suis dit au lieu d'utiliser un wrapper autant utiliser directement les truc de pb).
Le problème est que ça fait une heure que je tourne autour du pot, pour écrire dans ma table.
Exemple de code que j'utilise :
DatabaseQuery(0, "INSERT INTO Liste VALUES ('', 'Valeur 1', '80', '3', '
http://Lien1.com', '0', '4')")
Le premier champ est en auto increment (integer), la première valeur en text, les suivante en real, le lien en text, et ensuite on retourne en integer.
J'ai utiliser un logiciel trouvé sur le forum anglais pour la créée car je n'y suis pas arrivé avec les commande sql.
Voila, donc cette commande ne me renvoie aucun message d'erreur (j'ai verifier avec databaseerror ou je ne sais plus qu'elle fonction de pb).
Mais au final rien n'est écris dans ma base de donnée.
J'utilise cela pour récupérer les valeurs dans les colones :
While i<>0
Debug GetDatabaseString(0, 1)
i = NextDatabaseRow(0)
Wend
Voila, j'éspère que vous avez compris mon problème
Merci pour votre aide.
Publié : sam. 02/févr./2008 18:54
par Thyphoon
voici un exemple pour l'insert :
Code : Tout sélectionner
sql="INSERT INTO Game (Name,Rom,Emulator,Year,Manufacturer,Counter) VALUES ('"+Name+"','"+Rom+"','"+Emulator+"','"+Year+"','"+Manufacturer+"',0)"
DatabaseUpdate(0,sql)
il faut dans ta requête donner le nom de tes champs et ce n'est pas besoin de mettre quoi que ce soit pour l'Id si il est en autoincrementation dans l'exemple que j'ai donné j'ai aussi un id et tu remarquera qu'il n'apparait pas...

Publié : sam. 02/févr./2008 19:15
par wolfjeremy
A ok merci, je vais tester ça.
C'est parce que en PHP on est pas obligé d'énuméré les champs en faite, sauf si on veu mettre les valeurs dans des champs particuliés.
Un grand merci.
Publié : sam. 02/févr./2008 19:22
par Thyphoon
wolfjeremy a écrit :A ok merci, je vais tester ça.
C'est parce que en PHP on est pas obligé d'énuméré les champs en faite, sauf si on veu mettre les valeurs dans des champs particuliés.
Un grand merci.
c'est pareille qu'en php, ta requête est exactement la même !
Moi perso je préfère donner le nom des champs ça evite les erreurs...
maintenant il y a une différence entre le SQL de MYSQL et le SQL de SQLITE
peut être que ça vient de là ...
tient au cas ou voici 2 procedure d'un de mes programmes qui fonctionne avec Sqlite peut être que ça t'aidera
Code : Tout sélectionner
Procedure AddGameToList(Id_List.l,Id_Game.l)
Protected sql.s
sql="INSERT INTO List2Game (Id_List,Id_Game) VALUES ("+Chr(34)+Str(Id_List)+Chr(34)+","+Chr(34)+Str(Id_Game)+Chr(34)+")"
If DatabaseUpdate(0,sql)=#False
Debug DatabaseError()
EndIf
ProcedureReturn DatabaseLastInsertRowId()
EndProcedure
Procedure CountGameLaunch(Id.l)
Protected sql.s
Debug "count:"+Str(Id)
sql="Update Game SET Counter=Counter+1 Where Id='"+Str(Id)+"'"
If DatabaseUpdate(0, sql) = #False
Debug DatabaseError()
EndIf
EndProcedure
Publié : sam. 02/févr./2008 19:28
par wolfjeremy
Ok merci, pour l'instant tout marche.
Merci pour les deux exemple, ils me sauveront peut être la vie.
Justement je t'attendais tout à l'heure sur msn pour te demander de l'aide lol
Publié : sam. 02/févr./2008 19:29
par Thyphoon
wolfjeremy a écrit :Ok merci, pour l'instant tout marche.
Merci pour les deux exemple, ils me sauveront peut être la vie.
Justement je t'attendais tout à l'heure sur msn pour te demander de l'aide lol
je suis pas chez moi lolll c'est pour ça

je profite de relever mes emails et d'avoir ma clef usb avec purebasic pour te repondre ! hi hi !!

Publié : sam. 02/févr./2008 19:36
par wolfjeremy
Thyphoon a écrit :
je suis pas chez moi lolll c'est pour ça

je profite de relever mes emails et d'avoir ma clef usb avec purebasic pour te repondre ! hi hi !!

Ben merci de m'avoir aider alors que tu n'était pas chez toi !
Publié : jeu. 07/févr./2008 21:56
par comtois
bon à force de vous lire avec vos SQL , Sqlite, et j'en passe, j'ai envie de m'y mettre, il serait temps !
Pour débuter j'aimerais utiliser les commandes purebasic, j'ignore si c'est le plus simple ? juste avec un fichier sur mon disque dur, pas besoin de me connecter à une base en réseau.
J'ai télécharger sqlite3, c'est un exe, je le lance, ça m'ouvre une console, je suis les instructions
"sqlite3 test.db" pour créer mon premier fichier
ensuite je fais ça
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
jusque là tout va bien , mais il est où mon fichier ? je veux mon fichier, et je ne le trouve pas ? que faut-il faire ?
Quand j'aurai mon fichier, je pourrai essayer les commandes pb
je ne sais pas si ce code fonctionnera, faut déjà que j'arrive à créer ce foutu test.db !
Code : Tout sélectionner
OpenDatabase(0,"test.db","","")
DatabaseQuery(0, "create table tbl1(one varchar(10), two smallint);")
DatabaseQuery(0, " insert into tbl1 values('hello!',10);")
Comment faites-vous ?
Publié : jeu. 07/févr./2008 22:12
par wolfjeremy
Bon tien voila des fonctions qui te seront util lol :
Un exemple de création d'une base de donnée :
CreateFile(0, "DataBase.db")
CloseFile(0)
UseSQLiteDatabase()
OpenDatabase(0, "DataBase.db", "", "")
DatabaseQuery(0, "CREATE DATABASE DataBase") ;Création de la base de donnée dans le fichier DataBase.db
;On créé une table MaTable, on y met les champs Champ1 en varchar (taille spécifié dans la parenthèse) et le champ de de type int.
DatabaseUpdate(0, "CREATE TABLE MaTable (Champ1 varchar(255), Champ2 int(5))")
;Maintenant on insère une entrée dans cette base de donnée, dans la table MaTable
DatabaseUpdate(0, "INSERT INTO MaTable (Champ1, Champ2) VALUES ('Texte dans le champ 1', 12345)")
;Puis on peut lire ce qui a dans la base de donnée
DatabaseQuery(0, "SELECT * FROM MaTable") ;Le * signifie que l'on prend toutes les entrée de la table, ici il y en a qu'une
NextDatabaseRow(0)
;Un petit debug pour te montré ce qu'il y a dans la table
Debug GetDatabaseString(0, 0)
Debug GetDatabaseLong(0, 1)
Je peux éventuellement te donné plus d'aide demain, si personne d'autre ne le fait

Publié : jeu. 07/févr./2008 22:18
par comtois
wolfjeremy a écrit :Bon tien voila des fonctions qui te seront util lol :
Un exemple de création d'une base de donnée :
C'était aussi simple que ça ? je n'y crois pas !
Merci beaucoup , je vais enfin pouvoir apprendre comment gérer une base de données
Encore merci, un nouveau monde s'ouvre à moi.
Publié : jeu. 07/févr./2008 22:18
par wolfjeremy
C'était aussi simple que ça ? je n'y crois pas !
Regarde un poile plus bas et tu vois que la procedure de création de la base de donnée continue

Mais oui c'était aussi simple que ça mdr
Il ma fallut un certain moment pour trouver cette astuce, au debut je passais par un utilitaire de création de bdd. Puis j'ai chipoter comme d'hab, et je me suis rendu compte que c'était mega simple lol
Publié : jeu. 07/févr./2008 22:23
par comtois
oui oui j'ai vu , mais ça j'avais compris, moi je cherchais une commande sqlite pour créer le fichier , alors qu'un simple createfile() suffit.
dans la doc sqlite c'est indiqué que pour créer une nouvelle base de données il faut faire sqlite3 MaBase.db , bon avec les commandes en ligne ça fonctionnait. et je m'attendais à retrouver le fichier MaBase.db sur mon disque dur.
Enfin grace à ton aide, je vais pouvoir continuer avec PureBasic cette fois ci

Je ne manquerai pas d'appeler au secours si je coince.
Publié : jeu. 07/févr./2008 22:28
par wolfjeremy
Oki amuse toi bien.
Fred a frappé un grand coup avec la lib intégrée.
Question
Publié : lun. 09/juin/2008 18:34
par coxco
Bonjour
je débute en purebasic, et j'aimerais savoir comment doit on créer sa
base sqlite pour que les accents soient pris en compte.
Merci
Publié : lun. 09/juin/2008 18:41
par wolfjeremy
Salut,
J'ai déjà eu des problèmes d'accent avec mysql, je n'ai jamais réussi à le régler, après de multiple ré-encodage de la table et réinstallation, rien a faire !
Par contre jamais eu de problème avec sqlite.
Je ne saurais pas t'aider désolé, j'espère que tu aura plus de chance que moi avec ma table mysql...