PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
Datenbanken

Datenbank-Klassen. Mehr ...

Ausführliche Beschreibung

Beschreibung:
Die nachfolgenden Klassen und Funktionen können verwendet werden, um auf verschiedene Datenbanken zuzugreifen. Es handelt sich dabei um neue Funktionen, die mit Version 6.3.0 eingeführt wurden. Sie wurden vollständig überarbeitet und im eigenen Namespace "ppl6::db" reimplementiert. Die alten Klassen wurden mit Version 6.4.3 entfernt.
Verwendung:
Um Queries auf einer Datenbank auszuführen, muss zunächst eine Verbindung hergestellt werden. Im einfachsten Fall wird dazu eine Instanz der gewünschten Datenbank erstellt (z.B. ppl6::db::MySQL) und deren Connect-Funktion aufgerufen, oder die Funktion ppl6::db::Connect aufgerufen, die als Ergebnis einen Pointer auf ein ppl6::db::Database-Objekt zurückliefert.
Anschließend können mit der ppl6::db::Exec oder ppl6::db::Query-Funktion des Objekts SQL-Queries ausgeführt werden, wobei Exec nur ein "Erfolgreich" zurückliefert, aber keine Daten, und Query ein ppl6::db::Result-Objekt zurückliefert, aus dem das Ergebnis des Queries ausgelesen werden kann.
Falls man sehr viele Datenbank-Verbindungen parallel benötigt, können zur Verwaltung auch Datenbank-Pools verwendet werden. Hiervon gibt es 2 Stück:
  1. ppl6::db::Pool zur Verwaltung von beliebig vielen Verbindungen zu einer einzelnen Datenbank
  2. ppl6::db::PoolEx zur Verwaltung von beliebig vielen Verbindungen zu verschiedenen Datenbanken

Klassen

class  ppl6::db::Database
 Basisklasse für verschiedene Datenbanken. Mehr ...
 
class  ppl6::db::GenericResult
 Klasse zum Speichern von Ergebnissen aus Datenbank-Selects. Mehr ...
 
class  ppl6::db::MySQL
 Implementierung einer MySQL-Datenbank. Mehr ...
 
class  ppl6::db::Pool
 Klasse zur Verwaltung von Datenbank-Verbindungen. Mehr ...
 
class  ppl6::db::PoolEx
 Datenbank-Pool für multiple Datenbanken. Mehr ...
 
class  ppl6::db::PoolTree
 AVL-Baum zum Verwalten der Datenbankpools innerhalb der Klasse PoolEx. Mehr ...
 
class  ppl6::db::Postgres
 Implementierung einer Postgres-Datenbank. Mehr ...
 
class  ppl6::db::Result
 Basisklasse für Ergebnisse aus Datenbank-Selects. Mehr ...
 
class  ppl6::db::SQLite
 Implementierung einer SQLite-Datenbank. Mehr ...
 
class  ppl6::db::Sybase
 Implementierung einer Sybase-Datenbank. Mehr ...
 

Namensbereiche

 ppl6::db
 Namensraum der Datenbank-Funktionen und Klassen.
 

Funktionen

Database * ppl6::db::Connect (const CAssocArray &params)
 Verbindung zu einer Datenbank herstellen. Mehr ...
 
static int ppl6::db::Sybase::GetMaxConnects ()
 Anzahl maximaler gleichzeitiger Connects auf Sybase-Datenbanken auslesen. Mehr ...
 
static int ppl6::db::Sybase::SetLocale (const char *locale, const char *dateformat)
 Legt Ländereinstellungen fest. Mehr ...
 
static int ppl6::db::Sybase::SetMaxConnects (int max)
 Anzahl maximaler gleichzeitiger Connects auf Sybase-Datenbanken festlegen. Mehr ...
 
static int ppl6::db::Sybase::SetVersion (int version)
 Zu verwendende Version definieren. Mehr ...
 

Dokumentation der Funktionen

Database * ppl6::db::Connect ( const CAssocArray &  params)
Include:
#include <ppl6-db.h>
Beschreibung:
Mit dieser Funktion wird eine neue Datenbank-Klasse erstellt und eine Verbindung zu der gewünschten Datenbank aufgebaut. Die für die Erstellung der Klasse und die für den Connect erforderlichen oder optionalen Parameter werden mit dem Array params übergeben.
Die erforderlichen oder optionalen Parameter sind Datenbank-abhängig und sind in der jeweiligen Dokumentation zu finden. Es gibt jedoch eine Reihe von Parametern, die bei allen Datenbanken identisch sind:
  • host: Der Hostname oder die IP-Adresse des Datenbank-Servers
  • port: Der TCP-Port des Datenbank-Servers
  • dbname: Der Name der intialen Datenbank. Dieser Parameter kann optional sein, da mit der Funktion Database::SelectDB die Datenbank auch später noch gewechselt werden kann.
  • user: Der Name des Benutzers, mit dem sich an der Datenbank authentifiziert werden soll
  • password: Das Passwort des Benutzers im Klartext
Hinzu kommt noch der Parameter type, der den Typ der gewünschten Datenbank angibt. Unterstützt werden zur Zeit folgende Datenbanken:
  • mysql: MySQL-Datenbank
  • postgres: Postgres-Datenbank
  • sybase: Sybase-Datenbank Die tatsächlich unterstützten Datenbanken hängen davon ab, wie PPL6 kompiliert wurde.
Postgres unterstützt zusätzlich noch die Angabe des Suchpfades:
  • searchpath: Kommaseparierte Liste mit den Schemata, die in den Suchpfad aufgenommen werden sollen
Parameter
paramsEin Assoziatives Array mit den für den Connect erforderlichen Parameter.
Rückgabe
Bei Erfolg liefert die 1 zurück, im Fehlerfall 0.
Beispiel:
int DB_Example1() {
param.Set("type","mysql");
param.Set("host","db.pfp.de");
param.Set("port","3306");
param.Set("user","patrick");
param.Set("password","xxxxxxx");
param.Set("dbname","test");
if (!db) {
return 0;
}
} // EOF
int ppl6::db::Sybase::GetMaxConnects ( )
static
Beschreibung:
Anzahl maximaler gleichzeitiger Connects auf Sybase-Datenbanken auslesen
Rückgabe
Liefert die maximale Anzahl gleichzeitig erlaubter Connects zurück.
int ppl6::db::Sybase::SetLocale ( const char *  locale,
const char *  dateformat 
)
static
Beschreibung:
Mit dieser Funktion kann festgelegt werden, welche Ländereinstellungen als Default verwendet werden sollen.
Parameter
[in]localePointer auf den Namen der Lokalisierung, z.B. "us_english" oder "german". Genaueres ist dem Sybase-Handbuch zu entnehmen.
[in]dateformatGibt an, in welcher Reihenfolge bei einem Datum Tag, Monat und Jahr erwartet werden. Mögliche Werte sind: mdy, dmy, ymd, ydm, myd, und dym.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, sonst 0.
Bemerkungen
Die Funktion muss aufgerufen werden, bevor die erste Sybase-Klasse instantiiert wird!
Achtung
Die Funktion wird von FreeTDS nicht unterstützt. Hier empfiehlt es sich eine Default-Einstellung in der freetds.conf vorzunehmen:
[global]
language=german
...
int ppl6::db::Sybase::SetMaxConnects ( int  max)
static
Beschreibung:
Mit dieser Funktion wird die maximale Anzahl gleichzeitiger Connects auf Sybase-Datenbanken festgelegt. Der Default ist unlimitiert.
Parameter
[in]max
Bemerkungen
Die Funktion muss aufgerufen werden, bevor die erste Sybase-Klasse instantiiert wird!
int ppl6::db::Sybase::SetVersion ( int  version)
static
Beschreibung:
Legt das grundlegende Verhalten der Sybase CS-Library fest.
Parameter
[in]versionKann folgende Werte annehmen:
WertVerhaltenFeatures
10010.0 behaviorInitial version
11011.1 behaviorUnicode character set support, Use of external configuration files to control Client-Library property settings.
12012.0 behaviorAll above features
12512.5 behaviorunichar support, wide data and columns, SSL
15015.0 behaviorBCP partitions, BCP computed columns, large identifiers, Unilib, ASE default packet size, scrollable cursors, and clusters support. Also, support for unitext, xml, bigint, usmallint, uint, and ubigint datatypes. Note the Sybase library name change.
Der Default ist 100
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, sonst 0.
Bemerkungen
Die Verfügbarkeit der Versionen hängt von der installierten Library- Version ab. Eine Version 12-Library wird den Wert 150 nicht kennen und FreeTDS bietet gegenwärtig nur Version 10.0 und 11.1 an.

Die Funktion muss aufgerufen werden, bevor die erste Sybase-Klasse instantiiert wird!