MYSQL Classes

muqaddarmuqaddar Administrateur
Auteur : Bru

Voici la dernière oeuvre de Maà®tre Bru. MYSQLClasses est un framework qui offre au programmeur utilisant l'environnement de développement Cocoa et le langage Objective-C une manière simple d'accéder au serveur de base de données MySql.
Fonctionnement de la ressource / documentation :

Même si la complexité de la gestion d'une connexion à  MySql et l'envoi de requêtes sont partiellement masqués, des connaissances dans le langage SQL sont tout de même requises afin de bien comprendre les mécanismes qui sont en jeu lorsque que vous procédez à  l'exécution d'une requête, et lorsque vous en récupérez le résultat.

Le framework fournit deux classes :
- MYSQLConnexion : cette classe permet d'établir une connexion au serveur MySql, puis offre plusieurs méthodes permettant l'envoi de requêtes Sql et la réception de données en se basant sur la programmation objet.
- MYSQLFunction : cette classe permet d'insérer des fonctions natives MySql au sein des requêtes envoyées via la précédente classe.

Certaines requêtes SQL génèrent un jeu de résultat. Le jeu de résultat est l'ensemble des lignes récupérées correspondant aux critères de sélection présents dans la requête. De manière générale, on peut dire que chaque ligne du jeu de résultat équivaut à  un enregistrement sélectionné. L'instruction SQL "select" génère toujours un jeu de résultat (même s'il est vide). D'autres instructions comme "show" peuvent aussi en générer.

Sous cocoa, un jeu de résultat est toujours stocké dans une instance NSArray, où chaque index du tableau correspond à  une ligne (ou un enregistrement) du jeu.

Les lignes du jeu de résultat sont ensuite divisées en colonnes qui correspondent aux champs qui ont été indiqués dans l'instruction select ou qui sont automatiquement produits (via l'instruction show). Le stockage des colonnes peut se faire de deux manières : soit dans une instance NSDictionary, soit dans une instance NSArray. Le choix de tel ou tel type d'objet se fait par le paramètre resultInDictionary présent dans les méthodes générant un jeu de résultat.

Vous trouverez une documentation html complète avec le fichier du framework téléchargé.
A vos requètes !

[Fichier joint supprimé par l'administrateur]

Réponses

  • ElectrobitchElectrobitch Membre
    03:33 modifié #2
    Bonjour.
    Désolé de upper le sujet mais est-il possible d'utiliser ce framework avec MAMP ?
    Merci d'avance de votre aide.
  • muqaddarmuqaddar Administrateur
    03:33 modifié #3
    dans 1244456536:

    Bonjour.
    Désolé de upper le sujet mais est-il possible d'utiliser ce framework avec MAMP ?
    Merci d'avance de votre aide.


    MySQLClasses est un framework qui fait le lien entre Cocoa et MySQL... donc qui permet d'attaquer une base MySQL en objective-C.

    Quel rapport avec MAMP ?
  • laudemalaudema Membre
    03:33 modifié #4

    MySQLClasses est un framework qui fait le lien entre Cocoa et MySQL... donc qui permet d'attaquer une base MySQL en objective-C.

    Quel rapport avec MAMP ?

    Mamp installe un petit serveur Apache MySQL PHP sur le mac, c'est l'équivalent de Lamp pour Linux. Pour s'initier à  php et SQL sans toucher aux entrailles de Mac OS (le numéro de port est différent de mémoire)..
    http://www.mamp.info/en/index.html
    Alors pourquoi pas ?
  • muqaddarmuqaddar Administrateur
    03:33 modifié #5
    dans 1244469752:


    MySQLClasses est un framework qui fait le lien entre Cocoa et MySQL... donc qui permet d'attaquer une base MySQL en objective-C.

    Quel rapport avec MAMP ?

    Mamp installe un petit serveur Apache MySQL PHP sur le mac, c'est l'équivalent de Lamp pour Linux. Pour s'initier à  php et SQL sans toucher aux entrailles de Mac OS (le numéro de port est différent de mémoire)..
    http://www.mamp.info/en/index.html
    Alors pourquoi pas ?


    Bein oui je sais ce que c'est MAMP... ;)
    Mais dans MAMP, ici, seul MySQL nous intéresse. Je suppose qu'il veut savoir si MySQL Classes arrive à  trouver le chemin d'une BDD géré par MAMP ?
  • ElectrobitchElectrobitch Membre
    03:33 modifié #6
    Oui, c'est ça :)

    Je voudrais juste pouvoir faire mes tests avec la BDD gérée par MAMP mais si vraiment c'est pas possible, j'essaierai d'installer PHP/MySQL manuellement mais bon... Flemmard jusqu'au bout ! ^^
  • muqaddarmuqaddar Administrateur
    03:33 modifié #7
    Voilà  ce que dit la doc :

    initConnexionToDatabase:host:user:password:<br />- (id)initConnexionToDatabase:(NSString *)database host:(NSString *)host user:(NSString *)user password:(NSString *)password<br />Initialise une nouvelle instance de la classe MYSQLConnexion créée par la méthode Alloc en établissant une connexion au serveur MySql dont l'adresse est spécifiée au paramètre host, en utilisant le profil utilisateur user et le mot de passe password. La connexion s'effectuera en utilisant database comme base de données par défaut.<br />Le paramètre database peut ne pas être spécifié en passant une chaà®ne vide (@&quot;&quot;) ou plus simplement nil.<br />Le paramètre host peut contenir un nom réseau d'un ordinateur situé sur le réseau local, une adresse IP, ou une url. Si le paramètre host est omis (@&quot;&quot; ou nil), la connexion tentera de se faire à  l'adresse " localhost ".<br />Les paramètres user et password peuvent être omis (@&quot;&quot; ou nil) si le serveur accepte ce type de connexion.<br /> <br />L'erreur de connexion (user/password invalide, host inconnu) peut être détectée par la méthode isConnected qui renvoie dans ce cas NO. Il est possible de récupérer le numéro et le message d'erreur respectivement par error et errString.
    


    Je ne connais pas les chemins employés par MAMP. Quel est l'adresse host ? Le port ?
    Il suffirait d'essayer... ;)
  • ElectrobitchElectrobitch Membre
    03:33 modifié #8
    Oui justement, j'ai essayé et j'obtiens ça :
    http://www.osx-dev.com/index.php?topic=3841.msg38415#msg38415

    Le fichier mysql.sock se trouve dans MAMP/tmp/.

    Sinon, voici la description rapide des dossiers de MAMP :
    1) /bin : contient les exécutables d'Apache, de PHP (4-5), de MySQL5 et de SQLite
    2) /conf : contient les fichiers de configuration d'Apache, de PHP (4-5) et de SQLiteManager
    3) /tmp : contient les fichiers temporaires créés par les exécutables
    4) /db : contient les bases de données MySQL5 et SQLite
    5) /logs : contient les fichiers de logs d'erreurs d'Apache, de PHP et de MySQL
    6) /htdocs : contient les fichiers que vous désirez tester. Ils se trouveront à  l'URL http://localhost:8889/
  • muqaddarmuqaddar Administrateur
    03:33 modifié #9
    T'as essayé de forcer le host vers une URL des bases de données sur ton mac ? L'URL du répertoire /db ?
  • ElectrobitchElectrobitch Membre
    juin 2009 modifié #10
    En faisant ça j'obtiens :
    MySQL error: 2005 - Unknown MySQL Server Host

    EDIT : je viens de trouver ça sur Google, j'y jetterai un oeil demain.
  • macmaniaquemacmaniaque Membre
    03:33 modifié #11
    Bonjour,

    J'ai utiliser il y a quelque temps cette méthode et j'ai utiliser MAMP aussi pour les tests (plus facile pour les tests).

    Cela fait bien longtemps j'ai plus trop souvenir des méthodes, mais ce qui est sur c'est qu'il faut que tu utilise la méthode ou tu spécifie un socket (vers celui de MAMP) et non un host, car par défaut ton appli va chercher le mysql qui se trouve intégrer dans ton système et pas celui de MAMP.

  • iLandesiLandes Membre
    03:33 modifié #12
    Bonjour,

    Tout d'abord je me présente :  :fouf):

    Je développe avec RealBasic ; php (joomla, mediawiki, PhpNuke). Actuellement je me mets à  la programmation avec XCode.

    Je débute en cocoa et en programmation objet et je lis actuellement le livre de Aaron Hillegas "Programmation Cocoa sous Mac OS X". Ce qui m'a permis de bien progresser.

    J'ai téléchargé MYSQL Classes mais je bloque car dans la documentation il n'y a pas d'exemple de connexion.
    :why?:


    Vous est il possible de me faire un exemple simple de connexion en ligne de commande dans ce genre :

    1) Connexion au serveur

    host = @sql.serveur.net
    user = @xcodeuser
    password = @steve

    2) Message de connexion
    Si tout va bien
    NSLog (@Connexion établie)
    Sinon
    NSLog (@Erreur numéro %d rencontrée à  la connexion, erreur)

    3) Execution d'une requette SQL simple

    "select name from employe"

    name est de type Char = NSString

    Si tout va bien

    for (i = 0 ; i < 10 ; i++)
    {
    NSString employeName = [?? ??]
    NSLog (@Employé numéro %d %@", i, employeName)
    }

    Sinon
    NSLog (@Erreur numéro %d rencontrée lors de la requête, erreur)


    D'avance merci de votre aide

    Cordialement
    seb@astien
  • CeetixCeetix Membre
    03:33 modifié #13
    Je up ce post car j'aimerai aussi me connecter à  une BDD qui est en ligne mais est-ce que c'est possible ? (sur l'iphone)
  • CéroceCéroce Membre, Modérateur
    03:33 modifié #14
    dans 1256742448:

    Je up ce post car j'aimerai aussi me connecter à  une BDD qui est en ligne mais est-ce que c'est possible ?

    Pas toujours. Par exemple, mon serveur web (mutualisé) est configuré pour refuser toute connexion à  la BdD qui n'émane pas de lui-même, pour des raisons de sécurité et de confidentialité.
  • CeetixCeetix Membre
    03:33 modifié #15
    Et si c'est autorisé, quel serait le code pour pouvoir se connecter?
  • wiskywisky Membre
    03:33 modifié #16
    Je viens de faire un petit test. Je voulait réaliser un exemple de connexion avec le frameworks. Seulement voilà  il ne veux pas compiler.
    y a t-il une nouvelle version du frameworks ?
  • AliGatorAliGator Membre, Modérateur
    03:33 modifié #17
    Tu as rajouté le framework dans le projet, pour qu'il link avec ce dernier à  la compilation ?
  • CeetixCeetix Membre
    03:33 modifié #18
    J'espère que Wisky a pu résoudre son problème... Wisky nous entends-tu ? :)
  • wiskywisky Membre
    03:33 modifié #19
    Oui, je vous entends !
    Le problème n'est pas résolu.
    J'ai bien ajouté le frameworks pour le link ainsi que dans un nouvelle phase de build...
    Mais là  je trouve pas... ça vous dit rien cette erreur ?
  • CeetixCeetix Membre
    03:33 modifié #20
    Arf merdouille. Bah moi non ça me dit rien du tout :(
Connectez-vous ou Inscrivez-vous pour répondre.