Maison développement back-end C++ Utilisation de la base de données Oracle en C++ et de son exemple de code

Utilisation de la base de données Oracle en C++ et de son exemple de code

Aug 22, 2023 pm 03:57 PM
oracle c++ 示例代码

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);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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;
}
Copier après la connexion

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Python vs C: applications et cas d'utilisation comparés Python vs C: applications et cas d'utilisation comparés Apr 12, 2025 am 12:01 AM

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.

Comment créer Oracle Dynamic SQL Comment créer Oracle Dynamic SQL Apr 12, 2025 am 06:06 AM

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.

Comment utiliser les déclencheurs pour Oracle Comment utiliser les déclencheurs pour Oracle Apr 11, 2025 pm 11:57 PM

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.

Comment créer des curseurs dans Oracle Loop Comment créer des curseurs dans Oracle Loop Apr 12, 2025 am 06:18 AM

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.

Comment résoudre le problème de la fermeture d'Oracle Cursor Comment résoudre le problème de la fermeture d'Oracle Cursor Apr 11, 2025 pm 10:18 PM

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.

Comment ouvrir une base de données dans Oracle Comment ouvrir une base de données dans Oracle Apr 11, 2025 pm 10:51 PM

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

Comment résoudre le code brouillé dans Oracle Comment résoudre le code brouillé dans Oracle Apr 11, 2025 pm 10:09 PM

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 et Golang: Lorsque les performances sont cruciales C et Golang: Lorsque les performances sont cruciales Apr 13, 2025 am 12:11 AM

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.

See all articles