Base de données MySQL

Bonjour, je recherche une façon de me connecter sur une base de données MySQL en swift pour une application sous iOS.

Merci,

Sylvain

Hello @slaverdu,

Base de donnée MySQL en local sur le device, ou sur un serveur ?

Bonne soirée,

Alexandre

C’est très élaboré, comme base MySql, ou ça peut correspondre à des tables simples en SQLite ? C’est stocké à distance ou sur le dispositif sur lequel l’appli s’exécute ?

Cette base de données réside sur un serveur distant. Je veux développer une apps qui me permettra d’interroger cette base de données MySQL.

La base de données réside sur un serveur distant. Je veux développer une application sur ios qui me permettra d’interagir sur BD.

Hello @slaverdu,

Si tu veux interagir sur une base de donnée MySQL qui réside sur un serveur distant, je pense que tu devras créer une API que tu interrogeras ensuite depuis ton application avec des requêtes (via Alamofire par exemple).

Je ne pense pas qu’il soit possible de se connecter directement à la base de donnée MySQL depuis l’application.

Bonne journée,

Alexandre

En règle générale, même si c’est possible, il est déconseillé de se connecter à une base de données distante en direct. Il vaut mieux, comme te l’a suggéré @Alexandre, créer un webservice/API entre ta base et le reste du monde.
Ca apporte plusieurs avantages :

  1. Ca protège ta base de données en interdisant les connexion distantes et en autorisant uniquement les connexions locales (ton webservice sera en local)
  2. Ca te permet de faire évoluer ta base (ajouter/retirer/renommer des tables et colonnes) sans avoir à chaque fois à mettre à jour toutes les apps qui s’en servait. Tu peux mettre à jour le webservice plus facilement que toutes les apps des utilisateurs

Merci pour vos réponses.

J’ai créé du code en PHP pour exécuter mes requêtes MySQL et j’utilise Alimofire dans mon application. Tout ça fonctionne bien sauf que je ne sais pas comment convertir mes blobs dans les classes que j’ai créées dans mon application. En C je pouvais utiliser un memcpy pour copier le buffer dans l’objet en question. Si vous avez une idée.

Sylvain

En général pour manipuler des données binaires on utilise la classe Data (anciennement NSData). C’est quel type final t’es blobs des images ?

C’est un blob de données qui comprend des Int, Float, Double, des tableaux, des structures, etc…
Exemple:

/* Analog Input */
typedef struct attribute ((packed))
{
BACnetObjectIdentifier_t objectIdentifier;
char objectName[OBJ_NAME_LENGTH];
char description[OBJ_DESC_LENGTH];
BACnetObjectType_t objectType;
BACnetStatusFlags_t statusFlags;
char outOfService;
BACnetEventState_t eventState;
float presentValue;
float COVIncrement;
BACnetEngineeringUnits_t units;
char deviceType[DEVICE_TYPE_LENGTH]; // Conversion, appareil raccordé
unsigned short counts; // Valeur brute
unsigned char iConvert; // Indice de TabCvt (contenant adr. de Cvt)

Voilà.

Ah je pensais que tu avais des données qui étaient obliger de rester binaires (image ou autre type de fichier/media) mais si tu as une structure de données le mieux serait que ton webservice en php envoie les données en JSON.
Les performances sont moins bonnes mais c’est le mieux pour un webservice et ce sera 1000 fois plus simple que de transporter du binaires entre plusieurs plateformes en espérant que l’allocation mémoire sera la même sur iOS que sur ton serveur.
Si tu veux vraiment rester dans du style C, alors voici de la doc officielle sur l’utilisation bas niveau de la mémoire en swift : https://developer.apple.com/documentation/swift/unsafepointer

Merci!

Je vais expérimenté en JSON.

Sylvain

1 J'aime