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

Composants FMX Delphi Discussion :

Où déployer ma base de données SQLite ?


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 635
    Billets dans le blog
    65
    Par défaut Où déployer ma base de données SQLite ?
    Pas aussi évident que ça comme question
    L'objectif serait de pouvoir accéder à la même base de données avec deux applications. La logique voudrait que ce soit dans un document accessible par ces deux applications, mais comment on exprime ça niveau déploiement.
    Est-ce seulement possible ?


    En gros que dois-je écrire à la place de assets/internal
    Nom : Capture.PNG
Affichages : 193
Taille : 3,1 Ko

    J'ai dans l'idée après avoir lu pas mal de choses qu'il faut mettre assets et d'utiliser Tpath.GetPublicPath pour obtenir le répertoire ? Quelqu'un pourrait me confirmer ?


    Quid des permissions (que je n'arrive pas à retrouver avec D12 ) ?

  2. #2
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 542
    Billets dans le blog
    10
    Par défaut
    voici ce que j'utilise. Bonne année
    Code : 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
     
    {$IFDEF Android}
      stDossierBase := IncludeTrailingPathDelimiter
        (System.IOUtils.TPath.GetSharedDownloadsPath) + 'Base';
      stDossierBase := IncludeTrailingPathDelimiter(stDossierBase);
      stBase := 'BDDWHEEL.SDB';
    {$ELSE}
      stDossierBase := IncludeTrailingPathDelimiter
        (System.IOUtils.TPath.GetPublicPath) + 'Data';
      stDossierBase := IncludeTrailingPathDelimiter(stDossierBase);
      stBase := 'BDDWHEEL.SDB';
    {$ENDIF}
      if not DirectoryExists(stDossierBase) then
        CreateDir(stDossierBase);
      if FileExists(stDossierBase + stBase) then
        DeleteFile(stDossierBase + stBase);
      if not FileExists(stDossierBase + stBase) then
        fAdminBDD.Button2Click(nil);
      DM1.FDConnection1.Params.Database := stDossierBase + stBase;
    +d'infos ci besoin

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 635
    Billets dans le blog
    65
    Par défaut
    Bon alors ce que tu m'indiques est encore un autre endroit (Sharedocuments) qui effectivement serait le plus "partageables"
    La question reste niveau déploiement, quand je veux "pousser" aussi une base pré-remplie du coup, c'est quel truc que je dois mettre à la place de assets ?

    Bonnes Fêtes de fin d'année et meilleurs vœux un peu en avance

  4. #4
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 542
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bon alors ce que tu m'indiques est encore un autre endroit (Sharedocuments) qui effectivement serait le plus "partageables"
    La question reste niveau déploiement, quand je veux "pousser" aussi une base pré-remplie du coup, c'est quel truc que je dois mettre à la place de assets ?

    Bonnes Fêtes de fin d'année et meilleurs vœux un peu en avance
    Je crées ma base avec un fichier de ressources comme cet exemple ci après que j'injecte via un sqlExec
    Code : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    create table connexion (
      idConnexion integer not null,
      login varchar(40) default null,
      pwd varchar(40) default null,
      dateConnexion datetime default null,     
      primary key (idConnexion)
    );
     
    insert into connexion
    (idConnexion, login, pwd) 
    values 
    (1,'admin','admin') ,
    (2,'Lise','toto') ,
    (3,'Test','test') ;
     
     
    create table theme (
      idTheme integer not null,
      nomTheme varchar(40) default null,
      primary key (idTheme)
    );
     
    insert into theme
    (idTheme, nomTheme) 
    values 
    (1,'Thème A') ,
    (2,'Thème B') ;
     
    create table themeDetail (
      idTheme integer not null,
      idthemeDetail integer not null,
      nomThemeDetail varchar(40) default null,
      eval integer,
      primary key (idTheme, idthemeDetail)
    );
     
    insert into themeDetail
    (idTheme, idthemeDetail, nomThemeDetail,eval) 
    values 
    (1,1,'Carrière',4) ,
    (1,2,'Finances',4) ,
    (1,3,'Santé',4) ,
    (1,4,'Amis',4) ,
    (1,5,'Couple',4) ,
    (1,6,'Dév. personnel',4) ,
    (1,7,'Loisirs',4) ,
    (1,8,'Environnement',4) ,
    (2,1,'Finances/carrière',4) ,
    (2,2,'Formation/éducation',4) ,
    (2,3,'Santé/forme physique',4) ,
    (2,4,'Social/culturel',4) ,
    (2,5,'Spiritualité/éthique',4) ,
    (2,6,'Famille/couple',4) ;
     
    create table themeHisto (
      releve integer not null,
      idTheme integer not null,
      idthemeDetail integer not null,
      eval integer,
      primary key (releve, idTheme, idthemeDetail)
    );
    le fichier de la base est créé automatiquement dans le code précédement envoyé

    Code de chargement du fichier de ressources :
    Code : 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
    34
    35
    36
    37
     
    var
      stFichier: string;
      Stream: TResourceStream;
      aFDConnection: TFDConnection;
      slCreeBase: TStringList;
     
    begin
      DM1.FDConnection1.Close;
      // ---------------
      slCreeBase := TStringList.Create;
      aFDConnection := TFDConnection.Create(self);
      //aFDConnection.Params.Add('LockingMode=Normal');
      aFDConnection.Params.Add('DriverID=SQLite');
      //aFDConnection.Params.Add('StringFormat=Unicode');
      aFDConnection.LoginPrompt := false;
      stFichier := stDossierBase+stbase ;
      if FileExists(stFichier) then
        DeleteFile(stFichier);
      aFDConnection.Params.Database := stFichier;
      aFDConnection.Open;
      Stream := TResourceStream.Create(HInstance, 'Resource_1', RT_RCDATA);
      slCreeBase.LoadFromStream(Stream,TEncoding.ANSI);
      Stream.Free;
      aFDConnection.ExecSQL(slCreeBase.text);
      aFDConnection.Close;
      aFDConnection.Free;
      slCreeBase.Free;
      // ---------------
      DM1.FDConnection1.Close;
      DM1.FDConnection1.Params.Database := stFichier;
      DM1.FDConnection1.Open;
      GenereJeuEssai;
      DM1.FDTable1.Connection := DM1.FDConnection1 ;
      DM1.FDTable1.TableName := 'connexion';
      DM1.FDTable1.Active := true;
    end;

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 635
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Dans ce cas, tu crées la base, moi, je voudrais la déployer et c'est là où le bât blesse.
    Du coup, je suis passé par le tethering pour mettre la base de données sur le poste Android (cf ce post https://www.developpez.net/forums/d2...-tetheringapp/).
    Le stream peut alors être sauvegardé dans Documents, SharedDocuments, Downloads, SharedDownLoads en théorie.

    En pratique, avec mon application "fontoffice" pour recevoir la base de données via tethering, cela fonctionne, mais avec une autre application, je n'arrive pas à accéder à cette même base (application "frontoffice" fermée. Dans cette application, nommons là APPTEST, je teste l'existence du fichier : Il existe, mais impossible de se connecter via la FDConnection !

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 635
    Billets dans le blog
    65
    Par défaut
    Je voudrais comprendre !
    Nom : Capture.PNG
Affichages : 110
Taille : 51,8 Ko
    j'ai écrit un programme pour tester les accès à la base de données que j'ai transféré et j'obtiens une erreur en tentant de me connecter dessus.

    test.sdb est créée si nécessaire -> ok je m'y connecte
    hexanet_main.sdb existe, donc n'est pas créée et pourtant, impossible de s'y connecter ! la seule explication que j'y vois serait une différence de version (gros doute)

    J'ai installé une carte mémoire, j'aurais pensé que du coup ces bases des données se seraient trouvées sur celle-ci, pourtant ce n'est pas le cas.
    Après une copie de Home/document vers la carte mémoire, j'ai bien la base de données, mais avec ces informations d'accès (/storage/7026-10F7/documents)
    Nom : Capture.PNG
Affichages : 108
Taille : 17,1 Ko
    Même si, a priori, l'on peut obtenir ce répertoire avec getExternalStorageDirectory (unité Androidapi.JNI.Os.pas) et donc une utilisation d'intents,
    j'ai du mal à cerner le truc

Discussions similaires

  1. base de donné sqlite distant
    Par skyrex dans le forum Android
    Réponses: 2
    Dernier message: 28/05/2016, 11h48
  2. base de donné SQLite
    Par radouanmst dans le forum MySQL
    Réponses: 5
    Dernier message: 23/07/2015, 09h19
  3. Réponses: 0
    Dernier message: 13/07/2010, 16h14
  4. [Tomcat][Oracle] connexion base de donnes debutant....
    Par yogz dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 16/07/2004, 13h32
  5. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22

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