Adding upstream version 1.0.2.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-04-22 17:57:53 +02:00
parent a04160a00d
commit 36fe29e3d5
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
464 changed files with 372850 additions and 0 deletions

View file

@ -0,0 +1,384 @@
int DB_Example1() {
ppl6::CAssocArray param;
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");
ppl6::db::Database *db=ppl6::db::Connect(param);
if (!db) {
ppl6::PrintError();
return 0;
}
} // EOF
int DB_Example2() {
ppl6::db::MySQL db;
db.SetParam("host","db.pfp.de");
db.SetParam("port","3306");
db.SetParam("user","patrick");
db.SetParam("password","xxxxxxx");
db.SetParam("dbname","test");
if (!db.Connect()) {
ppl6::PrintError();
return 0;
}
} // EOF
int DB_Example3() {
ppl6::CAssocArray param;
param.Set("host","db.pfp.de");
param.Set("port","3306");
param.Set("user","patrick");
param.Set("password","xxxxxxx");
param.Set("dbname","test");
ppl6::db::MySQL db;
if (!db.Connect(param)) {
ppl6::PrintError();
return 0;
}
} // EOF
int DB_Example4() {
ppl6::CAssocArray param;
param.Set("host","db.pfp.de");
param.Set("port","3306");
param.Set("user","patrick");
param.Set("password","xxxxxxx");
param.Set("dbname","test");
ppl6::db::MySQL db;
if (!db.ConnectCreate(param)) {
ppl6::PrintError();
return 0;
}
} // EOF
int DB_MySQL_Example1() {
// Verbindungsparameter festlegen
ppl6::CAssocArray param;
param.Set("host","db.pfp.de");
param.Set("port","3306");
param.Set("user","patrick");
param.Set("password","xxxxxxx");
param.Set("dbname","test");
// Datenbank-Klasse anlegen
ppl6::db::MySQL db;
// Verbindung aufbauen
if (!db.Connect(param)) {
ppl6::PrintError();
return 0;
}
// Query abschicken
ppl6::db::Result *res=db.Query("select * from user oder by nachname, vorname");
if (!res) { // Fehler abfangen
ppl6::PrintError();
} else {
printf ("Es wurden %i Datensätze gefunden\n",res->Rows());
// Result wieder freigeben
delete res;
}
// Die Verbindung wird durch den Destruktor der Klasse automatisch
// ordnungsgemäß getrennt
} // EOF
int DB_Sybase_Example1() {
// Verbindungsparameter festlegen
ppl6::CAssocArray param;
param.Set("host","db.pfp.de");
param.Set("port","4711");
param.Set("user","patrick");
param.Set("password","xxxxxxx");
param.Set("dbname","test");
// Datenbank-Klasse anlegen
ppl6::db::Sybase db;
// Verbindung aufbauen
if (!db.Connect(param)) {
ppl6::PrintError();
return 0;
}
// Query abschicken
ppl6::db::Result *res=db.Query("select * from user oder by nachname, vorname");
if (!res) { // Fehler abfangen
ppl6::PrintError();
} else {
printf ("Es wurden %i Datensätze gefunden\n",res->Rows());
// Result wieder freigeben
delete res;
}
// Die Verbindung wird durch den Destruktor der Klasse automatisch
// ordnungsgemäß getrennt
} // EOF
int DB_Sybase_Example2() {
// Verbindungsparameter festlegen
ppl6::CAssocArray param;
param.Set("host","db.pfp.de");
param.Set("port","4711");
param.Set("user","patrick");
param.Set("password","xxxxxxx");
param.Set("dbname","test");
// Datenbank-Klasse anlegen
ppl6::db::Sybase db;
// Verbindung aufbauen
if (!db.Connect(param)) {
ppl6::PrintError();
return 0;
}
// Query abschicken
ppl6::db::Result *res=db.Query("select * from user oder by nachname, vorname");
if (!res) { // Fehler abfangen
ppl6::PrintError();
} else {
pplint64 rows=0;
ppl6::CAssocArray row;
// Durch das Ergebnis durchiterieren
while (res->FetchArray(row)) {
// Felder der aktuellen Ergebnis-Zeile befinden sich nun im Array "row" und
// können verarbeitet werden
printf ("%s %s\n",row["nachname"],row["vorname"]);
rows++;
}
delete res;
}
// Die Verbindung wird durch den Destruktor der Klasse automatisch
// ordnungsgemäß getrennt
} // EOF
int DB_Postgres_Example1() {
// Verbindungsparameter festlegen
ppl6::CAssocArray param;
param.Set("host","db.pfp.de");
param.Set("port","5432");
param.Set("user","patrick");
param.Set("password","xxxxxxx");
param.Set("dbname","test");
// Datenbank-Klasse anlegen
ppl6::db::Postgres db;
// Verbindung aufbauen
if (!db.Connect(param)) {
ppl6::PrintError();
return 0;
}
// Query abschicken
ppl6::db::Result *res=db.Query("select * from user oder by nachname, vorname");
if (!res) { // Fehler abfangen
ppl6::PrintError();
} else {
printf ("Es wurden %i Datensätze gefunden\n",res->Rows());
// Result wieder freigeben
delete res;
}
// Die Verbindung wird durch den Destruktor der Klasse automatisch
// ordnungsgemäß getrennt
} // EOF
int DB_Result_Example1() {
// Zunächst erstellen wir eine Verbindung zu einer MySQL-Datenbank
ppl6::CAssocArray param;
param.Set("host","db.pfp.de");
param.Set("port","3306");
param.Set("user","patrick");
param.Set("password","xxxxxxx");
param.Set("dbname","test");
ppl6::db::MySQL db;
// Verbindung zur Datenbank aufbauen
if (!db.Connect(param)) {
ppl6::PrintError();
return 0;
}
// Select abschicken
ppl6::db::Result *res=db.Query("select * from user order by name");
if (!res) {
ppl6::PrintError();
return 0;
}
printf ("Es wurden %lli Datensätze gefunden:\n",res->Rows());
ppl6::CAssocArray row;
// Wir verwenden Result::FetchArray, um durch das Ergebnis zu traversieren
while ((res->FetchArray(row))) {
printf ("Name: %s, Email: %s\n",row["name"],row["email"]);
}
delete res; // Ergebnis löschen, Speicher freigeben
db.Disconnect();
} // EOF
int DB_Save_Example1(ppl6::db::Database *db) {
// Die Funktion geht davon aus, dass "db" eine gültige Datenbank-Verbindung
// enthält.
ppl6::CAssocArray Data;
Data.Set("vorname","Patrick");
Data.Set("nachname","Fedick");
Data.Set("email","xxx@xxxx.xx");
return db->Save("update","user",Data,"where userid=1");
} // EOF
int DB_Pool_Example1() {
// Connect-Parameter festlegen
ppl6::CAssocArray param;
param.Set("type","sybase");
param.Set("host","database.example.com");
param.Set("port","1234");
param.Set("user","demo");
param.Set("password","demo");
param.Set("dbname","test");
// Pool erzeugen
ppl6::db::Pool Pool;
// Pool mit den Connect-Parametern initialisieren
if (!Pool.SetConnectParams(param)) {
ppl6::PrintError();
return;
}
// Verbindung aus dem Pool holen
ppl6::db::Database *db=Pool.Get();
if (!db) {
ppl6::PrintError();
return;
}
// Verbindung verwenden
...
// Verbindung an den Pool zurückgeben
if (!Pool.Release(db)) {
ppl6::PrintError();
return;
}
} // EOF
int DB_PoolEx_Example1() {
// Pool erzeugen
ppl6::db::PoolEx Pool;
// Connect-Parameter für die erste Datenbank festlegen
ppl6::CAssocArray param1;
param.Set("type","sybase");
param.Set("host","database.example.com");
param.Set("port","1234");
param.Set("user","demo");
param.Set("password","demo");
param.Set("dbname","test");
// Pool mit den Connect-Parametern anlegen
// Die Datenbank bekommt die ID 1 und den Namen "Hauptdatenbank"
if (!Pool.CreatePool(1,"Hauptdatenbank",param)) {
ppl6::PrintError();
return;
}
// Connect-Parameter für die zweite Datenbank festlegen
ppl6::CAssocArray param1;
param.Set("type","mysql");
param.Set("host","mysql.example.com");
param.Set("port","4711");
param.Set("user","demo");
param.Set("password","demo");
param.Set("dbname","test");
// Pool mit den Connect-Parametern anlegen.
// Die Datenbank bekommt die ID 2 und den Namen "MySQL_1"
if (!Pool.CreatePool(2,"DB2",param)) {
ppl6::PrintError();
return;
}
// Verbindung zur ersten Datenbank anhand des Namens holen
ppl6::db::Database *db=Pool.Get("Hauptdatenbank");
if (!db) {
ppl6::PrintError();
return;
}
// Verbindung verwenden
...
// Verbindung an den Pool zurückgeben
if (!Pool.Release(db)) {
ppl6::PrintError();
return;
}
// Verbindung zur zweiten Datenbank anhand der ID holen
ppl6::db::Database *db=Pool.Get(2);
if (!db) {
ppl6::PrintError();
return;
}
// Verbindung verwenden
...
// Verbindung an den Pool zurückgeben
if (!Pool.Release(db)) {
ppl6::PrintError();
return;
}
} // EOF
ppl6::db::Result *DB_GenericResult_Example1(const CString &Query) {
int num_fields; // Nimmt die Anzahl Felder im Result auf
// Datenbank-spezifische Code, der das Query ausführt
// ...
// Result-Objekt erstellen
ppl6::db::GenericResult *res=new GenericResult;
if (!res) { // Out of Memory anfangen
SetError(2);
return NULL;
}
// Anzahl Felder im Result übergeben
res->SetNumFields(num_fields);
for (int i=0;i<num_fields;i++) {
const char *field_name = xxxxx; // Name des Feldes
Result::Type field_type = xxxxx; // Datentyp
// Namen und Feldtypen übergeben
res->SetFieldName(i, field_name, field_type);
}
// Ergebniszeilen übergeben
for (pplint64 r=0;r<num_rows;r++) {
// Neue Zeile
res->NewRow();
// Felder durchgehen
for (int i=0;i<num_fields;i++) {
void *value = xxxx; // Pointer auf den Inhalt des Feldes
int len_value = xxxx; // Anzahl Bytes des Feldes
res->StoreField(i,value,len_value);
}
}
// Betroffene Zeilen übergeben
res->SetAffectedRows(num_rows);
// Index aufbauen
res->BuildIndex();
// fertig
return (ppl6::db::Result *)res;
} // EOF