Utilisation de la lib interne pour les base de donnée

Sujets variés concernant le développement en PureBasic
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Utilisation de la lib interne pour les base de donnée

Message 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 :lol:

Merci pour votre aide.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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... :)
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message 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.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message 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
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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 :P je profite de relever mes emails et d'avoir ma clef usb avec purebasic pour te repondre ! hi hi !! :lol:
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Thyphoon a écrit : je suis pas chez moi lolll c'est pour ça :P je profite de relever mes emails et d'avoir ma clef usb avec purebasic pour te repondre ! hi hi !! :lol:
Ben merci de m'avoir aider alors que tu n'était pas chez toi !
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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 ?
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message 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 :wink:
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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 :

Code : Tout sélectionner

CreateFile(0, "DataBase.db")
CloseFile(0) 
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.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message 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 :wink:
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
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Oki amuse toi bien.

Fred a frappé un grand coup avec la lib intégrée.
coxco
Messages : 92
Inscription : ven. 06/juin/2008 16:04

Question

Message 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
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message 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...
Répondre