ODBC-Objekte in CONZEPT 16

Bei ODBC (Open Database Connectivity) handelt es sich um eine standardisierte Datenbankschnittstelle, die SQL als Datenbanksprache verwendet. Somit bietet ODBC dem Programmierer eine Programmschnittstelle, welche es ihm erlaubt einen unkomplizierten Zugriff auf sehr unterschiedliche Datenbank-Verwaltungssysteme zu erhalten. Welche SQL-Befehle unterstützt werden, hängt vom jeweiligen ODBC-Treiber ab. CONZEPT 16 stellt auch diese Schnittstelle bereit, die es ermöglicht auf die CONZEPT 16-Datenbank zuzugreifen. Ebenfalls ist der Zugriff auf andere Datenbankmanagementsysteme über deren Datenquellen mit den Befehlen für ODBC-Verbindungen möglich.


Um vom CONZEPT 16-Client aus externe Datenquellen ansprechen zu können, muss eine entsprechende Datenquelle beim ODBC-Datenquellen-Manager eingerichtet sein. Näheres zum Einrichten einer Datenquelle kann in der Online-Dokumentation nachgelesen werden.

ODBC-Schnittstelle öffnen:

Die ODBC-Schnittstelle wird mit der Anweisung OdbcOpen() initialisiert. Durch diese Anweisung wird ein ODBC-Schnittstellen-Objekt OdbcApi erzeugt. Dieses Objekt wird beim Verbinden mit einer Datenquelle benötigt. Es bleibt so lange erhalten, bis es mit dem Befehl OdbcClose() geschlossen wird.

// Odbc-Schnittstelle wird geöffnet
tOdbcApi # OdbcOpen();

ODBC-Verbindung aufbauen:

Ausgehend vom ODBC-Schnittstellen-Objekt kann mit OdbcConnect() bzw. OdbcConnectDriver() ein ODBC-Verbindungs-Objekt erzeugt werden. Über die Eigenschaften dieses Objektes können verschiedene Informationen über den ODBC-Treiber und die verbundene Datenbank ermittelt und Abfragen definiert werden. Beispielsweise kann über die Eigenschaften spOdbcConCfcOdbcApi und spOdbcConCfcOdbcSql der Grad der ODBC-Konformität bzw. der unterstützte Sprachumfang der gewählten Datenquelle ermittelt werden. Erst durch den Aufruf von OdbcClose() wird das Verbindungs-Objekt geschlossen.

// Ausgehend von OdbcApi wird eine Verbindung hergestellt
tOdbcCon # tOdbcApi->OdbcConnect('MyDatabase', // Name der Datenquelle
                                 'MyUser',     // Benuter (optional)
                                 'MyPassword');// Kennwort (optional)

Katalog-Informationen und Abfragen:

Tabellen-Informationen ermitteln

Um Tabellen-Informationen zu ermitteln, muss mit OdbcCatalogTbl() ein ODBC-Tabellen-Objekt initialisiert werden. Hierbei wird entweder die erste oder die angegebene Tabelle gelesen. Weitere Tabellen können mit OdbcFetch() selektiert werden. Dieses Objekt bleibt erhalten, bis es selbst mit OdbcClose() oder die Verbindung geschlossen wird.

// Ermitteln aller Tabellen einer Datenquelle:
tOdbcApi # OdbcOpen();
tOdbcCon # tOdbcApi->OdbcConnect('MyDatabase','MyUser','MyPassword');
tOdbcCatTbl # tOdbcCon->OdbcCatalogTbl();
while (tOdbcCatTbl->OdbcFetch() = _ErrOk)
{
   tTblName # tOdbcCatTbl->spOdbcTblName;
   ...
}
// Schnittstellen schließen
tOdbcCatTbl->OdbcClose();
tOdbcCon->OdbcClose();
tOdbcApi->OdbcClose();
Spalten-Informationen ermitteln:

Unter Verwendung von OdbcCatalogClm() wird das ODBC-Spalten-Objekt erstellt. Die Eigenschaften des Objektes beinhalten die Attribute einer Spalte. Hier können alle oder nur bestimmte Spalten einer Tabelle ermittelt werden. Mit der Anweisung OdbcFetch() können die Spalten nacheinander gelesen werden. Das Objekt bleibt erhalten, bis die Verbindung zur Datenquelle getrennt oder das Objekt selbst mit OdbcClose() geschlossen wird.

// Ermitteln aller Spalten einer Tabelle:
tOdbcApi # OdbcOpen();
tOdbcCon # tOdbcApi->OdbcConnect('MyDatabase','MyUser','MyPassword');
tOdbcCatClm # tOdbcCon->OdbcCatalogClm('Customer');
while (tOdbcCatClm->OdbcFetch() = _ErrOk)
{
   tTblName # tOdbcCatClm->spOdbcClmTable;
   tClmName # tOdbcCatClm->spOdbcClmName;
   ...
}
// Schnittstellen schließen
tOdbcCatClm->OdbcClose();
tOdbcCon->OdbcClose();
tOdbcApi->OdbcClose();
Abfragen definieren:

Das Statement-Objekt wird durch die Anweisung OdbcPrepare() und OdbcExecuteDirect() erzeugt. Wird die Anweisung OdbcPrepare() verwendet, wird ein übergebenes SQL-Statement für die spätere Ausführung mit OdbcExecute() vorbereitet. Im Gegensatz zu gewöhnlichen Statements, welche mit OdbcExecuteDirect() ausgeführt werden, enthält es noch keine Parameterwerte, stattdessen werden Platzhalter (‘?’) übergeben. Nach der Ausführung der Anweisung kann nun die Ergebnismenge mit OdbcFetch() ausgelesen werden. Das Statement-Objekt steht zur Verfügung, bis die Verbindung zur Datenquelle getrennt oder das Objekt mit OdbcClose() geschlossen wird.

// ODBC-Statement wird zur Datenquelle geschickt und das Resultat wird
// ausgewertet
tOdbcApi # OdbcOpen();
tOdbcCon # tOdbcApi->OdbcConnect('MyDatabase','MyUser','MyPassword');
tOdbcStmt # tOdbcCon->OdbcExecuteDirect('SELECT * FROM Customer');
while (tOdbcStmt->OdbcFetch() = _ErrOk)
{
   tOdbcStmt->OdbcClmData(1,tCustomerId);
   tOdbcStmt->OdbcClmData(5,tCustomerName);
   ...
}
// Schnittstellen schließen
tOdbcCatStmt->OdbcClose();
tOdbcCon->OdbcClose();
tOdbcApi->OdbcClose();

Weitere Informationen zum Thema OdbcPrepare finden Sie im Artikel:
Erweiterung von OdbcParamAdd

Klicken Sie hier, um die Nutzungsbedingungen für unseren Blog zu lesen.

3 Antworten

  1. Vielleicht ist es erwähnenswert, dass man nicht notwendigerweise eine ODBC-Quelle einrichten muss, um sich mit Hilfe der C16-ODBC-Api dorthin zu verbinden.

    Der Befehl "OdbcConnectDriver" nimmt einen Connect-String entgegen, in dem alle nötigen Informationen übergeben werden können, z.B.: OdbcApi->OdbcConnectDriver(‘driver={SQL Server};server=SERVERINSTANZ;database=DB_NAME;uid=DB_USER;pwd=PASSWORD’).

  2. @Th.Eichele
    Der Grad der ODBC-Konformität gibt Informationen über den Funktionsumfangs des ODBC-Treibers wieder. Hier existieren drei verschiedene Varianten. Je nach Konformität wird eine andere SQL-Grammatik unterstützt. Die Konformitätsstufe für minimales SQL enthält die notwendigsten Dinge zum Schreiben von ODBC-Anwendungen. Hier sind nur einfache SQL-Konstrukte erlaubt.
    Beispielsweise einfache CREATE- und DROP TABLE-Anweisungen, einfache SELECT-, INSERT, UPDATE- und DELETE-Anweisungen oder Zeichen-Datentypen (CHAR, VARCHAR, LONG VARCHAR)
    Die Konformitätsstufe Level 1 beinhaltet alle Funktionen des minimalen SQL und zusätzlich mehr Funktionalität beim Erzeugen und Verwalten von Tabellen (z.B. ALTER TABLE), volle SELECT-Funktionalität (z.B. SUM, MAX) und mehr Datentypen (z.B. DECIMAL, NUMERIC).
    Die Konformitätsstufe Level 2 beinhaltet alle Funktionen der Konformiätsstufe 1 und ebenfalls zusätzlich weitere Befehle zur Datenmanipulation (z.B. positioniertes UPDATE), skalare Funktionen (z.B. SUBSTRING) und weitere Datentypen (z.B. BIT, BIGINT).

  3. was besagt der "Grad der ODBC-Konformität" bzw. der "unterstützte Sprachumfang" genau ?
    gibt es hier weitergehende Info zum verfügbaren Befehlsumfang oder ist hier jeweils Try and Error angesagt ?

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Leave the field below empty!

Wünsche, Fragen oder Feedback sind willkommen:

Nutzungsbedingungen der Kommentarfunktion im Blog

1. Allgemeines

Vectorsoft AG („Anbieter“) stellt für Internetnutzer („Nutzer“) auf der Website
vectorsoft.de einen öffentlichen Blog bereit. Der öffentliche Blog dient dem
Informations- und Gedankenaustausch. Die Nutzer, welche sich mit Beiträgen und
Kommentaren beteiligen, verpflichten sich dazu, die Blog-Nutzungsbedingungen
einzuhalten und tragen die Verantwortung für die Richtigkeit und Angemessenheit
sowie Freiheit von Rechtsverletzungen ihrer Beiträge. Mit Nutzung der
Kommentarfunktion in unserem Blog akzeptieren Sie diese Nutzungsbedingungen.

2. Netiquette

Wir bitten Sie von persönlichen Angriffen und Provokationen aufgrund anderer
Meinungen abzusehen. Bitte argumentieren Sie sachlich und bewegen Sie sich auf
der Basis einer konstruktiven Diskussionskultur. Ihr Kommentar sollte stets im
Zusammenhang mit dem jeweiligen Thema sein, um Ausschweifungen in andere
Themenbereiche zu vermeiden. Das mehrmalige Posten desselben Kommentars
oder mehrerer ähnlicher Kommentare ist nicht erlaubt.

3. Verbot rechtswidriger Inhalte

Mit Absenden Ihres Kommentars bestätigen Sie, dass Sie keine Urheberrechte oder andere Rechte Dritter verletzen. Volksverhetzende, rassistische Äußerungen, Anleitungen zu Straftaten und deren Verherrlichung, Gewaltdarstellungen, pornografische Inhalte und Äußerungen, die Persönlichkeitsrechte verletzen sind untersagt.

4. Keine Werbung

Die Nutzung der Kommentarfunktion ist für kommerzielle oder parteipolitische
Zwecke nicht erlaubt. Werbliche Beiträge aller Art werden von uns umgehend
gelöscht.

5. Angaben zum Namen

Bei der Eingabe Ihres Namens achten Sie auf die zuvor genannten Grundsätze.

6. Quellenangaben

Bitte geben Sie bei der beabsichtigten Veröffentlichung von Zitaten oder Beiträgen
Dritter die jeweiligen Quellen an und erläutern dessen Bezug zum Blogbeitrag.

7. Verstoß gegen die Nutzungsbedingungen

Beiträge, die gegen diese Richtlinie verstoßen werden umgehend gelöscht. Sollten
Sie selbst Verstöße bemerken, so senden Sie uns bitte den Link des betreffenden
Kommentars per E-Mail an . Wir weisen ausdrücklich daraufhin, dass wir einzelne Nutzer bei wiederholten oder schweren Verstößen gegen diese
Nutzungsbedingungen ausschließen werden.

Stand: Sept. 2024

Deine Trial Version - jetzt anfordern!

Teste yeet - unverbindlich und kostenfrei

IHRE EVALUIERUNGSLIZENZ - JETZT ANFORDERN!

TESTEN SIE DIE CONZEPT 16 VOLLVERSION - UNVERBINDLICH und KOSTENFREI

Melden Sie sich bei unserem Newsletter an

Anrede*
     
Zustimmung zur Datenverarbeitung gem. DSGVO*



WordPress Cookie-Hinweis von Real Cookie Banner