Page 2 sur 2
Publié : ven. 14/juil./2006 12:51
par gansta93
Merci de ton aide.

Je ne sais pas si c'est moi, mais je ne trouve pas beaucoup d'exemple de codes sur le forum qui utilisent la lib DataBase de Pure... si ce n'est pas moi qui suis pas doué, c domage... mais merci encore.

Publié : ven. 14/juil./2006 13:14
par Flype
c'est vrai que ya pas bcp d'examples sur le forum mais ca se comprends, c'est pas trop distribuable un source qui fait appel aux bdd, puisque peu de personnes pourront le tester : installation, configuration de la bdd, création des tables, pfff, faut vraiment etre motivé

Publié : ven. 14/juil./2006 13:16
par gansta93
Flype a écrit :c'est vrai que ya pas bcp d'examples sur le forum mais ca se comprends, c'est pas trop distribuable un source qui fait appel aux bdd, puisque peu de personnes pourront le tester : installation, configuration de la bdd, création des tables, pfff, faut vraiment etre motivé

C'est pour ça que ça serait bien que PureBasic le gère...
Publié : ven. 14/juil./2006 13:16
par lionel_om
Il m'intéresse ton code Flype, car pour me connecter à une BD Access j'avais un code beaucoup plus long et avec des OpenLibrary()...
J'v matter ca de près

Publié : ven. 14/juil./2006 19:43
par KarLKoX
gansta93 a écrit :KarLKoX a écrit :Perso, étant pas du tout orienté sgbd, je me sert d'EasyPHP qui permet de crééer rapidement une base de donnée sans trop de difficulté même pour un néophyte comme moi

Mais après, comment utiliser cette BDD avec Pure appart en appelant une page PHP qui transmet les information qui sont ensuite réinterprétées par le programme ?
A coup de ImportC et de libmysql.lib

Publié : lun. 14/août/2006 16:45
par Okaryn
Flype a écrit :c'est vrai que ya pas bcp d'examples sur le forum mais ca se comprends, c'est pas trop distribuable un source qui fait appel aux bdd, puisque peu de personnes pourront le tester : installation, configuration de la bdd, création des tables, pfff, faut vraiment etre motivé

Il n'est pas nécessaire d'utiliser de gros SGBD pour maniupuler des tables. Un programme avec une base de type Access, DBase, etc... peut très bien être distribué sans que l'utilisateur ai besoin de faire une installation ou un paramétrage.
Avec les API Windows il n'est même pas nécessaire d'utiliser les alias ODBC, on peut ouvrir une base avec son nom.
Après, tout dépend de ce que l'on veut faire avec le programme. Si c'est pour gérer une quelques tables ou bien des 100aines avec des milliers d'enregistrements...
Publié : ven. 25/août/2006 15:21
par fd
Je vous propose ma façon de faire (création lien ODBC) / suppression. Et utilisation SQL sur une base access. J'ai écrit ces lignes à partir de divers exemple sur les forums et je les utilise depuis un an sans problème.
Code : Tout sélectionner
#ODBC_ADD_DSN = 1 ; Add Data source
#ODBC_CONFIG_DSN = 2 ; Configure (edit) Data source
#ODBC_REMOVE_DSN = 3 ; Remove Data source
;- Gadget Constants
;
Enumeration
#ODBC_0
EndEnumeration
;- Fct - Connexion à la BD
Procedure MakeConnection(Driver.s,strAttributes.s)
Result=OpenLibrary(#ODBC_0,"ODBCCP32.DLL")
If Result
lpszDriver.s=Driver
MyMemory=AllocateMemory(Len(strAttributes))
CopyMemory(@strAttributes,MyMemory,Len(strAttributes))
For L=1 To Len(strAttributes )
If PeekB(MyMemory +l-1)=Asc(";"):PokeB(MyMemory +l-1,0): EndIf
Next L
Result = CallFunction(#ODBC_0, "SQLConfigDataSource", 0,#ODBC_ADD_DSN,lpszDriver.s,MyMemory )
NewResult=SQLConfigDataSource_(0,#ODBC_ADD_DSN,lpszDriver.s,MyMemory )
FreeMemory(#ODBC_0)
CloseLibrary(#ODBC_0)
If Result
ProcedureReturn 1
EndIf
EndIf
EndProcedure
;- Fct - Fermeture de laconnexion
Procedure DeleteConnection(Driver.s,DSN.s)
Result=OpenLibrary(#ODBC_0,"ODBCCP32.DLL")
If Result
lpszDriver.s=Driver
strAttributes.s = "DSN="+DSN
Result = CallFunction(#ODBC_0, "SQLConfigDataSource", 0,#ODBC_REMOVE_DSN,lpszDriver.s,strAttributes )
CloseLibrary(#ODBC_0)
If Result
ProcedureReturn 1;MessageRequester("Info","DSN Delete",0)
EndIf
EndIf
EndProcedure
;- Création DNS dans ODBC
Result=Makeconnection("Microsoft Access Driver (*.mdb)","Server=SomeServer; Description=Description For Purebasic MDB-ODBC;DSN=PureBasic_DSN;DBQ="+DbPlan+"\Base.mdb;UID='';PWD='';")
If InitDatabase() = 0
MessageRequester("Erreur", "Initialisation ODBC impossible !", 0)
End
EndIf
;- Utilisation de la base de données en SELECT
Procedure Login()
If OpenDatabase(#Data_0, "PureBasic_DSN", "","")
If DatabaseQuery(#Data_0,"SELECT * FROM Login WHERE Code='"+User+"'")
If NextDatabaseRow(#Data_0)
Nom.s = GetDatabaseString(#Data_0,1)
Pre.s = GetDatabaseString(#Data_0,2)
StatusBarText(#StatutBar_0, 0, "Bonjour "+ Pre + " " + Nom)
EndIf
EndIf
CloseDatabase(#Data_0)
EndIf
EndProcedure
;- Utilisation de la base de données en DELETE / INSERT
Procedure Ecrit()
If OpenDatabase(#Dat_00201, "PureBasic_DSN", "","")
DatabaseQuery(#Dat_00201,"DELETE * FROM Test WHERE Code = '"+User+"'")
DatabaseQuery(#Dat_00201,"INSERT INTO Test([code],[Debut],[Fin]) VALUES ('" + User + "','" + Debut + "','" + Fin + "')")
CloseDatabase(#Data_0)
EndIf
EndProcedure
;- Suppression connection DNS dans ODBC : à ajouter à la fermeture de l'application
Result=Makeconnection("Microsoft Access Driver (*.mdb)","PureBasic_DSN")
Publié : sam. 26/août/2006 10:10
par Flype
ou alors dans le meme esprit - on en parlait le mois dernier :
http://purebasic.forum-gratuit.com/view ... c&start=60
Code : Tout sélectionner
; flype, juil 2006
Enumeration 1
#ODBC_ADD_DSN ; Ajoute une source de données utilisateur.
#ODBC_CONFIG_DSN ; Configure/Modifie une source de données utilisateur existante.
#ODBC_REMOVE_DSN ; Supprime une source de données utilisateur existante.
#ODBC_ADD_SYS_DSN ; Ajoute une source de données système.
#ODBC_CONFIG_SYS_DSN ; Configure/Modifie une source de données système existante.
#ODBC_REMOVE_SYS_DSN ; Supprime une source de données système existante.
#ODBC_REMOVE_DEFAULT_DSN ; Supprime la source de données définies par défaut.
EndEnumeration
#ODBC_DRIVER_MSACCESS = "Microsoft Access Driver (*.mdb)"
Procedure.l MSAccess_AddConnection(name.s, database.s, hwnd.l = #Null)
Protected attrs.s
attrs + "UID=" + ";"
attrs + "PWD=" + ";"
attrs + "DSN=" + name + ";"
attrs + "DBQ=" + database + ";"
attrs + "FIL=" + "MS Access;"
attrs + "Driver=" + "ODBCJT32.DLL;"
attrs + "DefaultDir=" + GetPathPart(database) + ";"
attrs + "Description=" + FormatDate("Créé le %dd-%mm-%yyyy, %hh:%ii:%ss;", Date())
ReplaceString(attrs, ";", #NULL$, 2)
ProcedureReturn SQLConfigDataSource_(hWnd, #ODBC_ADD_DSN, #ODBC_DRIVER_MSACCESS, attrs)
EndProcedure
Procedure.l MSAccess_RemoveConnection(name.s, hwnd.l = #Null)
ProcedureReturn SQLConfigDataSource_(hWnd, #ODBC_REMOVE_DSN, #ODBC_DRIVER_MSACCESS, "DSN="+name)
EndProcedure
If InitDatabase()
DSN.s = "pbtest"
If MSAccess_AddConnection(DSN, "c:\test.mdb")
If OpenDatabase(0, DSN, "", "")
If DatabaseQuery(0, "SELECT NOW")
If NextDatabaseRow(0)
Debug GetDatabaseString(0, 0)
EndIf
EndIf
If DatabaseQuery(0, "SELECT * FROM personne")
While NextDatabaseRow(0)
Debug GetDatabaseString(0, 0)
Debug GetDatabaseString(0, 1)
Debug GetDatabaseString(0, 2)
Wend
EndIf
EndIf
MSAccess_RemoveConnection(DSN)
EndIf
EndIf