Le meilleur didacticiel SQLite - C / C ++ en 2024, dans ce didacticiel, vous pouvez apprendre installer,C / C ++ interface API,Connectez-vous à la base de données,Créer une table,opération INSERT,opérations SELECT,opération UPDATE,opération DELETE,
Dans le programme C / C ++ avant d'utiliser SQLite, nous devons nous assurer qu'il ya la bibliothèque SQLite sur la machine. Vous pouvez consulter la section d'installation SQLite pour le processus d'installation.
Ce qui suit sont les importants programmes d'interface ++ / SQLite C & C pour répondre à vos besoins en utilisant la base de données SQLite en C / C ++. Si vous avez besoin de plus de détails, s'il vous plaît voir la documentation officielle de SQLite.
序号 | API & 描述 |
---|---|
1 | sqlite3_open(const char *filename, sqlite3 **ppDb) 该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。 如果filename参数是 NULL 或 ':memory:',那么 sqlite3_open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。 如果文件名 filename 不为 NULL,那么 sqlite3_open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3_open() 将创建一个新的命名为该名称的数据库文件并打开。 |
2 | sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg) 该例程提供了一个执行 SQL 命令的快捷方式,SQL 命令由 sql 参数提供,可以由多个 SQL 命令组成。 在这里,第一个参数sqlite3是打开的数据库对象,sqlite_callback是一个回调,data作为其第一个参数,errmsg 将被返回用来获取程序生成的任何错误。 sqlite3_exec() 程序解析并执行由sql参数所给的每个命令,直到字符串结束或者遇到错误为止。 |
3 | sqlite3_close(sqlite3*) 该例程关闭之前调用 sqlite3_open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完成。 如果还有查询没有完成,sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息。 |
Le code C extrait suivant montre comment se connecter à une base de données existante. Si la base de données n'existe pas, il est créé, et enfin retourne un objet de base de données.
#include <stdio.h> #include <sqlite3.h> int main (int argc, char * argv []) { sqlite3 * db; char * zErrMsg = 0; int rc; rc = sqlite3_open ( "test.db", & db); if (rc) { fprintf (stderr, "Impossible d'ouvrir la base de données:% s \ n", sqlite3_errmsg (db)); exit (0); } Else { fprintf (stderr, "base de données ouverte \ succès n"); } sqlite3_close (db); }
Maintenant, nous allons compiler et exécuter le programme ci - dessus, créez notretest.db de base de données dans le répertoire courant.Vous pouvez modifier le chemin si nécessaire.
$ Gcc test.c -l sqlite3 $. / A.out base de données ouvert avec succès
Si vous souhaitez utiliser le C ++ code source peut être compilé en conformité avec le code suivant montre:
$ G ++ test.c -l sqlite3
Ici, la bibliothèque de nos liens de programme pour le programme C pour fournir les fonctions nécessaires. Cela va créer un test.db de fichier de base de données dans votre répertoire, vous obtiendrez les résultats suivants:
-rwxr-xr-x. racine 1 racine 7383 8 mai 02h06 a.out -rw-r - r-- 1 root root 323 8 mai 02h05 test.c. -rw-r - r-- 1 root root 0 8 mai 02h06 test.db.
Le code C extrait suivant sera utilisé pour créer une table dans la base de données créée précédemment:
#include <stdio.h> #include <stdlib.h> #include <sqlite3.h> static int callback (void * NOTUSED, int argc, char ** argv, char ** azColName) { int i; for (i = 0; i & lt; argc; i ++) { printf ( "=% s \ n% s", azColName [i], argv [i] argv [i]: "NULL"); } printf ( "\ n"); return 0; } int main (int argc, char * argv []) { sqlite3 * db; char * zErrMsg = 0; int rc; char * sql; / * Ouvrir la base de données * / rc = sqlite3_open ( "test.db", & db); if (rc) { fprintf (stderr, "Impossible d'ouvrir la base de données:% s \ n", sqlite3_errmsg (db)); exit (0); } Else { fprintf (stdout, "base de données ouverte \ succès n"); } / * Création d'instruction SQL * / sql = "CREATE TABLE COMPANY (" \ "ID INT PRIMARY KEY NOT NULL," \ "NAME TEXT NOT NULL," \ "INT NOT NULL AGE," \ "CHAR ADRESSE (50)," \ "REAL SALAIRE);"; / * Exécute instruction SQL * / rc = sqlite3_exec (db, sql, rappel, 0, & zErrMsg); if (rc! = SQLITE_OK) { fprintf (stderr, "Erreur de SQL:% s \ n", zErrMsg); sqlite3_free (zErrMsg); } Else { fprintf (stdout, "Table créée avec succès \ n"); } sqlite3_close (db); return 0; }
Lorsque le programme ci-dessus est compilé et exécuté, il crée la table de l'entreprise dans test.db fichier, la liste finale des fichiers comme suit:
-rwxr-xr-x. racine 1 racine 9567 8 mai 02h31 a.out -rw-r - r-- 1 root root 1207 8 mai 02h31 test.c. -rw-r - r-- 1 root root 3072 8 mai 02h31 test.db.
Le code C extrait suivant montre comment créer des enregistrements dans la table de société créée ci-dessus:
#include <stdio.h> #include <stdlib.h> #include <sqlite3.h> static int callback (void * NOTUSED, int argc, char ** argv, char ** azColName) { int i; for (i = 0; i & lt; argc; i ++) { printf ( "=% s \ n% s", azColName [i], argv [i] argv [i]: "NULL"); } printf ( "\ n"); return 0; } int main (int argc, char * argv []) { sqlite3 * db; char * zErrMsg = 0; int rc; char * sql; / * Ouvrir la base de données * / rc = sqlite3_open ( "test.db", & db); if (rc) { fprintf (stderr, "Impossible d'ouvrir la base de données:% s \ n", sqlite3_errmsg (db)); exit (0); } Else { fprintf (stderr, "base de données ouverte \ succès n"); } / * Création d'instruction SQL * / sql = "INSERT INTO COMPANY (ID, nom, âge, adresse, SALAIRE)" \ "VALUES (1, 'Paul', 32, 'California', 20000.00);" \ "INSERT INTO COMPANY (ID, nom, âge, adresse, SALAIRE)" \ "VALUES (2, 'Allen', 25, 'Texas', 15000.00);" \ "INSERT INTO COMPANY (ID, nom, âge, adresse, SALAIRE)" \ "VALUES (3, 'Teddy', 23,« Norvège », 20000.00);" \ "INSERT INTO COMPANY (ID, nom, âge, adresse, SALAIRE)" \ "VALEURS (4, 'Mark', 25, 'Rich-Mond', 65000.00);"; / * Exécute instruction SQL * / rc = sqlite3_exec (db, sql, rappel, 0, & zErrMsg); if (rc! = SQLITE_OK) { fprintf (stderr, "Erreur de SQL:% s \ n", zErrMsg); sqlite3_free (zErrMsg); } Else { fprintf (stdout, "Les documents créés avec succès \ n"); } sqlite3_close (db); return 0; }
Lorsque le programme ci-dessus est compilé et exécuté, il va créer dans le tableau de la société pour un enregistrement donné, et affiche les deux lignes suivantes:
base de données ouvert avec succès Dossiers créé avec succès
Avant de commencer à expliquer des exemples documentés, laissez-nous d'abord comprendre certains des détails de la fonction de rappel, qui sera notre exemple à utiliser. Ce rappel fournit les résultats obtenus à partir d'une méthode d'instruction SELECT. Il est déclaré comme suit:
typedef int (* sqlite3_callback) ( void *, / * Données fournies dans le quatrième argument du sqlite3_exec () * / int, / * Le nombre de colonnes dans la rangée * / char **, / * Un tableau de chaînes représentant les champs dans la ligne * / char ** / * Un tableau de chaînes représentant les noms de colonnes * / );
Si le rappel ci-dessus comme le troisième paramètre dans la procédure sqlite_exec (), puis SQLite SQL pour chaque enregistrement dans les paramètres de chaque processus d'exécution de l'instruction SELECT appelle la fonction de rappel.
Le code C extrait suivant montre comment obtenir de la table de société créée plus tôt et affiche l'enregistrement:
#include <stdio.h> #include <stdlib.h> #include <sqlite3.h> static int callback (vides de données *, int argc, char ** argv, char ** azColName) { int i; fprintf (stderr, "% s:", (const char *) données); for (i = 0; i & lt; argc; i ++) { printf ( "=% s \ n% s", azColName [i], argv [i] argv [i]: "NULL"); } printf ( "\ n"); return 0; } int main (int argc, char * argv []) { sqlite3 * db; char * zErrMsg = 0; int rc; char * sql; données const char * = "Fonction de rappel appelée"; / * Ouvrir la base de données * / rc = sqlite3_open ( "test.db", & db); if (rc) { fprintf (stderr, "Impossible d'ouvrir la base de données:% s \ n", sqlite3_errmsg (db)); exit (0); } Else { fprintf (stderr, "base de données ouverte \ succès n"); } / * Création d'instruction SQL * / sql = "SELECT * from COMPANY"; / * Exécute instruction SQL * / rc = sqlite3_exec (db, sql, rappel, (void *) données, et zErrMsg); if (rc! = SQLITE_OK) { fprintf (stderr, "Erreur de SQL:% s \ n", zErrMsg); sqlite3_free (zErrMsg); } Else { fprintf (stdout, "Opération effectuée avec succès \ n"); } sqlite3_close (db); return 0; }
Lorsque le programme ci-dessus est compilé et exécuté, il produit le résultat suivant:
base de données ouvert avec succès Fonction de rappel appelée: ID = 1 NAME = Paul AGE = 32 ADDRESS = Californie SALAIRE = 20000.0 Fonction de rappel appelée: ID = 2 NAME = Allen AGE = 25 ADDRESS = Texas SALAIRE = 15000.0 Fonction de rappel appelée: ID = 3 NAME = Teddy AGE = 23 ADDRESS = Norvège SALAIRE = 20000.0 Fonction de rappel appelée: ID = 4 NAME = Mark AGE = 25 ADDRESS = Rich-Mond SALAIRE = 65000,0 Opération effectuée avec succès
Le code C extrait suivant montre comment utiliser l'instruction UPDATE pour mettre à jour tous les dossiers, puis obtenir à partir du tableau de l'entreprise et afficher l'enregistrement mis à jour:
#include <stdio.h> #include <stdlib.h> #include <sqlite3.h> static int callback (vides de données *, int argc, char ** argv, char ** azColName) { int i; fprintf (stderr, "% s:", (const char *) données); for (i = 0; i & lt; argc; i ++) { printf ( "=% s \ n% s", azColName [i], argv [i] argv [i]: "NULL"); } printf ( "\ n"); return 0; } int main (int argc, char * argv []) { sqlite3 * db; char * zErrMsg = 0; int rc; char * sql; données const char * = "Fonction de rappel appelée"; / * Ouvrir la base de données * / rc = sqlite3_open ( "test.db", & db); if (rc) { fprintf (stderr, "Impossible d'ouvrir la base de données:% s \ n", sqlite3_errmsg (db)); exit (0); } Else { fprintf (stderr, "base de données ouverte \ succès n"); } / * Création d'instruction SQL fusionnée * / sql = "UPDATE COMPANY défini SALAIRE = 25000.00 où ID = 1;" \ "SELECT * de COMPANY"; / * Exécute instruction SQL * / rc = sqlite3_exec (db, sql, rappel, (void *) données, et zErrMsg); if (rc! = SQLITE_OK) { fprintf (stderr, "Erreur de SQL:% s \ n", zErrMsg); sqlite3_free (zErrMsg); } Else { fprintf (stdout, "Opération effectuée avec succès \ n"); } sqlite3_close (db); return 0; }
Lorsque le programme ci-dessus est compilé et exécuté, il produit le résultat suivant:
base de données ouvert avec succès Fonction de rappel appelée: ID = 1 NAME = Paul AGE = 32 ADDRESS = Californie SALAIRE = 25000,0 Fonction de rappel appelée: ID = 2 NAME = Allen AGE = 25 ADDRESS = Texas SALAIRE = 15000.0 Fonction de rappel appelée: ID = 3 NAME = Teddy AGE = 23 ADDRESS = Norvège SALAIRE = 20000.0 Fonction de rappel appelée: ID = 4 NAME = Mark AGE = 25 ADDRESS = Rich-Mond SALAIRE = 65000,0 Opération effectuée avec succès
Le code C extrait suivant montre comment utiliser l'instruction DELETE supprime tous les enregistrements, puis repris dans le tableau de l'entreprise et affiche l'enregistrement restant:
#include <stdio.h> #include <stdlib.h> #include <sqlite3.h> static int callback (vides de données *, int argc, char ** argv, char ** azColName) { int i; fprintf (stderr, "% s:", (const char *) données); for (i = 0; i <argc; i ++) { printf ( "=% s \ n% s", azColName [i], argv [i] argv [i]: "NULL"); } printf ( "\ n"); return 0; } int main (int argc, char * argv []) { sqlite3 * db; char * zErrMsg = 0; int rc; char * sql; données const char * = "Fonction de rappel appelée"; / * Ouvrir la base de données * / rc = sqlite3_open ( "test.db", & db); if (rc) { fprintf (stderr, "Impossible d'ouvrir la base de données:% s \ n", sqlite3_errmsg (db)); exit (0); } Else { fprintf (stderr, "base de données ouverte \ succès n"); } / * Création d'instruction SQL fusionnée * / sql = "DELETE d'entreprise où ID = 2;" \ "SELECT * de COMPANY"; / * Exécute instruction SQL * / rc = sqlite3_exec (db, sql, rappel, (void *) données, et zErrMsg); if (rc! = SQLITE_OK) { fprintf (stderr, "Erreur de SQL:% s \ n", zErrMsg); sqlite3_free (zErrMsg); } Else { fprintf (stdout, "Opération effectuée avec succès \ n"); } sqlite3_close (db); return 0; }
Lorsque le programme ci-dessus est compilé et exécuté, il produit le résultat suivant:
base de données ouvert avec succès Fonction de rappel appelée: ID = 1 NAME = Paul AGE = 32 ADDRESS = Californie SALAIRE = 20000.0 Fonction de rappel appelée: ID = 3 NAME = Teddy AGE = 23 ADDRESS = Norvège SALAIRE = 20000.0 Fonction de rappel appelée: ID = 4 NAME = Mark AGE = 25 ADDRESS = Rich-Mond SALAIRE = 65000,0 Opération effectuée avec succès