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

C++Builder Discussion :

Tutoriel: Utilisation des librairies SQLite dans un projet C++Builder


Sujet :

C++Builder

  1. #1
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut Tutoriel: Utilisation des librairies SQLite dans un projet C++Builder
    Le but du tutoriel est d'apprendre à utiliser les librairies SQLite dans un projet C++Builder. La première chose, pour ceux qui ne savent pas de quoi je parle, SQLite est une bibliothèque qui permet l'utilisation de requêtes SQL pour se connecter à un fichier de bases de données. Pour plus d'information vous pouvez consulter le lien suivant:
    [ame]http://fr.wikipedia.org/wiki/SQLite[/ame]

    Avant de débuter il faut télécharger le code source du site Web officiel:
    http://www.sqlite.org/download.html

    Pour me connecter à une base de données pour y faire des modifications j'utilise l'extension Firefox SQLite Manager. Il est possible de la télécharger gratuitement à l'adresse suivante: http://code.google.com/p/sqlite-manager/

    Premièrement, il faut créer un projet et mettre les fichiers téléchargés (sqlite3.c, sqlite3.h et sqlite3ext.h) à l'intérieur du dossier.

    Pour utiliser SQLite, il faut l'inclure:
    Voici maintenant, le moment de vous montrer le code. Il s'agit d'une modification du code "SQLite In 5 Minutes Or Less" tirée du site Web: http://www.sqlite.org/quickstart.html

    Deuxièmement il faut mettre un TMemo sur la Form. C'est le seul composant qui va être utilisé pour tout simplifier.

    Voici le code du fichier .cpp:
    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
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    #include "sqlite3.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
     
    static int callback(void *, int, char **, char **);
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
        sqlite3 *db = NULL;
        int rc;
        char *zErrMsg = 0;
        AnsiString path = "Northwind.db";           // Chemin vers la bd
        AnsiString sql = "SELECT * FROM Region";    // Requête SQL
     
        Memo1->Clear();
        Memo1->ScrollBars = ssBoth;
     
        rc = sqlite3_open(path.c_str(), &db);
        if(rc != SQLITE_OK)
        {
            MessageBox(NULL, sqlite3_errmsg(db), "SQL error", MB_ICONERROR);
            sqlite3_close(db);
        }
     
        rc = sqlite3_exec(db, sql.c_str(), callback, 0, &zErrMsg);
        if(rc != SQLITE_OK)
        {
            MessageBox(NULL, zErrMsg, "SQL error", MB_ICONERROR);
            sqlite3_free(zErrMsg);
        }
     
        sqlite3_close(db);
    }
    //---------------------------------------------------------------------------
     
    static int callback(void *NotUsed, int argc, char **argv, char **azColName)
    {
        AnsiString TempText = "";
        AnsiString MyText = "";
     
        for(int i=0; i<argc; i++)
        {
            TempText.sprintf("%s = %s\t", azColName[i], argv[i] ? argv[i] : "NULL");
            MyText += TempText;
        }
        Form1->Memo1->Lines->Add(MyText);
        return 0;
    }
    Il faut modifier les variables path et sql pour faire fonctionner les codes.

    Pour connaître la syntaxe des requêtes SQL vous pouvez aller voir: http://www.sqlite.org/lang.html

    Ce n'est pas plus compliqué que cela, si vous avez des questions, n'hésitez pas à les poser.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par Crayon Voir le message

    Pour me connecter à une base de données pour y faire des modifications j'utilise l'extension Firefox SQLite Manager. Il est possible de la télécharger gratuitement à l'adresse suivante: http://code.google.com/p/sqlite-manager/

    J'ai téléchargé le fichier SQLiteManager_0.4.8.xpi sur le site, mais comment tu fais pour l'installer dans firefox?
    Merci

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Tu n as qu à le deposer sur une fenêtre de firefox et poursuivre

  4. #4
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Ou sinon tu peux l'installer à partir du site de modules complémentaires de Mozilla à l'adresse suivante: https://addons.mozilla.org/en-US/firefox/addon/5817
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 62
    Points
    62
    Par défaut
    Voilà je pensai :
    au lieu d'utiliser un TMemo on pourrait utiliser un ListView ?

    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
    static int callback(void *NotUsed, int argc, char **argv, char **azColName)
    {
        AnsiString TempText = "";
        AnsiString MyText = "";
        AnsiString URL = "";
        AnsiString User = "";
        AnsiString Id = "";
     
        for(int i=0; i<argc; i++)
        {
            TempText.sprintf("%s\t", argv[i] ? argv[i] : "NULL");
            URL.sprintf("%s", argv[0]);
            User.sprintf("%s", argv[1]);
            Id.sprintf("%s", argv[2]);
            MyText += TempText;
     
        }
       ListIt = Form1->LV1->Items->Add();
      ListIt->Caption = URL;        // Affichage 1er colonne URLs
      ListIt->SubItems->Add(User); // Affichage colonne suivante User
      ListIt->SubItems->Add(Id);
     
        return 0;

  6. #6
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut
    Sqlite, je connaissais pas ça avant d'aborder la programmation Android. Je suis séduit par le concept "pas de serveur, tout est dans le fichier".

    J'ai bien vu qu'il y avait un forum Sqlite ici, mais je me demande s'il y a eu des développement de ce côté ici, par exemple un composant "TQuery" adapté à Sqlite?

  7. #7
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut
    Citation Envoyé par Guyt54 Voir le message
    J'ai bien vu qu'il y avait un forum Sqlite ici, mais je me demande s'il y a eu des développement de ce côté ici, par exemple un composant "TQuery" adapté à Sqlite?
    Guyt, faudrait que tu ouvres les yeux de temps en temps. Y en a un de proposé dans la section "téléchargez".

Discussions similaires

  1. Utiliser des DLL externes dans un projet Qt
    Par Kermichou dans le forum Qt
    Réponses: 2
    Dernier message: 18/07/2013, 15h28
  2. Utilisation des fonctionnalités AJAX dans un projet web
    Par stefsas dans le forum ASP.NET Ajax
    Réponses: 5
    Dernier message: 08/04/2010, 08h19
  3. utilisation de fichiers .c dans un projet C++ Builder
    Par engrobel dans le forum C++Builder
    Réponses: 1
    Dernier message: 22/08/2009, 09h37
  4. Réponses: 3
    Dernier message: 18/09/2007, 14h54
  5. Comment utiliser des dll C++ dans un projet C# ?
    Par kreitech dans le forum C#
    Réponses: 5
    Dernier message: 20/02/2007, 16h49

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