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 :

SQLite, accès à une table d'une base de données


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Phyto-aromathérapeute
    Inscrit en
    Juillet 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Phyto-aromathérapeute
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 83
    Points : 46
    Points
    46
    Par défaut SQLite, accès à une table d'une base de données
    Bonjour,
    Je travaille avec Delphi 10.3 édition "professionnel" et cherche à migrer de Paradox à SQLite, je suis plus que néophyte avec SQLite, c'est la première fois que je l'utilise... J'ai créé une Base de Données SQLite Soins10 qui comprends plusieurs tables : ProduitsNaturels, Affections, Remedes, Chromato, Synergie, Posologie, Molecule... J'ai déjà un vieux programme de plus de 15 ans (créé à l'époque avec Delphi 4) qui tourne avec les mêmes tables sous Paradox et le BDE mais souhaite migrer vers SQLite qui correspond à mes besoins.

    Dans l'application j'ai créé un DataModule sur lequel j'ai déposé un TFDConnection, TFDTransaction, TFDPHysSqlDriver, TFDLocalSQL, TClientDataSet, T DataSource et FDTAble. La connexion est établie TFDConnection = True et j'ai indiqué TDAtaSource.DataSet = FDTable1. Dans l'éditeur de connexion FireDac, lorsque je teste la connexion, je reçois : Connexion établie avec succès.

    Avant d'extraire des données, il me faut pouvoir accéder aux différentes tables pour renseigner différentes valeurs, par exemple dans la table Chromato, je dois renseigner la molécule, son CAS, sa formule chimique, ses vertus thérapeutiques...

    Problème : j'indique FDTable1.TableName Soins10... et cherche à activer le FDTable, je reçois un message d'erreur : FireDac Phys SqLite Error : no such table : Soins10. Je comprends que j'accède à la base de données mais comment faire pour accéder aux tables ? Par exemple j'ai essayé Soins10>Remede, Soins10\Remede, Soins10:Remede rien n'y fait toujours le même message d'erreur lorsque je cherche à activer la table.

    Cordialement,

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

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    A quel moment crée tu les tables dans SQL Lite ?

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Si la base est créée préalablement avec ses tables, il doit falloir indiquer le chemin de la base (Soins10) dans le TFDConnection.Database ou en renseignant la propriété Database de TFDConnection.Params, puis indiquer au TTable celle souhaitée : FDTable1.TableName := 'Remede' (ou Soins10.Remede).
    Je ne sais pas si cela suffit à la peupler lors d'un Open ou Active, mais ça semblerait logique !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  4. #4
    Membre du Club
    Homme Profil pro
    Phyto-aromathérapeute
    Inscrit en
    Juillet 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Phyto-aromathérapeute
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 83
    Points : 46
    Points
    46
    Par défaut SQLite, accès à une table d'une base de données
    Merci pour vos réponses.

    Pour répondre à AlWeber, la base de données et les tables ont créées avec DB Browser (SQLite) préalablement à toute ligne de code. J'ai donc ma base de données, prête à l'emploi dans laquelle j'ai importé toutes les données des fichiers Paradox, et je cherche a y accéder.

    Tourlourou, j'ai inscris le chemin complet dans TFDConnection.Params et cette fois-ci, alors que le fichier Soins10.Sqlite3 est bien dans ce même répertoire, lorsque je mets FDTable.Active à True je reçois l'erreur FireDac Phys SqLite Error : unknown database Soins10.

    Pourtant lorsque j'utilise l'éditeur de connexion FireDac et que je teste la connexion, j'ai bien le message Connexion établie avec succès... est-ce parce que j'ai un espace dans le chemin : C:\Borland\Travail 10\Soins10.Sqlite3 ?

  5. #5
    Membre du Club
    Homme Profil pro
    Phyto-aromathérapeute
    Inscrit en
    Juillet 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Phyto-aromathérapeute
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 83
    Points : 46
    Points
    46
    Par défaut SQLite, accès à une table d'une base de données
    Pour la tranquillité d'esprit, j'ai tout repris à la base données, drivers... en fait, il s'agissait d'un problème de driver, j'utilisais le driver 64 bit au lieu du 32 bit... avec le driver 32 bit, cela fonctionne en utilisant les conseils de Tourlourou.

    Désireux de faire tourner le programme en 64 bit, je me pose maintenant la question de comment migrer la BDD du 32 au 64 mais, étant monotâche et séquentiel, ce sera pour plus tard...

    Merci à vous,

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par essence-ciel Voir le message
    Pour la tranquillité d'esprit, j'ai tout repris à la base données, drivers... en fait, il s'agissait d'un problème de driver, j'utilisais le driver 64 bit au lieu du 32 bit.
    Là je trouve cela étrange, est-ce à dire que vous avez copié un driver dans le répertoire programme ou mis un chemin de driver particulier dans le FDConnection ?
    Je ne me suis jamais "cassé la tête" pour utiliser SQLite (installé sur windows 10 64 bits), je n'ai même pas cherché à vérifier sa version (après tout ce ne sont que pour des données locales) que je lance en debug à partir de l'EDI (donc 32 bits) ou le programme compilé en 64 bits je n'ai jamais eu de soucis particulier.
    Comment avez vous eu l'idée d'un problème de driver ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre du Club
    Homme Profil pro
    Phyto-aromathérapeute
    Inscrit en
    Juillet 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Phyto-aromathérapeute
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 83
    Points : 46
    Points
    46
    Par défaut SQLite, accès à une table d'une base de données
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Là je trouve cela étrange, est-ce à dire que vous avez copié un driver dans le répertoire programme ou mis un chemin de driver particulier dans le FDConnection ?
    Je ne me suis jamais "cassé la tête" pour utiliser SQLite (installé sur windows 10 64 bits), je n'ai même pas cherché à vérifier sa version (après tout ce ne sont que pour des données locales) que je lance en debug à partir de l'EDI (donc 32 bits) ou le programme compilé en 64 bits je n'ai jamais eu de soucis particulier.
    Comment avez vous eu l'idée d'un problème de driver ?

    Bonjour,
    Ce qui posait problème c'était db Browser (Sqlite), j'ai testé avec SqliteStudio, j'ai saisi les valeurs correcte (Merci Paul Toth) et cela s'affiche correctement.
    De plus, en supprimant le champ numéro qui était inutile et en renommant Affection en Affections comme suggéré par SergioMaster, c'est beaucoup plus lisible...

    AlWeber, tu avais évoqué un document pour migrer du BDE vers un SGBDR, je suis toujours preneur.
    Merci à tous.

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour
    Citation Envoyé par essence-ciel Voir le message
    De plus, en supprimant le champ numéro qui était inutile
    Je contredirais ce point, gardez ce numéro en en faisant une colonne autoincrémentée (donc pas besoin de code pour gérer ça) est la bonne pratique.
    Faites en la clé primaire, et créez une contrainte unique sur la colonne affection.
    Venant de Paradox vous aurez peut-être l'impression que le SGBD va "galérer", rajouter des fichiers etc... mais non c'est une fausse vue de la chose

    AlWeber, tu avais évoqué un document pour migrer du BDE vers un SGBDR
    c'est certainement de l'outil refind qu'il s'agit ? Voir http://docwiki.embarcadero.com/RADSt...E_vers_FireDAC
    Je suis mitigé sur cet outil, je ne l'ai testé que sur de tout petits programmes, s'il fonctionne il garde aussi le code tel quel. Je m'explique avant j'utilisai des TTables l'outil me les transformera en FDTables
    maintenant je prône plus l'utilisation de TQuery+TUpdateSQL pour diverses raisons (utilisations des macros de firedac par exemple) bien sur refind ne vas pas le faire à ma place conclusion si reFind est pratique il est (pour de petites applications) moins pratique qu'une migration à la main (le coût main d'œuvre n'est pas négligeable sans parler de l'installation des composants BDE nécessaires)

    Ayant fait le choix FMX la question ne se pose pas vraiment pour moi.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Voici l'exemple dont je t'avais parlé. De Paradox vers Interbase. Je n'ai pas eu le temps de le modifier pour faire Paradox vers SQLLite
    Fichiers attachés Fichiers attachés

  10. #10
    Membre du Club
    Homme Profil pro
    Phyto-aromathérapeute
    Inscrit en
    Juillet 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Phyto-aromathérapeute
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 83
    Points : 46
    Points
    46
    Par défaut SQLite, accès à une table d'une base de données
    Citation Envoyé par SergioMaster Voir le message
    Bonjour

    Je contredirais ce point, gardez ce numéro en en faisant une colonne autoincrémentée (donc pas besoin de code pour gérer ça) est la bonne pratique.
    Faites en la clé primaire, et créez une contrainte unique sur la colonne affection.
    Venant de Paradox vous aurez peut-être l'impression que le SGBD va "galérer", rajouter des fichiers etc... mais non c'est une fausse vue de la chose


    c'est certainement de l'outil refind qu'il s'agit ? Voir http://docwiki.embarcadero.com/RADSt...E_vers_FireDAC
    Je suis mitigé sur cet outil, je ne l'ai testé que sur de tout petits programmes, s'il fonctionne il garde aussi le code tel quel. Je m'explique avant j'utilisai des TTables l'outil me les transformera en FDTables
    maintenant je prône plus l'utilisation de TQuery+TUpdateSQL pour diverses raisons (utilisations des macros de firedac par exemple) bien sur refind ne vas pas le faire à ma place conclusion si reFind est pratique il est (pour de petites applications) moins pratique qu'une migration à la main (le coût main d'œuvre n'est pas négligeable sans parler de l'installation des composants BDE nécessaires)

    Ayant fait le choix FMX la question ne se pose pas vraiment pour moi.
    Bonsoir SergioMaster,
    Merci pour les réponses et les pistes.
    Entre temps, je me suis rendu compte que j'avais besoin de cette colonne, donc je l'ai rétablie et en ai fait une champ auto-incrémenté, non null et me sert pour la clé primaire, comme d'autres tables accèdent à cette colonne, c'est plus pratique et moins redondant... Je n'avais pas pensé à créer une contrainte unique sur la colonne Affection... Merci pour l'idée !

    J'avais regardé le lien suggéré lorsque je me suis décidé pour FireDAc mais je n'ai pas été convaincu. J'avoue n'avoir pas essayé et de transférer les tables à la main. Je vais donc tester reFind mais avec 60 tables dont beaucoup sont liées quitte à migrer autant faire pour le mieux.

  11. #11
    Membre du Club
    Homme Profil pro
    Phyto-aromathérapeute
    Inscrit en
    Juillet 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Phyto-aromathérapeute
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 83
    Points : 46
    Points
    46
    Par défaut SQLite, accès à une table d'une base de données
    Citation Envoyé par ALWEBER Voir le message
    Voici l'exemple dont je t'avais parlé. De Paradox vers Interbase. Je n'ai pas eu le temps de le modifier pour faire Paradox vers SQLLite
    Merci ALWEBER, je regarde ça dès demain matin !

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

Discussions similaires

  1. [C#] Accés à une base de données AS400
    Par Green Hornet dans le forum Accès aux données
    Réponses: 8
    Dernier message: 14/11/2011, 11h26
  2. Réponses: 4
    Dernier message: 15/01/2005, 16h05
  3. Accès à une base de données ACCESS
    Par Invité dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/01/2005, 08h23
  4. [JDBC]acces à une base de données mysql
    Par sehaba dans le forum JDBC
    Réponses: 13
    Dernier message: 07/12/2004, 00h39
  5. Réponses: 2
    Dernier message: 01/10/2004, 15h13

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