Accès de base de données distantes depuis l'iPhone
Bonjour,
Je suis entrain de développer une application sur iPhone qui permettra de récupérer des données (texte et images) depuis une base de données distantes, je crois que j'utiliserais SQLite 3.
Le problème c'est que c'est la première fois ou je touche à ces outils.
est ce que quelqu'un peut me donner des conseils à ce sujet, je serais très reconnaissant
merci d'avance
Je suis entrain de développer une application sur iPhone qui permettra de récupérer des données (texte et images) depuis une base de données distantes, je crois que j'utiliserais SQLite 3.
Le problème c'est que c'est la première fois ou je touche à ces outils.
est ce que quelqu'un peut me donner des conseils à ce sujet, je serais très reconnaissant
merci d'avance
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Concernant SQLite3, fait attention aux types, ils sont plus génériques que ceux de MySQL par exemple.
Tu veux "récupérer des données depuis une base de données distante". SQLite dans ton application iPhone ne te permettra pas d'accéder à une base de données distante. Elle pourrait permettre à la rigueur d'accéder à un fichier distant mais je pense que ça poserait des problèmes de performance (je n'ai jamais essayé en fait).
Mais peut-être veux tu dire que tu veux créer un serveur de base de données à partir de SQLite ; ça peut marcher bien que ça s'apparente à la réinvention de l'eau chaude.
Sinon, lorsque je dois gérer des données structurées dans une application iOS, je préfère utiliser Core Data (qui s'appuie sur SQLite) que je trouve plus facile à utiliser conjointement aux TableView par exemple, que SQLite tout seul. Mais je n'ai jamais essayé avec un fichier distant.
d'après ce que j'ai lu sur la toile, il faut exporter le contenu de la bd en fichier xml, puis la parser de l'iphone directement, apparemment c'est la meilleur solution
Cette API en question peut être de la forme que tu veux : tu peux pour requêter ton appli choisir de communiquer en REST, en JSON, en XML... et choisir que ton appli te réponde en XML, en JSON (plus simple et adapté à l'univers mobile, pour la facilité de parsing et pour l'aspect léger, important dans le cadre d'un environnement mobile où le réseau n'est pas forcément au top)... ça dépend un peu de tes besoins.
Mais l'important est que ton client iPhone va envoyer une requête HTTP à ton serveur, qui va lui répondre avec des données formattées (en XML, ou en JSON, ou autre), et le client ne va pas directement communiquer avec la base. C'est le serveur qui, sur la réception de la requête, va faire la requête SQL correspondante à ta base MySQL, récupérer les résultats, les formatter en XML ou JSON ou autre, et les renvoyer à ton client.
Il y a déjà eu plusieurs questions sur le sujet dans ces forums comme sur le net donc tu ne devrais pas avoir de mal à trouver plus d'informations sur ce sujet très commun.
Merci encore
Connaissez vous un sample code montrant comment parser un fichier JSON qui se trouve sur mon serveur distant.
J'ai réussi de creer un web service qui permet d'extraire le contenu de ma BD dans un fichier JSON.
Si tu cibles à partir de iOS4 où NSJSONSerializer n'était pas encore dispo, je te conseille JSONKit. Une petite recherche google te montrera plein d'exemples et comment intégrer les fichiers JSONKit dans ton projet.
En fait je suis bloqué pour le moment, en fait ce que j'ai fait pour l'instant c'est d'extraire les données de ma base dans un fichier .json (sous la bonne format) qui se trouve dans mon serveur (utilisateur@serveur.com) à l'emplacement /home/utilisateur.
J'ai trouvé plusieurs exemples, mais comme je débute, je n'est pas su comment m'en sortir /crybaby.gif' class='bbc_emoticon' alt=' ' />
Vos idées, suggestions, solutions sont les bienvenues.
Merci d'avance
Salut ! Je vais t'expliquer comment j'ai fait de mon côté sa pourra ptet t'aider.
Bon pour pouvoir communiquer avec un serveur t'a pas besoin de grand chose en sois. Personnellement j'utilise http://stig.github.com/json-framework/.
Après il faut savoir que si tu veux faire de l'asynchrone il te faut un NSUrlConnectionDelegate.
Dans ton delegate, ou depuis un autre endroit (comme tu préfère), tu dois initialiser un NSUrlConnection. Pour ça, tu peu te baser sur ce bout de code.
requête synchrone :
Asynchrone :
De manière générale, il te retourne un NSDictionnary ou un NSArray (une fois que tu a utilisé la fonction decode de SBJson), que tu peu donc utiliser facilement.
Ce petit site peu t'aider à valider ton json, ou a le lire plus facilement aussi http://jsonlint.com/
Si tu a des questions, n'hésite pas.
J'ai l'impression que tu n'as pas fait un webservice, mais juste un export de ta base en json. Du coup si il y des modifications dans ta bases de données tu devras toi même regénérer le fichier...
Le but c'est que tu génères automatiquement le json lorsque l'utilisateur le demande, de manière à ce que l'utilisateur récupère les dernières données en date.
Après j'ai peut être mal saisie ce que tu as expliqué...
Peut-être qu'il fait cela juste pour tester la récupération.
Après, effectivement un petit serveur LAMP est plus que nécessaire pour faire une application de ce type côté serveur.
Oui, exacte, pour le moment ça ce que j'ai fait
Ton code permet, si je me trompe pas, de créer un JSON depuis un fichier de données qui se trouve sur un serveur distant.
Moi j'essaie de faire le contraire en fait. Récupérer les résultat depuis un fichier JSON qui se trouve sur le serveur.