![]() | Patrick's Programming Library Version 6.4.21 - Dokumentation |
Implementierung einer Sybase-Datenbank. Mehr ...
Öffentliche Methoden | |
Sybase () | |
virtual | ~Sybase () |
virtual int | CancelTransaction () |
Letzte Transaktion abbrechen. Mehr ... | |
virtual int | CancelTransactionComplete () |
Transaktion vollständig abbrechen. Mehr ... | |
int | Close () |
Verbindung zu Datenbank trennen. Mehr ... | |
int | Connect () |
Connect auf eine Datenbank erstellen. Mehr ... | |
virtual int | Connect (const CAssocArray ¶ms) |
Verbindung zur Datenbank herstellen. Mehr ... | |
virtual int | ConnectCreate (const CAssocArray ¶ms) |
Connect zum Server aufbauen und Datenbank anlegen. Mehr ... | |
virtual int | CreateDatabase (const char *name) |
Datenbank erstellen. Mehr ... | |
virtual CString | databaseType () const |
Typ der Datenbank. Mehr ... | |
virtual int | Disconnect () |
Verbindung zur Datenbank trennen. Mehr ... | |
virtual int | EndTransaction () |
Transaktion beenden. Mehr ... | |
virtual int | Escape (CString &str) const |
String escapen. Mehr ... | |
virtual int | Exec (const CString &query) |
SQL-Query ohne Ergebnis ausführen. Mehr ... | |
CAssocArray | ExecArray (const CString &query) |
SQL-Query ausführen und ersten Datensatz als Array zurückgeben. Mehr ... | |
int | ExecArray (CAssocArray &result, const CString &query) |
SQL-Query ausführen und ersten Datensatz in Array speichern. Mehr ... | |
CAssocArray | ExecArrayAll (const CString &query) |
SQL-Query ausführen und alle Datensätze in Array speichern. Mehr ... | |
int | ExecArrayAll (CAssocArray &result, const CString &query) |
SQL-Query ausführen und alle Datensätze in Array speichern. Mehr ... | |
CAssocArray | ExecArrayAllf (const char *query,...) |
SQL-Query bauen, ausführen und alle Datensätze in Array speichern. Mehr ... | |
int | ExecArrayAllf (CAssocArray &result, const char *query,...) |
SQL-Query bauen, ausführen und alle Datensätze in Array speichern. Mehr ... | |
CAssocArray | ExecArrayf (const char *query,...) |
SQL-Query bauen, ausführen und ersten Datensatz als Array zurückgeben. Mehr ... | |
int | ExecArrayf (CAssocArray &result, const char *query,...) |
SQL-Query bauen, ausführen und ersten Datensatz in Array speichern. Mehr ... | |
int | Execf (const char *query,...) |
Ergebnislosen SQL-Query anhand eines Formatierungsstrings bauen und ausführen. Mehr ... | |
void | FreeResult (Result *res) |
Result-Klasse freigeben. Mehr ... | |
virtual pplint64 | GetAffectedRows () |
Betroffene Zeilen. Mehr ... | |
CString | GetEscaped (const CString &str) |
String escapen. Mehr ... | |
virtual ppluint64 | GetInsertID () |
Letzer durch eine AUTO_INCREMENT-Spalte generierten Wert. Mehr ... | |
CLog * | GetLogfile () |
virtual CString | getQuoted (const CString &value, const CString &type=CString()) const |
Wert Datenbank-konform quoten. Mehr ... | |
ppluint64 | InsertKey (const char *table, CAssocArray &a, const char *keyname, const CAssocArray &exclude=CAssocArray()) |
Datensatz mit incrementellem Schlüssel speichern. Mehr ... | |
virtual int | Ping () |
Erreichbarkeit der Datenbank prüfen. Mehr ... | |
virtual ppl6::db::Result * | Query (const CString &query) |
SQL-Query mit Ergebnis ausführen. Mehr ... | |
Result * | Queryf (const char *query,...) |
SQL-Query mit Ergebnis ausführen. Mehr ... | |
int | ReadKeyValue (CAssocArray &res, const char *query, const char *keyname, const char *valname=NULL) |
virtual int | Reconnect () |
Verlorene Datenbank-Verbindung wieder herstellen. Mehr ... | |
int | Save (const char *method, const char *table, CAssocArray &a, const char *clause=NULL, const CAssocArray &exclude=CAssocArray(), const CAssocArray &types=CAssocArray()) |
Datensatz speichern. Mehr ... | |
int | SaveGenQuery (CString &Query, const char *method, const char *table, CAssocArray &a, const char *clause=NULL, const CAssocArray &exclude=CAssocArray(), const CAssocArray &types=CAssocArray()) |
Query zum Speichern des Datensatzes generieren. Mehr ... | |
virtual int | SelectDB (const char *databasename) |
Aktive Datenbank auswählen. Mehr ... | |
void | SetLogfile (CLog *log=NULL) |
Querylog aktivieren oder deaktivieren. Mehr ... | |
void | SetLogfile (CLog &log) |
Querylog aktivieren. Mehr ... | |
virtual void | SetMaxRows (ppluint64 rows) |
Maximale Anzahl Zeilen im Ergebnis eines Selects. Mehr ... | |
void | SetParam (const char *name, const char *value) |
Parameter für den Connect setzen. Mehr ... | |
void | SetParam (const char *name, int value) |
Parameter für den Connect setzen. Mehr ... | |
virtual int | StartTransaction () |
Transaktion starten. Mehr ... | |
Öffentliche, statische Methoden | |
static int | GetMaxConnects () |
Anzahl maximaler gleichzeitiger Connects auf Sybase-Datenbanken auslesen. Mehr ... | |
static int | SetLocale (const char *locale, const char *dateformat) |
Legt Ländereinstellungen fest. Mehr ... | |
static int | SetMaxConnects (int max) |
Anzahl maximaler gleichzeitiger Connects auf Sybase-Datenbanken festlegen. Mehr ... | |
static void | SetResultBufferGrowSize (size_t bytes) |
static int | SetVersion (int version) |
Zu verwendende Version definieren. Mehr ... | |
Öffentliche Attribute | |
int | lastClientMsgNumber |
int | lastServerMsgNumber |
CString | syberror |
CString | syberrorLong |
Geschützte Methoden | |
void | ClearLastUse () |
Timestamps auf 0 setzen. Mehr ... | |
void | LogQuery (const char *query, float duration) |
Interne Funktion zum Loggen von Queries. Mehr ... | |
void | UpdateLastPing () |
Uhrzeit der letzten Datenbank-Kommunikation aktualisieren. Mehr ... | |
void | UpdateLastUse () |
Uhrzeit der letzten Datenbank-Verwendung aktualisieren. Mehr ... | |
Private Attribute | |
CAssocArray | condata |
void * | conn |
bool | connected |
ppluint64 | lastinsertid |
ppluint64 | maxrows |
pplint64 | rows_affected |
int | transactiondepth |
ppl6::db::Sybase::Sybase | ( | ) |
|
virtual |
|
virtual |
Erneute Implementation von ppl6::db::Database.
|
virtual |
Erneute Implementation von ppl6::db::Database.
|
protectedinherited |
|
inherited |
|
inherited |
|
virtual |
[in] | params | Ein Assoziatives Array, das sämtliche Connect-Parameter enthält. Folgende Paramater sind anzugeben:
|
host
hat sich im Vergleich zu der bisherigen Klasse CDBSybase verändert. Früher wurde hier der Name des Interfaces erwartet (dieser muss nun mit dem Parameter interface
angegeben werden), jetzt ist es der Hostname bzw. IP-Adresse des Servers. Diese Änderung wurde gemacht, um die Connect-Parameter zu vereinheitlichen. Erneute Implementation von ppl6::db::Database.
|
virtualinherited |
params
entnommen. Diese Parameter sind abhängig vom Datenbank-Typ, es gibt jedoch eine Reihe von Parametern, die bei allen Datenbanken identisch sind:params | Ein Assoziatives Array mit den für den Connect erforderlichen Parameter. |
Erneute Implementation in ppl6::db::Postgres.
|
virtual |
name
erstellt. Dazu muss jedoch vorher bereits eine Verbindung zu einem Server hergestellt worden sein (siehe Database::Connect) und der Datenbank-User muss die notwendigen Rechte zum Anlegen einer Datenbank besitzen.[in] | name | Name der anzulegenden Datenbank |
Erneute Implementation von ppl6::db::Database.
|
virtual |
Erneute Implementation von ppl6::db::Database.
|
virtual |
Erneute Implementation von ppl6::db::Database.
|
virtual |
Erneute Implementation von ppl6::db::Database.
|
virtual |
str
Datenbank-konform escaped. Der escapete String str
kann anschließend gefahrlos in SQL-Statements innerhalb von Anführungszeichen oder Hochkommata verwendet werden.[in,out] | str | Der zu escapende String |
Erneute Implementation von ppl6::db::Database.
|
virtual |
[in] | query | Die gewünschte SQL-Abfrage |
Erneute Implementation von ppl6::db::Database.
|
inherited |
query
ausgeführt und die erste Zeile der Ergebnisdaten als Assoziatives Array zurückgegeben. Die Funktion bietet sich daher für Selects an, die genau einen Datensatz zurückliefern. Liefert ein Select mehrere Datensätze zurück, kann stattdessen die Funktion Database::ExecArrayAll verwendet werden. [in] | query | Der Select-Befehl |
|
inherited |
query
ausgeführt und die erste Zeile der Ergebnisdaten im Assoziativen Array result
gespeichert. Die Funktion bietet sich daher für Selects an, die genau einen Datensatz zurückliefern. Liefert ein Select mehrere Datensätze zurück, kann stattdessen die Funktion Database::ExecArrayAll verwendet werden.[out] | result | Ein Assoziatives Array, in dem das Ergebnis gespeichert wird. Der ursprüngliche Inhalt des Arrays wird durch Aufruf dieser Funktion gelöscht. Falls der SQL-Befehl kein Ergebnis geliefert hat, bleibt das Array leer. |
[in] | query | Der Select-Befehl |
|
inherited |
query
ausgeführt und alle Zeilen des Ergebnisses als Assoziatives Array zurückgegeben. Die Funktion bietet sich daher für Selects an, die mehrere Datensätze zurückliefern. Liefert ein Select nur einen einzigen Datensätze zurück oder wird nur der erste Datensatz benötigt, kann stattdessen die Funktion Database::ExecArray verwendet werden. [in] | query | Der Select-Befehl |
|
inherited |
query
ausgeführt und alle Zeilen des Ergebnisses im Assoziativen Array result
gespeichert. Die Funktion bietet sich daher für Selects an, die mehrere Datensätze zurückliefern. Liefert ein Select nur einen einzigen Datensätze zurück oder wird nur der erste Datensatz benötigt, kann stattdessen die Funktion Database::ExecArray verwendet werden.[out] | result | Ein Assoziatives Array, in dem das Ergebnis gespeichert wird. Der ursprüngliche Inhalt des Arrays wird durch Aufruf dieser Funktion gelöscht. Falls der SQL-Befehl kein Ergebnis geliefert hat, bleibt das Array leer. Das Array besteht dabei aus zwei Ebenen. Die erste Ebene ist durchnummeriert, jeder Datensatz erhält also eine Nummer. Auf der zweiten Ebene befinden sich dann die Key-Value-Paare des jeweiligen Datensatzes. |
[in] | query | Der Select-Befehl |
|
inherited |
query
gebaut, ausgeführt und alle Zeilen des Ergebnisses als Assoziatives Array zurückgegeben. Die Funktion bietet sich daher für Selects an, die mehrere Datensätze zurückliefern. Liefert ein Select nur einen einzigen Datensätze zurück oder wird nur der erste Datensatz benötigt, kann stattdessen die Funktion Database::ExecArrayf verwendet werden. [in] | query | Der Select-Befehl |
[in] | ... | Optionale Parameter für den Formatierungsstring |
|
inherited |
query
gebaut, ausgeführt und alle Zeilen des Ergebnisses im Assoziativen Array result
gespeichert. Die Funktion bietet sich daher für Selects an, die mehrere Datensätze zurückliefern. Liefert ein Select nur einen einzigen Datensätze zurück oder wird nur der erste Datensatz benötigt, kann stattdessen die Funktion Database::ExecArray verwendet werden.[out] | result | Ein Assoziatives Array, in dem das Ergebnis gespeichert wird. Der ursprüngliche Inhalt des Arrays wird durch Aufruf dieser Funktion gelöscht. Falls der SQL-Befehl kein Ergebnis geliefert hat, bleibt das Array leer. Das Array besteht dabei aus zwei Ebenen. Die erste Ebene ist durchnummeriert, jeder Datensatz erhält also eine Nummer. Auf der zweiten Ebene befinden sich dann die Key-Value-Paare des jeweiligen Datensatzes. |
[in] | query | Der Select-Befehl |
[in] | ... | Optionale Parameter für den Formatierungsstring |
|
inherited |
query
gebaut, ausgeführt und die erste Zeile der Ergebnisdaten als Assoziatives Array zurückgegeben. Die Funktion bietet sich daher für Selects an, die genau einen Datensatz zurückliefern. Liefert ein Select mehrere Datensätze zurück, kann stattdessen die Funktion Database::ExecArrayAll verwendet werden. [in] | query | Formatierungsstring für den SQL-Query |
[in] | ... | Optionale Parameter für den Formatierungsstring |
|
inherited |
query
gebaut, ausgeführt und die erste Zeile der Ergebnisdaten im Assoziativen Array result
gespeichert. Die Funktion bietet sich daher für Selects an, die genau einen Datensatz zurückliefern. Liefert ein Select mehrere Datensätze zurück, kann stattdessen die Funktion Database::ExecArrayAll verwendet werden.[out] | result | Ein Assoziatives Array, in dem das Ergebnis gespeichert wird. Der ursprüngliche Inhalt des Arrays wird durch Aufruf dieser Funktion gelöscht. Falls der SQL-Befehl kein Ergebnis geliefert hat, bleibt das Array leer. |
[in] | query | Formatierungsstring für den SQL-Query |
[in] | ... | Optionale Parameter für den Formatierungsstring |
|
inherited |
query
und eine variable Anzahl von Parametern, die in den Formatierungsstring eingesetzt werden. [in] | query | Formatierungsstring für den SQL-Befehl |
[in] | ... | Optionale Parameter, die in den Formatierungsstring eingesetzt werden. |
|
inherited |
delete
zu löschen, da dies etwas schneller ist.[in] | res | Pointer auf eine Result-Klasse |
|
virtual |
Erneute Implementation von ppl6::db::Database.
str
Datenbank-konform escaped und als Return-Wert zurückgegeben. Der escapete String kann gefahrlos in SQL-Statements innerhalb von Anführungszeichen oder Hochkommata verwendet werden.[in] | str | Der zu escapende String |
|
virtual |
Erneute Implementation von ppl6::db::Database.
|
inherited |
|
virtualinherited |
value
Datenbank-konform abhängig vom Datentyp type
. Der Rückgabewert enthält je nach Datentyp bereits Hochkommata oder Anführungszeichen und kann somit ohne weitere Quotes in einen Query eingesetzt werden.value | Zu quotender String |
type | Datentyp. Wird nichts angegeben, wird der Wert value als String interpretiert. |
Erneute Implementation in ppl6::db::Postgres.
|
inherited |
table
für Schreibzugriffe. Dann wird der höchste Wert des Schlüssels keyname
gesucht und um 1 erhöht. Mit diesem Schlüssel werden die Daten aus dem Array a
mit INSERT gespeichert, außer den Feldern, die in exclude
angegeben wurden. Dazu wird die Funktion Database::Save aufgerufen. Danach wird die Tabelle table
wieder entsperrt. Der Wert des Schlüssels wird als 64-Bit-Wert zurückgegeben.[in] | table | Name der Datenbank-Tabelle, in die der Datensatz gespeichert werden soll |
[in] | a | Ein assoziatives Array mit den zu speichernden Daten |
[in] | keyname | Der Feldname des primären Schlüssels der Tabelle |
[in] | exclude | Ein optionales Array, das die Feldnamen aus a enthält, die nicht gespeichert werden sollen |
|
protectedinherited |
[in] | query | Der durchgeführte Query |
[in] | duration | Laufzeit des Queries in Sekunden. |
|
virtual |
Erneute Implementation von ppl6::db::Database.
|
virtual |
[in] | query | Die gewünschte SQL-Abfrage |
Erneute Implementation von ppl6::db::Database.
|
inherited |
query
und eine variable Anzahl von Parametern, die in den Formatierungsstring eingesetzt werden.[in] | query | Formatierungsstring für den SQL-Befehl |
[in] | ... | Optionale Parameter, die in den Formatierungsstring eingesetzt werden. |
|
inherited |
|
virtual |
Erneute Implementation von ppl6::db::Database.
|
inherited |
a
vorhandenen Felder und Werte mit der Methode method
in der Tabelle table
. Je nach Methode wird dabei aus den Daten ein entprechender SQL-Query gebaut. Soll ein Update durchgeführt werden, muss zusätzlich noch eine Where-Klausel mit dem Parameter clause
angegeben werden. Enthalten die Daten in a
Felder, die in der Tabelle table
nicht vorhanden sind, muss zusätzlich noch das Array exclude
angegeben werden, dass die zu ignorierenden Feldnamen enthält. a
werden vor dem Einsetzen in den Query korrekt Escaped.[in] | method | Die Methode, mit der der Datensatz in die Datenbank geschrieben werden soll. In Frage kommen:
|
[in] | table | Name der Tabelle |
[in] | a | Ein Assoziatives Array mit den zu speichernden Feldern |
[in] | clause | Ein Optionaler Parameter, der bei UPDATE angegeben werden muss und die Where-Klausel enthält. Das Keywort "where" muss nicht angegeben werden |
[in] | exclude | Ein optionales assoziatives Array, was die Namen der Felder enthält, die nicht gespeichert werden sollen. Muss verwendet werden, wenn in a Felder enthalten sind, die in der Tabelle table nicht existieren. |
[in] | types | Ein optionales assoziatives Array, was die Typen der zu speichernden Daten angibt. Hier wird zur Zeit nur "int" und "bit" interpretiert, was dazu führt, dass die Werte nicht in Anführungszeichen in den SQL-Query eingebaut werden. Alle anderen Typen werden wie bisher als String behandelt. Bei dem ASE von Sybase gibt es Probleme, wenn man versucht einen Ziffer in Anführungszeichen anzugeben, wenn das Feld als "numeric" oder "bit" definiert ist. |
userid int4 not null primary key, vorname varchar(64) nut null, nachname varchar(64) nut null, email varchar(128) nut null
|
inherited |
a
vorhandenen Feldern und Werten in Abhängigkeit der Methode method
einen SQL-Query für die Tabelle table
. Soll ein Update durchgeführt werden, muss zusätzlich noch eine Where-Klausel mit dem Parameter clause
angegeben werden. Enthalten die Daten in a
Felder, die in der Tabelle table
nicht vorhanden sind, muss zusätzlich noch das Array exclude
angegeben werden, dass die zu ignorierenden Feldnamen enthält. a
werden vor dem Einsetzen in den Query korrekt Escaped.[out] | Query | String, in dem der Query gespeichert werden soll |
[in] | method | Die Methode, mit der der Datensatz in die Datenbank geschrieben werden soll. In Frage kommen:
|
[in] | table | Name der Tabelle |
[in] | a | Ein Assoziatives Array mit den zu speichernden Feldern |
[in] | clause | Ein Optionaler Parameter, der bei UPDATE angegeben werden muss und die Where-Klausel enthält. Das Keywort "where" muss nicht angegeben werden |
[in] | exclude | Ein optionales assoziatives Array, was die Namen der Felder enthält, die nicht gespeichert werden sollen. Muss verwendet werden, wenn in a Felder enthalten sind, die in der Tabelle table nicht existieren. |
[in] | types | Ein optionales assoziatives Array, was die Typen der zu speichernden Daten angibt. Hier wird zur Zeit nur "int" und "bit" interpretiert, was dazu führt, dass die Werte nicht in Anführungszeichen in den SQL-Query eingebaut werden. Alle anderen Typen werden wie bisher als String behandelt. Bei dem ASE von Sybase gibt es Probleme, wenn man versucht einen Ziffer in Anführungszeichen anzugeben, wenn das Feld als "numeric" oder "bit" definiert ist. |
userid int4 not null primary key, vorname varchar(64) nut null, nachname varchar(64) nut null, email varchar(128) nut null
|
virtual |
[in] | databasename | Name der gewünschten Datenbank |
Erneute Implementation von ppl6::db::Database.
|
inherited |
[in] | log | Pointer auf eine Klasse vom Typ CLog, um das Logging zu aktivieren, oder NULL um es zu deaktivieren. |
|
inherited |
[in] | log | Referenz auf eine Klasse vom Typ CLog. |
|
virtual |
[in] | rows | Anzahl maximaler Zeilen oder 0, wenn es kein Limit geben soll. |
Erneute Implementation von ppl6::db::Database.
|
inherited |
[in] | name | Name des Parameters |
[in] | value | Wert des Parameters als String |
|
inherited |
[in] | name | Name des Parameters |
[in] | value | Wert des Parameters als Integer |
|
static |
|
virtual |
Mit diesem Befehl läßt sich eine Transaktion auf der Datenbank starten. Mit dem Befehl Database::EndTransaction wird sie abgeschlossen und mit Database::CancelTransaction abgebrochen.
Ab Version 6.4.3 der PPL-Library kann man Transaktionen verschachteln, in dem man Database::StartTransaction mehrfach aufruft. Mit Database::EndTransaction wird dann nur die innerste Transaktionsklammer abgeschlossen, mit Database::CancelTransaction entsprechend nur die innerste Transaktionsklammer zurückgerollt. Mit Database::CancelTransactionComplete läßt sich die komplette Transaktion bis zur äußersten Klammer zurückrollen. Bei der Verschachtelung von Transaktionen muss man darauf achten, dass immer eine gleiche Anzahl von Database::EndTransaction wie Database::StartTransaction geben muss, da sonst die Transaktion nicht vollständig geschlossen wird und es zu Datenbank Blockaden kommen kann.
Erneute Implementation von ppl6::db::Database.
|
protectedinherited |
|
protectedinherited |
|
private |
|
private |
|
private |
int ppl6::db::Sybase::lastClientMsgNumber |
|
private |
int ppl6::db::Sybase::lastServerMsgNumber |
|
private |
|
private |
CString ppl6::db::Sybase::syberror |
CString ppl6::db::Sybase::syberrorLong |
|
private |