Heim > häufiges Problem > Verfügt Oracle über eine API?

Verfügt Oracle über eine API?

小老鼠
Freigeben: 2023-07-06 10:05:04
Original
1159 Leute haben es durchsucht

Oracle hat eine API. Es gibt vier Haupttypen von APIs für Oracle-Datenbanken: 1. OCI-API, eine von Oracle bereitgestellte C-Programmierschnittstelle; 2. JDBC-API, eine API-Bibliothek zum Verbinden von Oracle-Datenbanken in Java; die von Microsoft Unified API-Spezifikation zum Verbinden verschiedener Datenbanken bereitgestellt wird; 4. .NET API usw.

Verfügt Oracle über eine API?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle Version 19c, Dell G3-Computer.

In den letzten Jahren hat die Oracle-Datenbank immer mehr Verbreitung gefunden und ist für viele Unternehmensanwendungssysteme zur ersten Wahl geworden. Als Entwickler ist es sehr wichtig, die API-Entwicklungsfähigkeiten der Oracle-Datenbank zu beherrschen. In diesem Artikel werden die Inhalte der Oracle-API-Entwicklung vorgestellt und einige praktische Beispiele bereitgestellt.

1. Einführung

API vollständiger Name (Application Programming Interface), eine Anwendungsprogrammierschnittstelle. Einfach ausgedrückt ist die API die Schnittstelle für Softwareanwendungen zur Interaktion mit der Außenwelt. Über die API können externe Dateninteraktionen und -aufrufe sowie die Datenübertragung und Kommunikation zwischen verschiedenen Anwendungen und Systemen realisiert werden.

Es gibt vier Hauptkategorien von Oracle-Datenbank-APIs:

(1) OCI-API: Oracle Call Interface, eine von Oracle bereitgestellte Programmierschnittstelle in C-Sprache.

(2) JDBC API: Java Database Connectivity, ist eine API-Bibliothek zum Verbinden der Oracle-Datenbank in der Java-Sprache.

(3) ODBC API: Open Database Connectivity ist eine einheitliche API-Spezifikation von Microsoft zur Verbindung verschiedener Datenbanken.

(4) .NET API: Von Microsoft .NET Framework bereitgestellte API-Bibliothek zur Verbindung mit der Oracle-Datenbank.

Hier werden wir hauptsächlich die OCI-API vorstellen.

2. OCI API

OCI API ist Oracle Call Interface, die C-Sprachprogrammierschnittstelle der Oracle-Datenbank. OCI API ist eine effiziente und leistungsstarke API-Bibliothek, die mehrere Sprachen unterstützt.

OCI ermöglicht die Interaktion mit der Oracle-Datenbank, indem es der Anwendung eine Reihe von Bibliotheksfunktionen bereitstellt und es der Anwendung ermöglicht, diese Funktionen zur Laufzeit aufzurufen. Das Programmiermodell von OCI ähnelt der Standard-E/A-Funktionsbibliothek in C-Sprache, sodass Programmierer mit C-Sprache schnell loslegen können.

Das OCI-Installationspaket finden Sie auf der offiziellen Oracle-Website oder auf der Oracle-Installations-CD. Fügen Sie nach der Installation include, lib, oraclnt.dll zu Ihrem Projekt hinzu.

Wenn Sie VS Code verwenden, können Sie Visual Studio Code verwenden, um Oracle-Datenbankoperationen zu integrieren und die OCI-API in die Anwendung zu integrieren.

Werfen wir einen Blick auf einige praktische Anwendungsbeispiele für die OCI-API.

3. OCI-API-Nutzungsbeispiele

3.1 Herstellen einer Verbindung zur Oracle-Datenbank

Das Herstellen einer Verbindung zur Oracle-Datenbank ist einer der grundlegendsten Vorgänge der OCI-API. Schauen wir uns zunächst einen einfachen Code zum Herstellen einer Verbindung zur Oracle-Datenbank an.

#include 
#include 
#include 
#define USERNAME "scott"
#define PASSWORD "tiger"
#define DATABASE "orcl"
#define SQLSTR "select * from emp"
 
int mn(int argc, char *argv[])
{
    OCIEnv *envhp;          // 环境句柄
    OCIError *errhp;        // 错误句柄
    OCISvcCtx *svchp;       // 服务上下文句柄
    OCIServer *srvhp;       // 服务器句柄
    OCISession *authp;      // 验证句柄
    OCIStmt *stmthp;        // 语句句柄
    OCIDefine *defnp;       // 取值句柄
    sword errcode;
    text errbuf[512];
    ub4 errlen;
    ub2 rcount;
    ub4 empno;
 
    if (OCIEnvCreate(&envhp, OCI_DEFAULT, (dvoid *)0, (dvoid *(*)(dvoid *, size_t))0, (dvoid *(*)(dvoid *, dvoid *, size_t))0, (void (*)(dvoid *, dvoid *))0, (size_t)0, (dvoid **)0))
    {
        printf("OCIEnvCreate Error!\n");
        return 0;
    }
 
    OCIHandleAlloc(envhp, (dvoid **)&errhp, OCI_HTYPE_ERROR, 0, (dvoid **)0);
 
    OCIHandleAlloc(envhp, (dvoid **)&svchp, OCI_HTYPE_SVCCTX, 0, (dvoid **)0);
    OCIHandleAlloc(envhp, (dvoid **)&srvhp, OCI_HTYPE_SERVER, 0, (dvoid **)0);
    OCIHandleAlloc(envhp, (dvoid **)&authp, OCI_HTYPE_SESSION, 0, (dvoid **)0);
    OCIHandleAlloc(envhp, (dvoid **)&stmthp, OCI_HTYPE_STMT, 0, (dvoid **)0);
 
    if (OCIServerAttach(srvhp, errhp, (text *)DATABASE, strlen(DATABASE), OCI_DEFAULT) != OCI_SUCCESS)
    {
        OCIErrorGet(errhp, 1, (text *)0, &errcode, errbuf, sizeof(errbuf), OCI_HTYPE_ERROR);
        printf("OCIServerAttach Error: %s\n", errbuf);
        return 0;
    }
 
    OCIAttrSet(svchp, OCI_HTYPE_SVCCTX, (dvoid *)srvhp, (ub4)0, OCI_ATTR_SERVER, errhp);
 
    OCIAttrSet(authp, OCI_HTYPE_SESSION, (dvoid *)USERNAME, strlen(USERNAME), OCI_ATTR_USERNAME, errhp);
    OCIAttrSet(authp, OCI_HTYPE_SESSION, (dvoid *)PASSWORD, strlen(PASSWORD), OCI_ATTR_PASSWORD, errhp);
 
    if (OCISessionBegin(svchp, errhp, authp, OCI_CRED_RDBMS, OCI_DEFAULT))
    {
        OCIErrorGet(errhp, 1, (text *)0, &errcode, errbuf, sizeof(errbuf), OCI_HTYPE_ERROR);
        printf("OCISessionBegin Error:%s\n", errbuf);
        return 0;
    }
 
    OCIAttrSet(svchp, OCI_HTYPE_SVCCTX, (dvoid *)authp, (ub4)0, OCI_ATTR_SESSION, errhp);
 
    if (OCIStmtPrepare(stmthp, errhp, (text *)SQLSTR, strlen(SQLSTR), OCI_NTV_SYNTAX, OCI_DEFAULT))
    {
        OCIErrorGet(errhp, 1, (text *)0, &errcode, errbuf, sizeof(errbuf), OCI_HTYPE_ERROR);
        printf("OCIStmtPrepare Error:%s\n", errbuf);
        return 0;
    }
 
    if (OCIStmtExecute(svchp, stmthp, errhp, 1, 0, NULL, NULL, OCI_STMT_SCROLLABLE_READ_ONLY))
    {
        OCIErrorGet(errhp, 1, (text *)0, &errcode, errbuf, sizeof(errbuf), OCI_HTYPE_ERROR);
        printf("OCIStmtExecute Error:%s\n", errbuf);
        return 0;
    }
 
    while ((errcode = OCIStmtFetch(stmthp, errhp, 1, OCI_FETCH_NEXT, OCI_DEFAULT)) == OCI_SUCCESS)
    {
        OCIAttrGet(stmthp, OCI_HTYPE_STMT, (dvoid *)&empno, NULL, OCI_ATTR_ROWID, errhp);
        printf("%d\n", empno);
    }
 
    OCISessionEnd(svchp, errhp, authp, OCI_DEFAULT);
    OCIServerDetach(srvhp, errhp, OCI_DEFAULT);
 
    OCIHandleFree(errhp, OCI_HTYPE_ERROR);
    OCIHandleFree(srvhp, OCI_HTYPE_SERVER);
    OCIHandleFree(svchp, OCI_HTYPE_SVCCTX);
    OCIHandleFree(authp, OCI_HTYPE_SESSION);
    OCIHandleFree(stmthp, OCI_HTYPE_STMT);
 
    OCIEnvFree(envhp);
 
    return 0;
}
Nach dem Login kopieren

Der obige Code verwendet OCI, um eine Verbindung zur Oracle-Datenbank herzustellen und Datenabfragevorgänge über OCI-Anweisungshandles zu implementieren.

3.2 Daten einfügen

Die OCI-API kann die Funktionen OCIStmtPrepare und OCIStmtExecute verwenden, um Daten in die Datenbank einzufügen. Der Code lautet wie folgt:

char *insert_sql = "insert into emp values(:empno, :ename, :job, :mgr, :hiredate, :sal, :comm, :deptno)";
OCIBind *bind[8];
struct tm *p_tm;
time_t tm = time(NULL);
p_tm = localtime(&tm);
OCIDate o_hire;
OCIDateTime *p_hire;
OCIDescriptor *p_dt = NULL;
OCIStmtPrepare(stmthp, errhp, (text *)insert_sql, strlen(insert_sql), OCI_NTV_SYNTAX, OCI_DEFAULT);
OCIDescriptorAlloc(envhp, &p_dt, OCI_DTYPE_TIMESTAMP, 0, NULL);
OCIDateTimeConstruct(envhp, errhp, p_dt, p_tm->tm_year + 1900, p_tm->tm_mon + 1, p_tm->tm_mday, p_tm->tm_hour, p_tm->tm_min, p_tm->tm_sec, 0, NULL, 0);
OCIDateTimeToOracle(envhp, p_dt, &o_hire);
// 绑定 empno 参数
OCIBindByName(stmthp, &bind[0], errhp, (text *)":empno", -1, &empno, sizeof(empno), SQLT_INT, NULL, NULL, NULL, 0, NULL, OCI_DEFAULT);
// 绑定 ename 参数
OCIBindByName(stmthp, &bind[1],
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonVerfügt Oracle über eine API?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage