


Utilisation de la base de données Oracle en C++ et de son exemple de code
Oracle est un puissant système de gestion de base de données relationnelle. L'utilisation de la base de données Oracle en C++ peut nous aider à gérer la base de données plus efficacement. Cet article explique comment utiliser la base de données Oracle et l'exemple de code associé en C++.
1. Installez et configurez le pilote de base de données Oracle
Avant d'utiliser la base de données Oracle, vous devez installer le pilote Oracle correspondant. Oracle fournit officiellement les pilotes ODBC, que nous pouvons télécharger et installer depuis le site officiel.
Une fois l'installation terminée, accédez à Panneau de configuration -> Outils de gestion -> Source de données (ODBC). Vous pouvez voir le pilote ODBC dans « Pilotes ». Nous devons sélectionner le pilote correspondant et le configurer.
Entrez l'alias de la base de données Oracle à laquelle vous souhaitez vous connecter dans "Nom de la source de données", tel que "orcl". Entrez le nom d'hôte ou l'adresse IP pour vous connecter à la base de données dans "Nom du serveur". Saisissez le nom d'utilisateur pour vous connecter à la base de données dans « ID utilisateur » et saisissez le mot de passe correspondant dans Mot de passe. Cliquez sur le bouton "Test de connexion". S'il affiche "Connexion réussie", la connexion est réussie.
2. Utilisation de la base de données Oracle
Pour utiliser la base de données Oracle en C++, vous devez introduire le fichier d'en-tête Oracle et définir les paramètres appropriés.
1. Inclusion du fichier d'en-tête
Tout d'abord, vous devez inclure les fichiers d'en-tête oci.h et oci.cpp. Ces deux fichiers d'en-tête se trouvent dans le répertoire OCI/include sous le répertoire d'installation d'Oracle.
2. Lier les fichiers de la bibliothèque Oracle
Vous devez lier les fichiers de la bibliothèque Oracle, notamment oci.lib, ociw32.lib et orannzsbb11.dll, etc.
3. Créer un handle OCI
Le handle OCI est un mécanisme de gestion de la mémoire fourni par Oracle. Le handle OCI est utilisé pour gérer la connexion et l'interaction entre la bibliothèque OCILIB et les services Oracle (instructions SQL).
Lorsque vous utilisez le handle OCI, vous devez d'abord en faire la demande, puis le configurer selon vos besoins. Les handles OCI couramment utilisés incluent :
(1) Handle d’environnement : OCIEnv.
(2) Handle de service : OCISvcCtx.
(3) Descripteur de session : OCISession.
(4) Descripteur de déclaration : OCIStmt.
(5) Handle de l’ensemble de résultats : OCIDefine, OCIParam.
Voici le code à appliquer pour le handle d'environnement OCI, le handle de service, le handle de session et le handle d'instruction :
OCIEnv* envhp; OCIStmt* stmthp; OCIServer* srvhp; OCISession* sesshp; //申请环境句柄 int err = OCIEnvCreate(&envhp, OCI_THREADED|OCI_OBJECT, (dvoid*)0, (dvoid*(*)(dvoid*, size_t))0, (dvoid*(*)(dvoid*, dvoid*, size_t))0, (void(*)(dvoid*, dvoid*))0, (size_t)0, (dvoid**)0); //申请服务句柄 err = OCIHandleAlloc(envhp, (dvoid**)&srvhp, OCI_HTYPE_SERVER, (size_t)0, (dvoid**)0); //申请会话句柄 err = OCIHandleAlloc(envhp, (dvoid**)&sesshp, OCI_HTYPE_SESSION, (size_t)0, (dvoid**)0); //申请语句句柄 err = OCIHandleAlloc(envhp, (dvoid**)&stmthp, OCI_HTYPE_STMT, (size_t)0, (dvoid**)0);
4 Connectez-vous à la base de données Oracle
Vous devez d'abord définir le nom de service d'OCIServer, puis appeler OCILogon2. fonction pour se connecter à la base de données Oracle. Voici le code pour vous connecter à la base de données Oracle :
//设置服务名称 const char* db_name = "orcl"; err = OCIAttrSet(srvhp, OCI_HTYPE_SERVER, (dvoid*)db_name, strlen(db_name), OCI_ATTR_SERVER_NAME, envhp); //连接数据库 const char* user_name = "scott";//连接的用户名 const char* password = "tiger";//连接的密码 const char* dblink = 0;//连接方式 ub4 dblink_len = 0; err = OCILogon2(envhp, errhp, &sesshp, (CONST OraText*)user_name, strlen(user_name), (CONST OraText*)password, strlen(password), (CONST OraText*)dblink, (ub4)dblink_len, (CONST OraText*)0, 0);
5. Exécuter les instructions SQL
Vous devez utiliser le handle OCIStmt et le handle OCIDefine pour exécuter l'instruction SQL. Le handle OCIStmt est utilisé pour préparer les instructions SQL et le handle OCIDefine est utilisé pour définir les variables de sortie.
Ce qui suit est le code pour exécuter l'instruction SQL :
//定义SQL语句 const char* sql = "select empno from emp where empno=:1"; err = OCIStmtPrepare(stmthp, errhp, (CONST OraText*)sql, strlen(sql), OCI_NTV_SYNTAX, OCI_DEFAULT); //绑定输入参数 ub2 empno = 7900; err = OCIBindByPos(stmthp, &bindhp, errhp, 1, &empno, sizeof(empno), SQLT_INT, 0, 0, 0, 0, 0, OCI_DEFAULT); //执行SQL语句 err = OCIStmtExecute(svchp, stmthp, errhp, 1, 0, 0, 0, OCI_DEFAULT); //定义输出变量 ub2 out_empno; ub2 ind; sb2 out_len; ERRCALL(OCIDefineByPos(stmthp, &dfnhp, errhp, 1, (dvoid*)&out_empno, sizeof(out_empno), SQLT_INT, &ind, &out_len, 0, OCI_DEFAULT)); //获取结果 err = OCIStmtFetch(stmthp, errhp, 1, OCI_FETCH_NEXT, OCI_DEFAULT);
3. Exemple de code
Ce qui suit est le code complet pour se connecter à la base de données Oracle et exécuter l'instruction SQL :
#include<iostream> #include<occi.h> #include<oci.h> using namespace std; using namespace oracle::occi; int main() { OCIEnv *envhp; OCIStmt *stmthp; OCIServer *srvhp; OCISession *sesshp; // 申请OCI环境句柄 int err = OCIEnvCreate(&envhp, OCI_THREADED|OCI_OBJECT, (dvoid*)0, (dvoid*(*)(dvoid*, size_t))0, (dvoid*(*)(dvoid*, dvoid*, size_t))0, (void(*)(dvoid*, dvoid*))0, (size_t)0, (dvoid**)0); // 申请服务句柄 err = OCIHandleAlloc(envhp, (dvoid**)&srvhp, OCI_HTYPE_SERVER, (size_t)0, (dvoid**)0); // 申请会话句柄 err = OCIHandleAlloc(envhp, (dvoid**)&sesshp, OCI_HTYPE_SESSION, (size_t)0, (dvoid**)0); // 申请语句句柄 err = OCIHandleAlloc(envhp, (dvoid**)&stmthp, OCI_HTYPE_STMT, (size_t)0, (dvoid**)0); // 设置服务名称 const char* db_name = "orcl"; err = OCIAttrSet(srvhp, OCI_HTYPE_SERVER, (dvoid*)db_name, strlen(db_name), OCI_ATTR_SERVER_NAME, envhp); // 连接数据库 const char* user_name = "scott";//连接的用户名 const char* password = "tiger";//连接的密码 const char* dblink = 0;//连接方式 ub4 dblink_len = 0; err = OCILogon2(envhp, errhp, &sesshp, (CONST OraText*)user_name, strlen(user_name), (CONST OraText*)password, strlen(password), (CONST OraText*)dblink, (ub4)dblink_len, (CONST OraText*)0, 0); // 执行SQL语句 const char* sql = "select empno from emp where empno=:1"; err = OCIStmtPrepare(stmthp, errhp, (CONST OraText*)sql, strlen(sql), OCI_NTV_SYNTAX, OCI_DEFAULT); ub2 empno = 7900;// 输入的empno OCIBind* bindhp; err = OCIBindByPos(stmthp, &bindhp, errhp, 1, &empno, sizeof(empno), SQLT_INT, 0, 0, 0, 0, 0, OCI_DEFAULT); OCIDefine* dfnhp; ub2 out_empno; ub2 ind; sb2 out_len; ERRCALL(OCIDefineByPos(stmthp, &dfnhp, errhp, 1, (dvoid*)&out_empno, sizeof(out_empno), SQLT_INT, &ind, &out_len, 0, OCI_DEFAULT)); err = OCIStmtExecute(svchp, stmthp, errhp, 1, 0, 0, 0, OCI_DEFAULT); err = OCIStmtFetch(stmthp, errhp, 1, OCI_FETCH_NEXT, OCI_DEFAULT); while(err == OCI_SUCCESS) { cout << out_empno << endl; err = OCIStmtFetch(stmthp, errhp, 1, OCI_FETCH_NEXT, OCI_DEFAULT); } // 断开连接 OCILogoff(sesshp, envhp); OCIHandleFree(srvhp, OCI_HTYPE_SERVER); OCIHandleFree(sesshp, OCI_HTYPE_SESSION); OCIHandleFree(stmthp, OCI_HTYPE_STMT); OCIHandleFree(envhp, OCI_HTYPE_ENV); return 0; }
Ce qui précède est l'utilisation de la base de données Oracle et son exemple de code en C++, j'espère qu'il sera utile à tout le monde.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Python convient à la science des données, au développement Web et aux tâches d'automatisation, tandis que C convient à la programmation système, au développement de jeux et aux systèmes intégrés. Python est connu pour sa simplicité et son écosystème puissant, tandis que C est connu pour ses capacités de contrôle élevées et sous-jacentes.

Les instructions SQL peuvent être créées et exécutées en fonction de l'entrée d'exécution en utilisant Dynamic SQL d'Oracle. Les étapes comprennent: la préparation d'une variable de chaîne vide pour stocker des instructions SQL générées dynamiquement. Utilisez l'instruction EXECUTER IMMÉDIATE OU PRÉPEPART pour compiler et exécuter les instructions SQL dynamiques. Utilisez la variable Bind pour passer l'entrée utilisateur ou d'autres valeurs dynamiques à Dynamic SQL. Utilisez EXECUTER immédiat ou exécuter pour exécuter des instructions SQL dynamiques.

Les déclencheurs d'Oracle sont des procédures stockées utilisées pour effectuer automatiquement des opérations après un événement spécifique (insérer, mettre à jour ou supprimer). Ils sont utilisés dans une variété de scénarios, notamment la vérification des données, l'audit et la maintenance des données. Lors de la création d'un déclencheur, vous devez spécifier le nom de déclenchement, la table d'association, l'événement de déclenchement et le temps de déclenchement. Il existe deux types de déclencheurs: le déclencheur avant est tiré avant l'opération, et le déclencheur après est tiré après l'opération. Par exemple, le déclencheur avant l'insertion garantit que la colonne d'âge de la ligne insérée n'est pas négative.

Dans Oracle, la boucle pour la boucle pour créer des curseurs dynamiquement. Les étapes sont: 1. Définissez le type de curseur; 2. Créez la boucle; 3. Créez le curseur dynamiquement; 4. Exécuter le curseur; 5. Fermez le curseur. Exemple: un curseur peut être créé de cycle par circuit pour afficher les noms et salaires des 10 meilleurs employés.

La méthode pour résoudre le problème de fermeture du curseur Oracle comprend: la fermeture explicite du curseur à l'aide de l'instruction Close. Déclarez le curseur dans la clause de mise à jour pour la fermeture automatiquement après la fin de la portée. Déclarez le curseur dans la clause d'utilisation afin qu'il se ferme automatiquement lorsque la variable PL / SQL associée est fermée. Utilisez la gestion des exceptions pour vous assurer que le curseur est fermé dans toute situation d'exception. Utilisez le pool de connexion pour fermer automatiquement le curseur. Désactiver la soumission automatique et le délai de fermeture du curseur.

Les étapes pour ouvrir une base de données Oracle sont les suivantes: Ouvrez le client de la base de données Oracle et connectez-vous au serveur de base de données: Connectez le nom d'utilisateur / mot de passe @ servername Utilisez la commande SQLPLUS pour ouvrir la base de données: SQLPlus

Oracle Bragled Les problèmes peuvent être résolus en vérifiant le jeu de caractères de la base de données pour s'assurer qu'ils correspondent aux données. Définissez le jeu de caractères client pour correspondre à la base de données. Convertir les données ou modifier les jeux de caractères de colonne pour faire correspondre les jeux de caractères de base de données. Utilisez des jeux de caractères Unicode et évitez les jeux de caractères mulabyte. Vérifiez que les paramètres de langue de la base de données et du client sont corrects.

C est plus adapté aux scénarios où le contrôle direct des ressources matérielles et une optimisation élevée de performances sont nécessaires, tandis que Golang est plus adapté aux scénarios où un développement rapide et un traitement de concurrence élevé sont nécessaires. 1.C's Avantage est dans ses caractéristiques matérielles proches et à des capacités d'optimisation élevées, qui conviennent aux besoins de haute performance tels que le développement de jeux. 2. L'avantage de Golang réside dans sa syntaxe concise et son soutien à la concurrence naturelle, qui convient au développement élevé de services de concurrence.
