Utilisation de MySQL dans Cocoa
uocram
Membre
N'en ayant pas trouvé sur le net, voici un tutoriel pour débutants, permettant de découvrir les bases de l'utilisation de l'API C de MySQL dans une application Cocoa.
Cet article évoque :
Pour ceux que cela intéresse : http://ressources.mediabox.fr/tutoriaux/apple/xcode/mysql
Cet article évoque :
- l'installation de MySQL
- Tester l'installation de MySQL
- Le paramétrage dans XCode
- Quelques appels de fonctions de l'API C de MySQL
Pour ceux que cela intéresse : http://ressources.mediabox.fr/tutoriaux/apple/xcode/mysql
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Simple mais efficace pour un debutant comme moi.
Cependant je voulais savoir si le pack SQL que tu charges pour Cocoa au debut de ton Tuto est le meme que je dois charger pour une base SQL avec l'Iphone ?
J'ai un jeu simple pour apprendre un langage aux personne qui le souhaite. J'ai 50 mots en francais et 50 mots en allemand + 50 fichiers audio en Francais et 50 fichiers audios en Alemand. Dois je utiliser une Base de donnees comme SQL ou dois simplement declarer des variaibles (4 x 50 soit 200) dans mon programme et aller les chercher a chaque fois que le jeu avance ou que l'utilisateur le demande ?
Merci pour vos reponses
Christophe
Merci pour ce tutau. C'est un bon début pour moi. Je ne m'y était jamais vraiment mis !
Petite question : La librairie est inclue dans le programme à la compilation ou elle n'est que lié ? Faut-il installer la librairie sur le poste de l'utilisateur final ?
Les libraries sont linkées dans XCode.
L'appli en Cocoa ne fait qu'interroger ce serveur et afficher les données retournées par le serveur (au même titre que le Terminal ou php peuvent le faire).
C'est la situation la plus simple pour découvrir MySQL API C utilisées par Cocoa
Cela complique un peu la tâche de la diffusion si on l'intègre dans un projet.
Je tente pour la 40ème fois environ de me mettre à xCode, et avec un tuto liant xCode à MySQL (je suis développeur web, à l'ancienne école, ceux qui savent de quoi ils parlent... en général ), je me lance, vérifi que mon mysql local est bien tout comme il faut, mais au milieu du tuto, après les réglages de base, et juste au premier test dans la console, paff!, une erreur...
J'en appelle à vos neurones, et quelques pistes...
Je suis avec xCode 4 maintenant, mais j'avais testé avec le 3.2.3 (ou .5 ?) avec la même erreur.
Mon MacPro tourne sous SnowLeopard et j'arrive bien à attaquer MySQL directement via le terminal.
Merci à vous !
Le message indique clairement qu'il n'a pas su charger la librairie libmysqlclient.16.dylib.
D'où la première question (et à mon niveau probablement la seule) qui me vienne à l'esprit: comment l'as tu incorporé à ton projet ?
Ensuite je n'ai pas trop d'idées, je ne connaissais même pas l'existence de ce dossier : Developer/Xcode/DerivedData dans mon répertoire personnel et à voir les dossiers qui sont dedans ça concerne seulement les applis que j'ai en cours de debuggage (celles où j'ai mis des points d'arrêt).
Si tu as bien importé ton framework/library dans ton projet (clic droit sur l'icône du dossier Frameworks dans la colonne de gauche de ton projet Add>Existing Files | Frameworks) tu le retrouveras dans la fenêtre des informations sur ta cible (à l'intérieur du dossier Targets, sélectionne ton appli puis commande -I ou clic droit encore) onglet "Général".
Si seulement tu retrouves tout ça sur Xcode 4 que je ne connais pas
Si rien de ça ne fonctionne regardes sur Google si d'autres ont eu le même problème avec cette librairie.
hth
PS: il est requis aux nouveaux arrivants d'aller se présenter sur le forum Présentation des membres s'ils le veulent bien. D'aucuns aimeraient une tournée générale de Perrier citron mais ça n'est pas une obligation (tout le monde n'est pas fada du Perrier citron
Sélectionne le projet (colonne de gauche)
Sélectionne TARGETS
Dans Build Settings (pour Debug et Release à chaque fois) :
1- Dans Other Linker Flags :
-lmysqlclient -lm -lz
2- Dans Header Search Paths :
/usr/local/mysql/include
3- Dans Library Search Paths :
/usr/local/mysql/lib
Dans ton projet, dans l'entête tu importes :
#import <mysql.h>
L'autocompletion pour les librairies mysql fonctionnent déjà à ce niveau là .
Ensuite Go!
J'ai le même problème depuis des semaines. J'ai essayer de réinstaller plusieurs fois, de downgrader mysql mais sans succès. Un ami développeur utilise lui une ancienne version de mysql et la tuto fonctionne très bien.
J'ai fais aussi plusieurs recherchent sur internet et impossible de trouver une solution. D'autres personnes ont le même problème mais le plus souvent c'est pour du ruby on rails.
Si quelqu'un à une solution je suis preneur !
Merci
sur Snow Leopard.
C'est OK avec Xcode4
Merci
il existe des lib offrant des API objective-c pour MySQL
ObjC_mysql
mysql-cocoa cette dernière est référencé dans la doc de MySQL
A+JYT
Toujours pas de solution trouvée pour notre soucis ?
Merci
bonjour donc moi c'est Aurelien ou Moonf je suis encore étudiant aprés un BTS en informatique un DUT sur un an toujours dans le développement aujourd'hui en stage je m'attaque a iphone/ipad j'ai pas mal avancé grasse a vous entre-autres mais sur ce tuto un blocage ce pose a moi ...
dans le tuto il parle du fichier "default_socket" a modifier mais pour le modifier il me faudrait le trouver .. si vous pouviez m'indiquer son emplacement ça pourrait m'aider je pense.
merci d'avance
edit: es ce que cette API serait utilisable pour iOS sinon une idée de ce qui pourrait la remplacer a part sqlite ? merci encore
Et dans ce fichier tu modifies comme suggéré dans le tuto.
Cela renseigne le chemin du socket pour cette version
Snow Leopard de mysql.
Tu peux faire ça avec un éditeur du terminal ou avec
TexEdit en texte simple.
Il faut les droits administrateur pour modifier ce genre de fichier.
Le Plus simple étant de copier php.ini.defaults sur le bureau, de le renommer, de le modifier comme prévu, puis de le glisser dans
/etc en authentifiant.
Bonne chance !
Et encore plus cool, c'est CoreData (basé sur SQLITE)
mais avec une grosse partie du travail préparée par Apple.
Cela dit rien empêche d'interroger une base MySQL avec un iPhone.
pour le SQLite il me semble qu'il s'agit d'une bdd intégré a l'application donc une base différente pour chaque "instance" d'application. Alors qu'il me faudrait une bdd pour toutes ces "instance". J'ai déjà planché sur le sqlite j'en ai surement pas fait le tour non plus d'ailleurs.
c'est compréhensible?
merci encore pour ta réponse
edit:
je pense avoir un élément de réponse a l'erreur "not load libmysqlclient.XX.dylib"
après avoir "sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib"
simplement déplacer cette librairie après réinstallation mon erreur a simplement disparue et le tuto fonctionne nickel donc si ça peut aider... merci encore
Récupérer une liste de données structurées sous forme de fichier xml, sur plusieurs iPhones, à partir d'une base sur un serveur (ton imac par exemple).
1- Mapper (dans ta box ou dans ta time capsule selon config) le port 80 (http) pour envoyer sur l'IP de ton imac.
2- créer un fichier test.xml, déposé dans /Library/WebServer/Documents :
3- activer le partage Web dans les préférences
4- retrouver l'adresse de ta box ou mieux obtenir une adresse dynamique chez dyndns.org par exemple
5- dans l'iPhone, dans le navigateur, appelle :
tu obtiens le contenu de ton fichier (image 1)
6- dans ton appli iPhone, tu appelle cette adresse :
ensuite tu peux utiliser la connection pour parser le fichier (NSURLConnection, NSXMLParser) et remplir une UITableView (image 2)
7- Pas suivant : ce fichier xml peut être produit par une base sqlite, mysql, etc..., à qui tu as envoyé une requête. Et là , nous entrons dans les Web-Services : bonne route !
Bonjour,
Désolé de déterrer ce sujet
Le tutoriel de 2010 fonctionne parfaitement avec XCode 6 et Objective-C.
Actuellement, je tente de faire la même manipulation sous SWIFT, le nouveau language d'apple.
Jusque la, tout se passe correctement pour mettre en place le bridge entre Obj-C et Swift, je n'ai d'ailleurs aucune erreur de compilation.
Mon soucis en fait se trouve dans l'initialisation de la variable "mysql" afin de rester au plus proche du tuto.
Cette dernière fait planter les fonctions mysql_*, sauf le mysql_init.
Voici mon code actuel :
Si quelqu'un aurait une piste pour débloquer cela
Merci d'avance