Page 1 sur 2
A quand un accès aux BDD
Publié : sam. 09/juil./2005 15:01
par Lukky
Comme je ne m'intéresse pas aux fonction graphiques de Pure, y'a-t-il une chance qu'un accès à une base de donnée même légère, même propriétaire voit le jour ?
Il serait sympa de pouvoir faire une petite applic de n° de téléphone, ou de recettes de cuisine sans utiliser des techniques remontant à l'age de la pierre genre fichiers texte ou des contortions paranormales avec des libs bizaroïdes.
J'ai bien trouvé des trucs mais payant et même très chers.
JL
Publié : sam. 09/juil./2005 15:07
par Dr. Dri
Y'a bien une lib Database pour passer par ODBC nan ?
ca permet pas l'accès à une BDD ?
Dri
Gestion des Databases
Publié : sam. 09/juil./2005 17:59
par Cagou-77
Salut
si tu veut gérer des base de données avec PureBasic
je te conseil une librairie Cheetab2.dll qui gère les fichiers . dbf
pour l'utiliser depuis plus de trois mois je peut te dire que
c'est super et pas trés cher
ci-joint le lien
http://www.planetsquires.com/forums/
http://www.planetsquires.com/
Publié : sam. 09/juil./2005 18:11
par Lukky
Je suis pas un fan d'odbc, je vais tester Cheeta si j'arrive à l'attraper.
Merci pour le lien
JL
Re: Gestion des Databases
Publié : mar. 23/août/2005 9:24
par Thyphoon
Est ce que tu aurais l'include version purebasic pour utiliser les fonctions de la dll ?
Re: Gestion des Databases
Publié : mar. 23/août/2005 9:30
par Patrick88
Thyphoon a écrit :
Est ce que tu aurais l'include version purebasic pour utiliser les fonctions de la dll ?
regarde bien sur la page
http://www.planetsquires.com/cheetah.htm
...
Wrapper for PureBasic developed by Stefan Schnell and distributed here with his permission. (not supported)
* PureBasic Cheetah wrapper (Cheetah2PureBASIC.zip 12K)
Another PureBasic wrapper developed by Bob Houle and distributed here with his permission (not supported). The zip file contains a PureBasic translation of the PowerBASIC samples that come with Cheetah.
* PureBasic Cheetah wrapper (PureBasicStarter.zip 43K)
pat
Publié : mar. 23/août/2005 11:39
par lionel_om
Moi j'utilise ODBC, ça marche nikel et c'est super rapide (normal...)
Voici un code de démo (pas besoin de rechercher ODBCCP32.DLL, elle est incluse dans window)
Code : Tout sélectionner
File$ = "C:\bd1.mdb"
#ODBC_ADD_DSN = 1 ; Add Data source
#ODBC_CONFIG_DSN = 2 ; Configure (edit) Data source
#ODBC_REMOVE_DSN = 3 ; Remove Data source
;- Fct - Connexion à la BD
Procedure MakeConnection(Driver.s,strAttributes.s)
Result=OpenLibrary(1,"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(1, "SQLConfigDataSource", 0,#ODBC_ADD_DSN,lpszDriver.s,MyMemory )
NewResult=SQLConfigDataSource_(0,#ODBC_ADD_DSN,lpszDriver.s,MyMemory )
FreeMemory(1)
CloseLibrary(1)
If Result
ProcedureReturn 1
EndIf
EndIf
EndProcedure
;- Fct - Fermeture de laconnexion
Procedure DeleteConnection(Driver.s,DSN.s)
Result=OpenLibrary(1,"ODBCCP32.DLL")
If Result
lpszDriver.s=Driver
strAttributes.s = "DSN="+DSN
Result = CallFunction(1, "SQLConfigDataSource", 0,#ODBC_REMOVE_DSN,lpszDriver.s,strAttributes )
CloseLibrary(1)
If Result
ProcedureReturn 1;MessageRequester("Info","DSN Delete",0)
EndIf
EndIf
EndProcedure
MeinPointer.l
Procedure GetDBHandle()
Shared MeinPointer.l
!EXTRN _PB_DataBase_CurrentObject;_PB_DataBase_CurrentObject
!MOV dword EAX,[_PB_DataBase_CurrentObject]
!MOV dword [v_MeinPointer], EAX
ProcedureReturn MeinPointer
EndProcedure
If File$ ="" : End : EndIf
;- On regarde l extension pour avoir la ligne de commande
EXT.s=UCase(GetExtensionPart(File$))
Select EXT
Case "MDB"
Result=Makeconnection("Microsoft Access Driver (*.mdb)","Server=SomeServer; Description=Description For Purebasic MDB-ODBC;DSN=PureBasic_DSN;DBQ="+file$+";UID=Rings;PWD=Siggi;")
Case "XLS"
Result=Makeconnection("Microsoft Excel Driver (*.xls)","DSN=PureBasic_DSN;Description=Description For Purebasic Excel;FileType=Excel97;DBQ="+File$+";")
EndSelect
;- Initialisation des fct de BD
If InitDatabase() = 0
MessageRequester("Error", "Can't initialize Database (ODBC v3 or better) environment", 0)
End
EndIf
OpenConsole()
Dim DatabaseType.s(4)
DatabaseType(0) = "Unknown"
DatabaseType(1) = "Numeric"
DatabaseType(2) = "String"
DatabaseType(3) = "Float"
; Open an ODBC database
User$=""
Password$=""
#Database=1
If OpenDatabase(#Database, "PureBasic_DSN", User$, Password$)
PrintN("")
PrintN("Database successfully opened !")
PrintN("Type EXIT to quit.")
PrintN("or anything else to browse database")
Repeat
Command$ = Input()
Select UCase(Command$)
Case "EXIT"
Quit = 1
Default
If DatabaseQuery(Command$)
NbColumns = DatabaseColumns()
PrintN("NbColums: " + Str(NbColumns))
For k=0 To NbColumns-1
PrintN(DatabaseColumnName(k) + " - " + DatabaseType(DatabaseColumnType(k)))
Next
PrintN("")
Print ("Press return to continue") : Input()
PrintN("")
PrintN("Query Result -------------------------------------")
While NextDatabaseRow()
For k=0 To NbColumns-2
Print(GetDatabaseString(k) + " - ")
Next
PrintN(GetDatabaseString(NbColumns-1))
PrintN("--------------------------------------------------")
Else
PrintN("Bad Query !")
EndIf
EndSelect
Until Quit = 1
Else
MessageRequester("Info", "Operation canceled", 0)
EndIf
;- Deconnexion à la BD
DeleteConnection("Microsoft Access Driver (*.mdb)","PureBasic_DSN")
Publié : mar. 23/août/2005 12:25
par poshu
Moi, je me connecte à ma base SQL avec libmysql.dll ca speed et c'est stable.
Publié : mar. 23/août/2005 13:11
par lionel_om
@Pushu : y'as ttes les fcts SQL où c'est une petite LIB faite par un utilisateur lambda ?
Publié : mar. 23/août/2005 13:46
par cha0s
lionel_om a écrit :@Pushu : y'as ttes les fcts SQL où c'est une petite LIB faite par un utilisateur lambda ?
elle est diponible sur le site officiel de MySQL donc ya tout
Re: Gestion des Databases
Publié : mar. 23/août/2005 20:43
par Thyphoon
A oui merci j'avais pas vu ... enfin je sais pas lire car ça m'a crevé les yeux
apres test j'utilise finalement la MDB_Lib trouvé sur purearea.net y a pas plus simple et on peu utilisé le language SQL classique ! et se connecté a une base mysql directement
http://www.reelmedia.org/cgi-bin/PurePr ... es&sub=ASM
Publié : mer. 24/août/2005 9:51
par lionel_om
@cha0s : Tu utilise quoi pour créer ta BD ?
Car moi j'utilisé juste EasyPHP, donc je sais pas si ce genre de BD est supportée, ou si c'est des BD SQL serveur 2003 ou autres ...
Publié : mer. 24/août/2005 10:15
par Thyphoon
actuellement je créer ma base avec la commande MDB_create("chemin /non de la base")
mais tu dois pouvoire te connecter a la base mysql de easyphp avec la commande SQL_Connect("localhost","base","login",pass") ou un truc comme ça faut regarder la doc de MDB_Lib

Publié : mer. 24/août/2005 13:12
par lionel_om
Mais ça c'est pour se connecter à une BD ACCESS, pas SQL...
Pour ACCESS j'ai déjà (la LIB doit sans doute être basée sur le code que j'ai posté ci-dessus).
Je voulais savoir pour les Bases SQL car ce qui est relou en ACCESS c'est les champs texte : on doit définir la longueur. Ya pas de champ TEXT de MySql (longueur infinie)...
Si qq1 à une soluce...
Publié : mer. 24/août/2005 13:39
par Thyphoon
Pourtant dans la doc pour la commande SQL_Connect il y a marqué
Creates an ODBC/DNS connection with the specified mySQL database.
Je suis d'accord avec toi les base access c'est tres moyen. Et il me semble aussi que ça ne comprend pas la commande limit très utile quand même