A quand un accès aux BDD

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Lukky
Messages : 340
Inscription : dim. 25/janv./2004 12:22
Localisation : Morbihan

A quand un accès aux BDD

Message 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
Quand on me gonfle trop j'éclate, sinon ça va !
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Y'a bien une lib Database pour passer par ODBC nan ?
ca permet pas l'accès à une BDD ?

Dri
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Gestion des Databases

Message 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/
Lukky
Messages : 340
Inscription : dim. 25/janv./2004 12:22
Localisation : Morbihan

Message par Lukky »

Je suis pas un fan d'odbc, je vais tester Cheeta si j'arrive à l'attraper.

Merci pour le lien

JL
Quand on me gonfle trop j'éclate, sinon ça va !
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Gestion des Databases

Message par Thyphoon »

Cagou-77 a écrit :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/
Est ce que tu aurais l'include version purebasic pour utiliser les fonctions de la dll ?
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Gestion des Databases

Message par Patrick88 »

Thyphoon a écrit :
Cagou-77 a écrit :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/
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
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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") 
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

Moi, je me connecte à ma base SQL avec libmysql.dll ca speed et c'est stable.
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

@Pushu : y'as ttes les fcts SQL où c'est une petite LIB faite par un utilisateur lambda ?
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

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

Re: Gestion des Databases

Message par Thyphoon »

Patrick88 a écrit :
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)
A oui merci j'avais pas vu ... enfin je sais pas lire car ça m'a crevé les yeux :roll:

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
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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 ...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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 :P
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

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