Page 2 sur 2

Re: mysql & PB

Publié : jeu. 01/août/2013 16:27
par falsam
je dois modifier le code de cette manière ?

Code : Tout sélectionner

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Windows
    Import "libmysql.lib"
  CompilerCase #PB_OS_Linux
    Import "/usr/lib/libmysqlclient.so/libmysqlclient.so"
  CompilerCase #PB_OS_MacOS
    Import "libmysqlclient.so"
  CompilerCase #PB_OS_AmigaOS
    Import = "mysqlclient.library"
CompilerEndSelect
Si oui tu as bien la version du serveur MySql ?

Re: mysql & PB

Publié : jeu. 01/août/2013 16:32
par doudouvs
Ta vu mon message privé

J'ai mis ça :

Code : Tout sélectionner

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Windows
    Import "libmysql.lib"
  CompilerCase #PB_OS_Linux
    Import "/usr/lib/libmysqlclient.so"
  CompilerCase #PB_OS_MacOS
    Import "libmysqlclient.so"
  CompilerCase #PB_OS_AmigaOS
    Import = "mysqlclient.library"
CompilerEndSelect
C'est pour la debian après les autres peut être que le chemin change

Re: mysql & PB

Publié : jeu. 01/août/2013 16:43
par falsam
Oops j'avais pas vu ton message MP. :oops:

La base de données distante te permet ainsi qu'aux autres de faire des tests avec les codes que je poste. Reset de la base à Minuit. Si tu crées des tables alors précédent les des 3 premières lettres de ton speudo suivi d'un underline. Par exemple : dou_users

libmysqlclient.so est un connector générique qui je pense fonctionne avec les autres distributions de Linux.

Re: mysql & PB

Publié : jeu. 01/août/2013 18:24
par falsam
doudouvs a écrit :Par contre pour SELECT Je n'arrive pas à repuc le resultat
Comment je récupère le contenu de la requête ?
Dans ma base de test hébergé j'ai inséré une table contacts structurée de la façon suivante.

Code : Tout sélectionner

  SqlQuery = "CREATE TABLE contacts ("
  SqlQuery + "iduser INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY," ;Clé autoincrémentée
  SqlQuery + "contact TEXT," ;Nom contact
  SqlQuery + "telephone TEXT," ;Téléphone
  SqlQuery + "compte TEXT," ;Compte
  SqlQuery + "montant INTEGER," ;Montant
  SqlQuery + "mois INTEGER" ;Mois
  SqlQuery + ");"
Tu peux tester le petit code suivant qui fait un select de cette table et affiche le résultat.

Code : Tout sélectionner

;Lister le contenu d'une table MySQL

EnableExplicit

IncludeFile "libmysql.pbi"

Global SqlHost.s, SqlUser.s, SqlPassWord.s, SqlDatabase.s, SqlPort 
Global SqlHandle.l, SqlQuery.s, SqlQueryResult.l, SqlRowCount.l, SqlColCount.l, Row.i, Col.i

;Initialisation de l'environnement MySQL
SqlHandle=MySqlInit()

;Initialisation des paramétres de connexion
SqlHost="s483331096.onlinehome.fr"
SqlUser="U1301"
SqlPassWord="falsam"
SqlDatabase="BD1301"
SqlPort=0

;Connection à la base de données 
If MySqlConnect(SqlHandle, SqlHost, SqlUser, SqlPassWord, SqlDatabase, SqlPort) 
  
    ;Sélection de toutes les colonnes d'une table
    SqlQuery="Select contact, compte, montant, mois from contacts"    
    SqlQueryResult=MySqlQuery(Sqlhandle, SqlQuery)
    
    ;Le résultat de la requete est composé d'un tableau 
    If SqlQueryResult<>0 
      ;Nombre de lignes dans le résultat de la requete
      SqlRowCount = MySqlGetRowCount(SqlQueryResult)
  
      ;Nombre de colonnes dans le résultat de la requete
      SqlColCount.l=MySqlGetColCount(SqlQueryResult)
      
      ;Affichons le résultat
      For Row=0 To SqlRowCount-1
        Debug ""
        Debug "Ligne : "+Str(Row)
        
        ;Lecture de la prochaine ligne du résultat de la requete
        MySqlNextQueryRow(SqlQueryResult)
        
        ;Pour chaque ligne, lecture de chque colonne
        For Col=0 To SqlColCount-1
          Debug MySqlNextQueryCol(Col, #PB_Ascii)
        Next
      Next
      Debug " "
    EndIf
    
    ;Libère la mémoire utilisée par un jeu de résultats. 
    MySqlQueryFree(SqlQueryResult)
    
Else
  Debug "Erreur d'acces"
EndIf

;Fermeture de la connexion MySql
MySqlClose(SqlHandle)

Re: mysql & PB

Publié : jeu. 01/août/2013 22:11
par doudouvs
libmysqlclient.so est un connector générique qui je pense fonctionne avec les autres distributions de Linux.
pas sur que ce soit dans le /usr/lib/ je me souviens il y a longtemps une redhat m'avais causer certains soucis

attend avant de faire des requêtes pour l'instant chez nunux j'ai une erreur
quand je compile dans libmysql.pbi ligne 91 "Accès mémoire invalide."
A purée comment tu fait "doudouvs a écrit:"

Re: mysql & PB

Publié : lun. 05/août/2013 8:28
par doudouvs
@falsam

Quand je compile, J'ai une erreur accès mémoire invalide que je n'arrive pas a résoudre à la ligne 95 sur "ProcedureReturn Result"

Code : Tout sélectionner

ProcedureDLL MySqlInit() 
  Result=mysql_init(#Null)
ProcedureReturn Result
EndProcedure

Re: mysql & PB

Publié : lun. 05/août/2013 8:31
par falsam
je viens de tester sur sous windows et je n'ai pas de souci. N'ayant pas linux je ne peux pas voir ce qui cloche.


Sur le forum anglais il y a un wrapper sql cross-platform.
http://www.purebasic.fr/english/viewtop ... 40#p216740

Re: mysql & PB

Publié : lun. 05/août/2013 8:43
par Fred
Essaie d'utiliser "ProcedureCDLL"

Re: mysql & PB

Publié : lun. 05/août/2013 8:49
par doudouvs
Oui je sais, par contre tu vois pas comment debuger ? si je fait un debug de Result il me donne un chiffre à 9 caractères.

@Fred avec ProcedureCDLL même punition

Re: mysql & PB

Publié : lun. 05/août/2013 9:13
par doudouvs
Arfff j'ai trouver merci @Fred de m'avoir mis sur la voie, je chercher depuis hier.
J'ai remplacer

Code : Tout sélectionner

Import "/usr/lib/libmysqlclient.so"
Par :

Code : Tout sélectionner

ImportC "/usr/lib/libmysqlclient.so"
Résultat : " Vous êtes connecté. Version MySql 5.1.66" :D

Re: mysql & PB

Publié : lun. 05/août/2013 9:52
par falsam
doudouvs a écrit :Arfff j'ai trouver merci @Fred de m'avoir mis sur la voie, je chercher depuis hier.
J'ai remplacer

Code : Tout sélectionner

Import "/usr/lib/libmysqlclient.so"
Par :

Code : Tout sélectionner

ImportC "/usr/lib/libmysqlclient.so"
Résultat : " Vous êtes connecté. Version MySql 5.1.66" :D
J'en profite pour mettre à jour mon wrapper.:)