120 likes | 226 Views
2. DB-API: Programmierschnittstellen zu Datenbanken. 2.1 ODBC. proprietäre DB-APIs. Anwendung. passt. passt nicht. SYBASE API. ORACLE OCI. INGRES API. ORACLE-DB. INGRES-DB. SYBASE-DB. ODBC-Konzept. Anwendung. passt. passt. ODBC Treiber. ODBC Treiber. ODBC Treiber. SYBASE API.
E N D
2. DB-API: Programmierschnittstellen zu Datenbanken 2.1 ODBC
proprietäre DB-APIs Anwendung passt passt nicht SYBASE API ORACLE OCI INGRES API ORACLE-DB INGRES-DB SYBASE-DB
ODBC-Konzept Anwendung passt passt ODBC Treiber ODBC Treiber ODBC Treiber SYBASE API ORACLE OCI INGRES API ORACLE-DB INGRES-DB SYBASE-DB
ODBC = Open DataBase Connectivity • Initiator: Microsoft und andere • Zweck: Einheitliche API für verschiedene DBMS(API = Application Program Interface) • CLI = Call Level InterfaceImplementierung der Definition der X/Open Group • Sammlung von C-Funktionen • Grundlage: Client-Server Architektur • Komponenten von ODBC: • Treiber-Manager • je ein Treiber für jedes DBMS
ODBC-Umgebung einrichten DB-Aktionen aufrufen passenden Treiber aktivieren Übersetzung Netzwerkkommunikation Komponenten von ODBC ODBC-Treiber Manager Anwendung ODBC-Treiber ODBC-Treiber2 OCI-Bibliothek Oracle DB-Server
Handle zeigt auf Info Speicherplatz reservieren Zugriff Trägt Info ein Handle-Konzept SQLAllocStmt(..., &hstmt) hstmt SQLBindColumn(hstmt,... Inhalt Handle SQLExecDirect(hstmt,... ODBC-Treiber
ODBC-Funktionen:Umgebungs- u. Verbindungshandle • ODBC-API einbinden#include <odbcinst.h> • Umgebungshandle einrichtenHENV handlevariable_environment;SQLAllocEnv(&handlevariable_environment) • Verbindungshandle einrichten:HDBC handlevariable_Verbindung;SQLAllocConnect (handlevariable_environment, &handlevariable_verbindung)
ODBC-Funktionen:Verbindungsaufbau zur Datenbank SQLConnect(handlevariable_verbindung,Datenquellenname /* logischer Name der Datenbank */,Art_Zeichenkette /* z.B. SQL_NTS = Null Terminatet String */,Benutzername /* z.B. "dapro01" */, Länge_Benutzername /* z.B. 15 */,Passwort,Länge_Passwort /* z.B. 14 */)
ODBC-Funktionen:SQL-Anweisung senden • Anweisungshandle einrichtenHSTMT handlevariable_anweisung; SQLAllocStmt(handlevariable_verbindung, &handlevariable_anweisung); • SQL-Anweisung ausführenSQLExecDirect(handlevariable_anweisung, string_mit_SQL_Anweisung, Art_Zeichenkette);
ODBC-Funktionen:Suchergebnisse mit Cursor holen • Bindung von Tabellenspalten zu C-VariablenSQLBindCol( handlevariable_anweisung, Spaltennummer /* z.B. 1 */, Datentyp_der_Spalte, &Zielvariable, sizeof(Zielvariable), &Datenlänge) • Nächsten Datensatz holenSQLFetch(handlevariable_anweisung)
ODBC-Funktionen:Spalten holen • Eine Spalte des aktuellen Datensatzes holenSQLGetData(handlevariable_anweisung, Spaltennummer,Datentyp_der_Spalte,&Zielvariable, sizeof(&Zielvariable),&Datenlänge);
ODBC-Funktionen:Abfrage vorbereiten • Abfrage vorbereitenSQLPrepare(handlevariable_anweisung,string_mit_SQL_Anweisung, Art_Zeichenkette); • Vorbereitete Abfrage ausführenSQLExecute(handlevariable_anweisung);