SQLite et CVI – Etape par étape et sans prise de tête

Un rapide tutoriel qui montre comment utiliser SQLite et CVI. Il faut commencer par récupérer sur le site de SQLite (http://www.sqlite.org/download.html) les trois fichiers zip qui vont bien :

  1. sqlite-amalgamation-xxx.zip
  2. sqlite-dll-win32-x86-xxx.zip
  3. sqlite-shell-win32-x86-xxx.zip

Dans le répertoire Téléchargements de Windows dézippez ensuite les fichiers en question.

Dans le répertoire « amalgamation » copiez sqlite3.h et collez le dans un répertoire nommé « testsql » par exemple.

Dans le répertoire « sqlite-dll » copiez le fichier sqlite3.dll et collez-le dans le répertoire testsql précédent.

Dans le répertoire « shell » copiez le fichier sqlite3.exe et collez-le dans le répertoire testsql précédent.

Toujours dans le gestionnaire de fichier Windows, faites SHIFT+CLICK DROIT sur le nom du répertoire testsql et choisissez l’option « Ouvrir une fenêtre de commande ici ». On va tester SQLite afin de voir que tout va bien. Dans la console tapez simplement :

1
2
3
4
5
sqlite3 Mabase.db
create table MaTable(Nom varchar(20), Prenom varchar(20));
insert into MaTable values("BAUCOUR", "Philippe");
select * from Matable
.exit

N’oubliez pas le point-virgule en fin d’instruction. Si tout s’est bien passé, à la suite de l’instruction « select » vous avez récupéré une sortie écran qui correspond à ce que vous aviez rentré. Bref on a une base est SQLite fonctionne.

Ouvrez maintenant CVI est créez un nouveau projet vide

Depuis le gestionnaire de fichiers Windows, glissez déposez le fichier sqlite3.h dans la zone projet

Double cliquez sur le fichier pour le voir apparaître dans l’éditeur de code de CVI

Sélectionnez Options/Generate DLL Import Library…

Ne sélectionnez aucune option dans la petite boite de dialogue qui apparaît

Dans la boite de sélection de fichiers qui apparaît choisissez sqlite3.dll (la dll est dans le répertoire testsql que vous avez créé précédemment)

Ne prêtez pas trop attention à la fenêtre de Warning qui arrive à l’écran

Dans le répertoire testsql vous devez maintenant avoir un fichier sqlite3.lib

Depuis le gestionnaire de fichiers Windows, faites un glissez-déposez de sqlite3.lib dans la fenêtre projet

Maintenant, copiez-collez le code source ci-dessous dans un nouveau code source. Il faudra lui aussi l’ajouter au projet en cours (via l’option File/Add xyz to project)

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
63
64
65
66
67
68
69
#include <stdio.h>
#include "sqlite3.h"
 
//-----------------------------------------------------------------------------
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
 
    for(int i=0; i<argc; i++){
        printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    return 0;
}
 
//-----------------------------------------------------------------------------
int main(int argc, char **argv){
 
    sqlite3     *db=0;
    char            *zErrMsg=0;
    int             rc;
    const char  *SQLStatements[6];
            // Create a new AnotherTable in database
            SQLStatements[0] = "create table AnotherTable (FirstName varchar(30), LastName varchar(30), Age smallint)";
 
            // Insert item into AnotherTable
          SQLStatements[1] = "insert into AnotherTable values ('AA', 'BB', 10)";
 
            // Insert item into AnotherTable
          SQLStatements[2] = "insert into AnotherTable values ('CC', 'DD', 20)";
 
            // Select all data
            SQLStatements[3] = "select * from AnotherTable";
 
            // Remove all data
            SQLStatements[4] = "delete from AnotherTable";
 
            // Drop the table from database
            SQLStatements[5] = "drop table AnotherTable";
 
  //-----------------------------------------------------------------------------
  rc = sqlite3_open("MaBase.db", &db);
    if(rc!=SQLITE_OK){
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    }else{
    rc = sqlite3_exec(db, "select * from MaTable", callback, 0, 0);
    sqlite3_close(db);
    db=0;
  }
 
  //-----------------------------------------------------------------------------
    rc = sqlite3_open("test.db", &db);
    if(rc!=SQLITE_OK){
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    }else{
    for(int i = 0; i < 6; i++){
        rc = sqlite3_exec(db, SQLStatements[i], callback, 0, &zErrMsg);
        if( rc!=SQLITE_OK ){
            fprintf(stderr, "SQL error: %s\n", zErrMsg);
            sqlite3_free(zErrMsg);
            break;
        }
    }
    sqlite3_close(db);
    db=0;
  }
 
  printf("Strike ENTER to exit :");
    getchar();
    return 0;
}

Finalement, vous avez 3 fichiers dans la fenêtre projet : sqlite3.h, sqlite3.lib et test.c (si c’est comme ça que vous avez nommé le code source ci-dessous). Allez zou, SHIFT+F5. Ça doit tourner. Voilà la sortie écran que j’obtiens :

Nom = BAUCOUR
Prenom = Philippe
FirstName = AA
LastName = BB
Age = 10
FirstName = CC
LastName = DD
Age = 20
Strike ENTER to exit :

Explications du code source :

A la ligne 40 on ouvre la base que l’on a créé dans la console et on affiche le contenu de la table MaTable à l’écran. Notez que l’affichage se fait via une fonction callback passée en paramètre à la ligne 44. Notez aussi qu’on ne gère pas trop les erreurs.

Ligne 50, on créer et/ou ouvre une nouvelle base : test.db. Ensuite on exécute une série d’instructions SQL et on ferme la base. Le truc à noter dans cette section de code c’est sans doute la gestion des erreurs et l’usage de sqlite3_free.

Bon vous devriez être capable maintenant d’utiliser SQLite avec CVI. Trouvez-vous un bon tutoriel SQL et amusez-vous bien.

Share this...

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  

  

  

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.