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
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include "sqlite3.h"
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:
Il faut modifier les variables path et sql pour faire fonctionner les codes.
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; }
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.
Partager