Mysql et ObjectiveC
enzyme2006
Membre
Bonjour,
Après avoir parcouru un bon nombre de page sur google, j'ai installer dans usr/local/ mysql via le site mysql.
mais je ne sais pas comment lire une table mysql ? Je n'ai pas trouver d'exemple simple de d'ouverture, lecture de table.
Pourriez vous m'aidez car là je ne sais pas quoi faire.
Bien cordialement
enzyme
ps: je ne sais pas si j'ai poster au bonne endroit, dans le cas contraire, veuillez m'excuser.
Après avoir parcouru un bon nombre de page sur google, j'ai installer dans usr/local/ mysql via le site mysql.
mais je ne sais pas comment lire une table mysql ? Je n'ai pas trouver d'exemple simple de d'ouverture, lecture de table.
Pourriez vous m'aidez car là je ne sais pas quoi faire.
Bien cordialement
enzyme
ps: je ne sais pas si j'ai poster au bonne endroit, dans le cas contraire, veuillez m'excuser.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je ne penses pas que tu ai poster au bonne endroit.
Ensuite je ne sais pas si tu as regardé la licence de mysql ?
Sinon, tu as postgres ou si ton application est monoposte et bien coreData fait très bien l'affaire.
Un petit peu plus de détail sur ce que tu veux faire et se sera plus simple de t'aider.
Si c'est pour l'associer à une application Mac ou iPhone, tu n'es pas dans la bonne section.
Après, MySql c'est un langage avec des tas de choses à apprendre dessus. Il y a des milliers d'exemples sur le Web.
Donc, il faut savoir ce que tu veux faire.
Je voudrais lire une table à partir de l'iphone sur un serveur php + mysql
merci
pour ouvrir en objective-C une connexion sur un serveur MySQL tu peux utiliser
http://mysql-cocoa.sourceforge.net/
sinon dans MySQL tu as livré avec le code source une librairie C qui permet d'établir la connexion au serveur.
http://dev.mysql.com/doc/refman/5.0/en/c.html
enfin j'ai l'impression qu'il y a une petite confusion (du moins ton post me laisse cette impression)
Une table ne peux pas être lue directement ce n'est pas l'application Cocoa qui peut lire la table c'est le serveur MySQL
ce que peut faire ton application c'est ce connecter au serveur MySQL et interroger la base.
maintenant en php
il te faut un serveur MySQl un serveur Httpd et un moteur php
Xampp par exemple est un package complet pour MacOS Windows Unix
tu crée un site php qui contient des scripts utilisant l'API MySQL
http://php.net/manual/en/book.mysql.php
ces script faisant le travail dont ton application à besoin
il te faut les sécuriser pour éviter que quelqu'un ne vienne te polluer ta base.
dans ton application IPhone tu appelle les URL de tes scripts
si tu veux pas trop te casser la tête avec le php tu peux télécharger
http://sqlmanager.net/fr/products/mysql/manager (attention App pour windows)
dans le package te va trouver un script php (emsproxy.php)
ce script placé sur ton serveur php sert de proxy tu n'as donc rien à développer de ce côté là .
mais par contre il n'est pas documenté
en gros tu n'as qu'une url tu lui passe les commande SQL à exécuter et il les exécute sur le serveur
de plus il est multi serveur (il fonctionne avec MsSql, MySql PostgreSQL et oracle)
personnellement je déconseille de déporter les accès à la base via des scripts php ou autre
Je fais un serveur de webservices en java ou php ou autre qui assurent le traitement métier ainsi que la persistance
les application faisant appel a ces services.
suivant le niveau de confidentialité et la largeur de la bande passante j'utilise SOAP REST ou JSON
SOAP est le mode de Webservices le plus formel mais aussi gourmand en bande passante
REST est plus simple
JSON est le moins formel e le plus léger
je n'hésite pas non plus à utiliser la compression lorsque cela est possible
cette façon de faire permet de multiplier les client sans avoir à réécrire les traitements
ainsi une application IPhone fera appel au même code que l'appli Cocoa ou que l'appil web
A+JYT
A ma connaissance CoreData ne gère absolument pas le MySQL (au grand regret de beaucoup de développeur). Peut tu préciser ce que tu entend par "ce n'est pas le plus direct" ? As-tu une méthode pour gérer une connexion MySQL depuis CoreData ou c'est juste un mal entendu ?
il existe plusieurs solution mais jamais très simple
la première qui reviens dans les mailling list est de se taper soit même le backend
CoreData fournit en standard le support du stockage SQLite, XML ou Binary il faut écrire les même classe pour MySQL (à partir de SQLite c'est plus proche) pour que CoreData utilise MySQL à la place de SQLite c'est "juste" une question d'API
Mais ce n'est pas rien à faire
Je n'ai pas pour le moment connaissance de version bien avancées
peut-être quelque chose du côté de GDB2 le package Database de GunStep
A+JYT
A ma connaissance, le moyen le plus simple pour relié Cocoa a une BDD en réseau est de passé via un serveur d'application Java, entre autre le projet d'Andrew Lindesay : http://homepage.mac.com/andrewlindesay/le/
En soit il est très difficile de dire "On refait le backend pour mettre du MySQL à la place du SQLite" car contrairement à un événement sur le file system, les BDD ne peuvent pas prévenir les clients des modifications alors même que c'est l'intérêt de CoreData et des bindings (et donc avoir une interface a jour facilement et en temps réel)
la doc d'apple prévois bien de dériver les atomicStorage mais pas les support de type SQLite
l'api n'est donc pas documenté en ce sens
pour ce qui est des modifs d'attribut d'objet vers le serveur je ne vois pas comment Apple à pu faire pour l'implémenter sur SQLite autrement que soit gérer un cache et ne faire les mise à jour que de façon groupés soit en faisant les modifs au fil de l'eau.
dans un cas comme dans l'autre en SQLite il s'agit d'un Update
de plus SQLite ne gère pas l'accès simultané à une base les événements filesystem ne servent donc pas dans cette affaire
Je pense que quelque soit l'objet à partir du moment ou plusieurs client doivent accéder aux mêmes fonctionnalité sur les mêmes données il vaux mieux en faire des webservices ainsi tous client à un accès unifié à la ressources quelque soit la téchno du client
A+JYT
Pour ce qui est de l'accès multiple à une fichier CoreData ça marche, c'est pas explicite mais l'API a les fonctionnalité pour, en gros via un partage AFP tu partage l'accès au fichier et c'est la que rentre en jeux le file system, tu observe les modif sur ton dossier pour faire un refresh de CoreData. En soit l'API a tout ce qu'il faut pour gérer ce genre d'utilisation même si c'est pas trop utilisé.
C'est la bonne manière de faire, si tu veux en savoir plus ça s'appel du SOAP, tu passe par du http pour contacter un serveur, tu lui passe des arguments en post éventuellement et tu récupère le résultat en XML
Voir mes tutos