IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

[X10 firedac -IOS]Installation SqLite sur IOS ne fonctionne pas


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [X10 firedac -IOS]Installation SqLite sur IOS ne fonctionne pas
    Bonjour

    Apres avoir lu sur le sujet j'ai commencé a utiliser SqLite et firedac dans mes applications. Sur Windows 10 mon application fonctionne tres bien.

    Mais je plante sur IOS tout semble venir de ma configuration pour SqLite.(J'ai fais l'exemple de shoplist et ca fonctionne)Je me sert de +ou- les memes configurations.

    J'utilise les composants.

    FDConnection1, FDQuery1, (2 tables) FDtable1, FDGUIxWaitCursor1, FDPhysSQLiteDriverLink1
    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TFmaitre.FDConnection1BeforeConnect(Sender: TObject);
    begin
        {$IF DEFINED(iOS) }
         FDConnection1.Params.Values['Database'] :=TPath.Combine(TPath.GetDocumentsPath, 'donnee.s3db');
       {$ENDIF}
    end;
    2*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    procedure TFmaitre.FormActivate(Sender: TObject);
    begin
    FDConnection1.Connected:=TRUE;
    .......
    3-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TFmaitre.FDConnection1AfterConnect(Sender: TObject);
    begin
        {$IF DEFINED(iOS) }
       FDConnection1.ExecSQL('CREATE TABLE IF NOT EXISTS info (ID INTEGER (1), EREGION CHAR (4), EDIRECTEUR CHAR (30), ESP CHAR (30), ETEL CHAR (15), ECARBIRANT NONE (5, 2), EDEGEL CHAR (3), EPROPRIETAIRE CHAR (30), ETELPROP CHAR (15), EPLAQUE CHAR (10));');
     
     
       FDConnection1.ExecSQL('CREATE TABLE IF NOT EXISTS coupon (ID INTEGER (4), OTHERID CHAR (10), BCOMPAGNIE CHAR (20), BCOUPON CHAR (10), BDATE CHAR (10), BMATERIEL CHAR (20), BDISTANCE NUMERIC (5, 2), BQTE NUMERIC (7, 3), INFO BLOB));');
     
      {$ENDIF}
     end;
    J'active mes tables quand je les ouvres. J'ai cree ma base et mes tables avec Sqlite studio ca va tres bien il faudrait juste valider ma creation des tables sur IOS

    Merci de votre aide.

    Mario

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 114
    Points : 41 244
    Points
    41 244
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    en fait je comprends pas la question mais encore moins pourquoi tu utilises un code spécifique pour créer les tables (partie 3)
    de mon point de vue que ce soit windows , IOS ou même Androïd la création des tables reste la même
    et la syntaxe du create table if no exist semble correcte .

    perso, n'ayant pas de mac, mes essais se sont fait sous Windows et Androïd, la seule différence entre ta méthode (execsql sur la connexion) et la mienne est que je préfère passer par une query (ou un script) pour le faire.

    Dernier test en date (base monotable non crée à l'avance) voici la query permettant la création de la table et de ses index
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    CREATE TABLE IF NOT EXISTS saisie (
        ID_RECORD   INTEGER      PRIMARY KEY AUTOINCREMENT,
        TYPE_RECORD CHAR (1)     NOT NULL,
        CASIER      CHAR (6)     NOT NULL,
        MODELE      VARCHAR (13) NOT NULL,
        ASSORTIMENT CHAR (3)     NOT NULL,
        LOT         VARCHAR (15),
        EMPLACEMENT VARCHAR (6),
        DATE_ENTREE DATETIME,
        DATE_SORTIE DATETIME,
        Q1          INTEGER      DEFAULT (0),
    ....
        DESC_LOT    TEXT,
        SAISON      CHAR (5),
        COMMANDE    INTEGER,
        LIGNE       INTEGER,
        ETAT        CHAR (1),
        DESCRIPTION VARCHAR (40)
    );
    CREATE UNIQUE INDEX IF NOT EXISTS CLE_MODELE ON saisie (
        CASIER,
        MODELE,
        ASSORTIMENT,
        TYPE_RECORD,
        SAISON,
        COMMANDE,
        LIGNE   
    );
     
    CREATE INDEX IF NOT EXISTS CASIER ON saisie (
        CASIER
    );
    Query qu'un seul execsql permet d'exécuter oui, dans une FDQuery on peut mettre plusieurs instructions (c'est pour cela que je parlais de script au dessus )
    je n'ai pas essayé le FDScript à la place (j'ai été échaudé par la version précédente des Firedac avec XE8, n'ayant pas réussi à savoir où s'arrêtait le script en cas de planton, Dmitry Arefiev m'avait indiqué le correctif à apporter sur les sources mais entre temps XE10 est arrivé et donc plus besoin du patch)

    en tout cas je n'ai pas de ifdef pour l'exécution de la query d'où ma première phrase
    pourquoi tu utilises un code spécifique pour créer les tables ?

  3. #3
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 950
    Points
    1 950
    Par défaut
    Bonjour,

    Effectivement, tu n'as pas besoin de créer les tables uniquement pour iOS, si tu veux utiliser la BD que tu as créer par un outil quelconque, il te suffit ensuite de déployer ta BD avec Delphi comme suit :

    Menu Projet -> Déploiement ensuite tu cliques sur le bouton pour ajouter un fichier spécifique, tu lui indiques l'emplacement de ta BD et lors du déploiement, Delphi se chargera de mettre la BD dans le device iOS.

    voici le lien pour des explications + détaillées.

  4. #4
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [X10 firedac -IOS]Installation SqLite sur IOS ne fonctionne pas
    Bonjour et merci de votre aide

    Aide embarcadero ecrit:

    Important : Pour les applications de bases de données multi-périphériques, vous devez utiliser le Gestionnaire de déploiement pour activer les pilotes de bases de données nécessaires pour votre machine cible spécifique. Vous activez les pilotes de bases de données en utilisant la boîte de dialogue Ajouter des fichiers spécifiques. Quand vous exécutez, déboguez ou déployez réellement votre application, l'EDI copie les fichiers actuellement activés de la liste de déploiement dans l'application déployée.
    Quand je cherche dans fichiers spécifiques(dans déploiement) je ne trouve pas le gestionnaire de SqLite.

    Suis-je obligé de l'installé pour mes application IOS, J'ai ajouté dans Déploiement ma base donnee.s3db avec ajout fichier

    Mais ca rien change sur mon application J'ai toujours un erreur.

    Je vais reprendre l'exemple de shoplist pour comprendre d'avantage.

    Merci beaucoup de votre générosité a partager vos informations

    Mario

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 114
    Points : 41 244
    Points
    41 244
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par mario9 Voir le message
    Quand je cherche dans fichiers spécifiques(dans déploiement) je ne trouve pas le gestionnaire de SqLite.
    parce que SQLite (la dll) est intégrée à firedac (selon ce que j'ai compris)
    Suis-je obligé de l'installer pour mes application IOS, J'ai ajouté dans Déploiement ma base donnee.s3db avec ajout fichier
    par contre, oui (toujours à mon avis) il faut installer SQLite pour IOS sur le poste

  6. #6
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [X10 firedac -IOS]Installation SqLite sur IOS ne fonctionne pas
    Bonjour

    Merci de votre aide

    J'ai avancé un peu dans mon problème j'ai installe via explorateur ma base de données dans mon projet tel qu’écrit par Free07mais quand je lance mon application je plante et sir iPhone j'ai un erreur quand mon application ouvre

    Erreur Classe TFDTable non trouvée
    et revient a mon application sans rien faire..

    merci

    Mario

  7. #7
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 950
    Points
    1 950
    Par défaut
    Sur mac OS X et iOS, tu n'as pas besoin de la dll de sqlite, elle est intégré à l'OS.

    Il ne trouve pas ta base de données, quel chemin distant as tu renseigné dans le gestionnaire de déploiement pour le déploiement de ta BD ? tu trouveras des précisions ici

    En général on place les fichiers dans : Startup\Documents\

    Et pour retrouver ce chemin c'est :


  8. #8
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [X10 firedac -IOS]Installation SqLite sur IOS ne fonctionne pas
    Bonjour

    Merci

    J'ai toujours le meme résultat classe TfdTable non trouvé

    image....Nom : deploiement.PNG
Affichages : 302
Taille : 32,3 KoNom : explorateur.PNG
Affichages : 202
Taille : 13,2 KoNom : path.PNG
Affichages : 250
Taille : 6,9 Ko

    Je continue ma lecture

    Merci

    Mario

  9. #9
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 950
    Points
    1 950
    Par défaut
    Bonjour Mario,

    Tu as oublié de renseigner le chemin distant dans le gestionnaire de déploiement.

    Pour ta bd 'donnee.s3db', il faut que tu renseignes la colonne 'chemin distant' en mettant : Startup\Documents\

    Cela indique l'emplacement ou il doit copier le fichier 'donnee.s3db' sur l'appareil iOS.

    Startup représente la zone sandbox de l'application et ta BD sera copié dans le dossier Documents de la zone sandbox. Il me semble que l'on peut visualiser la zone sandbox avec xcode : menu 'Window' et 'Devices', il affiche toutes les applications présentent sur ton device et en cliquant sur le bouton paramètres, il affiche le chemin. ( je dis ça de mémoire, je peux me tromper et j'ai pas mon ipad pour vérifier ).

  10. #10
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [X10 firedac -IOS]Installation SqLite sur IOS ne fonctionne pas
    Bonjour

    Un gros merci vos explications et les liens fournis mon tres bien aidé a comprendre l'intégration entre SqLite et Ios.

    Cette ligne a fait la difference.

    Pour ta bd 'donnee.s3db', il faut que tu renseignes la colonne 'chemin distant' en mettant : Startup\Documents\
    Ca fonctionne tres bien au dela de ce que je pensais. Tres rapide comme solution, SqLite. Un pas de plus dans mon application.

    Merci encore

    Mario

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [iOS] [Xe8-IOS] Installer application sur Ipad et Iphone
    Par mario9 dans le forum Composants FMX
    Réponses: 1
    Dernier message: 15/06/2015, 08h42
  2. Réponses: 8
    Dernier message: 25/06/2007, 14h07
  3. ET logique sur pointeur ne fonctionne pas
    Par progfou dans le forum C++
    Réponses: 7
    Dernier message: 10/04/2007, 11h06
  4. Réponses: 1
    Dernier message: 05/04/2005, 22h21
  5. Index sur datetime ne fonctionnant pas
    Par Pierrinot dans le forum Requêtes
    Réponses: 5
    Dernier message: 18/10/2004, 09h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo