Maison> développement back-end> C++> le corps du texte

SQL utilisant C/C++ et SQLite

WBOY
Libérer: 2023-09-19 19:49:02
avant
655 Les gens l'ont consulté

SQL utilisant C/C++ et SQLite

Dans cette section, vous apprendrez à utiliser SQLite dans les programmes C/C++.

Installation

Avant de commencer à utiliser SQLite dans votre programme C/C++, vous devez vous assurer que la bibliothèque SQLite est configurée sur votre ordinateur. Vous pouvez consulter le chapitre sur l'installation de SQLite pour comprendre le processus d'installation.

API d'interface C/C++

Voici les routines d'interface C/C++ SQLite importantes qui peuvent répondre à vos exigences en matière d'utilisation de bases de données SQLite à partir de vos programmes C/C++. Si vous recherchez une application plus complexe, vous pouvez consulter la documentation officielle de SQLite.

Numéro de série API et description
1
sqlite3_open(const char *filename, sqlite3 **ppDb)
Copier après la connexion
Cette routine ouvre une connexion à un fichier de base de données SQLite et renvoie un objet de connexion à la base de données à utiliser par d'autres routines SQLite.

Si le paramètrefilenameest NULL ou ':memory:', sqlite3_open() créera une base de données en mémoire dans la RAM qui ne durera que pendant la durée de la session.

Si le nom de fichier n'est pas NULL, sqlite3_open() tente d'ouvrir le fichier de base de données en utilisant sa valeur. Si un fichier portant ce nom n'existe pas, sqlite3_open() ouvrira un nouveau fichier de base de données portant ce nom.

2
sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)
Copier après la connexion
Cette routine fournit un moyen rapide et facile d'exécuter une commande SQL fournie par le paramètre sql, qui peut contenir plusieurs commandes SQL.

Ici, le premier paramètresqlite3< /em> est un objet de base de données ouvert, sqlite_callback est un rappel où data est le premier paramètre, et errmsg sera renvoyé pour détecter toutes les erreurs générées par la routine. La routine

SQLite3_exec() analyse et exécute chaque commande donnée dans l'argumentsqljusqu'à ce que la fin de la chaîne soit atteinte ou qu'une erreur soit rencontrée.

3
sqlite3_close(sqlite3*)
Copier après la connexion
Cette routine ferme une connexion à la base de données qui a été précédemment ouverte en appelant sqlite3_open(). Toutes les instructions préparées liées à la connexion doivent être complétées avant de fermer la connexion.

S'il y a encore des requêtes qui ne sont pas terminées, sqlite3_close() renverra SQLITE_BUSY et affichera le message d'erreur Impossible de fermer en raison d'instructions inachevées.

Connexion à une base de données

L'extrait de code C suivant montre comment se connecter à une base de données existante. Si la base de données n'existe pas, créez la base de données et renvoyez enfin l'objet de base de données.

Exemple de code

#include  #include  int main(int argc, char* argv[]) { sqlite3 *db; char *zErrMsg = 0; int rc; rc = sqlite3_open("test.db", &db); if( rc ) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); return(0); } else { fprintf(stderr, "Opened database successfully\n"); } sqlite3_close(db); }
Copier après la connexion

Sortie

$gcc test.c -l sqlite3 $./a.out Opened database successfully
Copier après la connexion

Créer une table

L'extrait de code C suivant sera utilisé pour créer une table dans la base de données précédemment créée -

Exemple de code

#include  #include  #include  static int callback(void *NotUsed, int argc, char **argv, char **azColName) { int i; for(i = 0; i
        
Copier après la connexion

Sortie (vérifier l'état du fichier de base de données) :

-rwxr-xr-x. 1 root root 9567 May 8 02:31 a.out -rw-r--r--. 1 root root 1207 May 8 02:31 test.c -rw-r--r--. 1 root root 3072 May 8 02:31 test.db
Copier après la connexion

Opération d'insertion

L'extrait de code C suivant montre comment créer un enregistrement dans la table COMPANY créée dans l'exemple ci-dessus –

Exemple de code

#include  #include  #include  static int callback(void *NotUsed, int argc, char **argv, char **azColName) { int i; for(i = 0; i
        
Copier après la connexion

Sortie

Opened database successfully Records created successfully
Copier après la connexion

Opération SELECT

Avant de passer à un exemple pratique d'obtention un enregistrement, jetons un coup d'œil Quelques détails sur les fonctions de rappel utilisées dans les exemples. Ce rappel fournit un moyen d'obtenir les résultats d'une instruction SELECT. Il contient l'instruction suivante :

typedef int (*sqlite3_callback)( void*, /* Data provided in the 4th argument of sqlite3_exec() */ int, /* The number of columns in row */ char**, /* An array of strings representing fields in the row */ char** /* An array of strings representing column names */ );
Copier après la connexion

Si le rappel ci-dessus est fourni comme troisième paramètre dans la routine sqlite_exec(), SQLite appellera cette fonction de rappel pour chaque enregistrement traité dans chaque instruction SELECT exécutée dans le paramètre SQL.

L'extrait de code C suivant montre comment obtenir et afficher les enregistrements de la table COMPANY créée dans l'exemple ci-dessus –

Sample Code

#include  #include  #include  static int callback(void *data, int argc, char **argv, char **azColName) { int i; fprintf(stderr, "%s: ", (const char*)data); for(i = 0; i
        
Copier après la connexion

Output

Opened database successfully Callback function called: ID = 1 NAME = Paul AGE = 32 ADDRESS = California SALARY = 20000.0 Callback function called: ID = 2 NAME = Allen AGE = 25 ADDRESS = Texas SALARY = 15000.0 Callback function called: ID = 3 NAME = Teddy AGE = 23 ADDRESS = Norway SALARY = 20000.0 Callback function called: ID = 4 NAME = Mark AGE = 25 ADDRESS = Rich-Mond SALARY = 65000.0 Operation done successfully
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!