Hauptseite | Liste aller Namensbereiche | Klassenhierarchie | Übersicht | Auflistung der Dateien | Elemente eines Namensbereiches | Datenstruktur-Elemente | Datei-Elemente

psfa::DbDriverMySqlHelper Klassenreferenz

Hilfsfunktionen für eine MySql-Datenbank. Mehr...

#include <psfa/DbDriverMySqlHelper.hpp>

Aufstellung aller Elemente

Öffentliche Methoden

bool connect ()
 Stellt eine Verbindung zu einer MySql-Datenbank her.

bool disconnect ()
 Beendet die Verbindung.

mysqlcppapi::Result_NoData executeSql (const std::ostringstream &sql)
 Führt eine SQL-Anweisung aus, die keine Werte erwartet.

void queryDb (const std::ostringstream &sql, mysqlcppapi::Result_Store &store)
 Führt eine Abfrage aus, die Werte erwartet.

int getNextId (const std::string table, const std::string idField)
 Liefert die nächste ID in einer Tabelle.

const std::string getSingleValueString (const std::ostringstream &sql)
 Liefert einen einzelnen String-Wert.

int calculateFilePosition (int line, int column, int fileId)
 Berechnet die Position in einer Datei.

int getSingleValueInt (const std::ostringstream &sql)
 Liefert einen einzelnen Int-Wert.

template<class T> void getValueVector (const std::ostringstream &sql, T &vec)
 Liefert mehrere Reihen bestehend aus einem Wert.

template<class T> void getValueStream (const std::ostringstream &sql, T &outStream, const std::string delim)
 Liefert mehrere Reihen bestehend aus einem Wert.


Private Attribute

mysqlcppapi::Connection con_
 Die aktuelle Verbindung zur MySql-Datenbank.


Statische private Attribute

int fileId_ = 0
 die aktuelle ID der Datei

int overhead_ = 0
 DOS oder Unix Zeilenende?

std::vector< int > lengths_
 der aktuellen Zeilenlängen


Ausführliche Beschreibung

Hilfsfunktionen für eine MySql-Datenbank.

Diese Klasse sammelt Funktionen, die immer wieder gebraucht werden. Ebenso verwaltet sie die eigentliche Verbindung zum Datenbank-Server.

Definiert in Zeile 37 der Datei DbDriverMySqlHelper.hpp.


Dokumentation der Elementfunktionen

int psfa::DbDriverMySqlHelper::calculateFilePosition int  line,
int  column,
int  fileId
 

Berechnet die Position in einer Datei.

Dabei wird aus Performanzgründen die statischen Variablen fileId_, lengths_ und overhead_ verwendet.

Parameter:
line die Zeile
column die Kolumne
fileId die ID der Datei
Rückgabe:
die Position

Definiert in Zeile 186 der Datei DbDriverMySqlHelper.cpp.

Benutzt fileId_, getSingleValueInt(), getValueVector(), lengths_ und overhead_.

Wird benutzt von psfa::DbWriteDriverMySql::insertEntries().

00189 {
00190   std::ostringstream sql;
00191   
00192   if( line < 1 ) {
00193     return 0;
00194   }
00195   --line;
00196   if( fileId_ != fileId ) {
00197     sql.str("");
00198     sql << "SELECT f_dos FROM file WHERE file_id ='"
00199    << fileId
00200    << "'";
00201     overhead_ = getSingleValueInt( sql );
00202 
00203     sql.str("");
00204     sql << "SELECT r_length FROM file_row WHERE file_id ='"
00205    << fileId
00206    << "' ORDER BY __id";
00207     lengths_.clear();
00208     getValueVector( sql, lengths_ );
00209     fileId_ = fileId;
00210   }
00211   int pos = std::accumulate( lengths_.begin(), 
00212               lengths_.begin() + line,
00213               0 )
00214     + column
00215     + line * overhead_
00216     - 1;
00217   return pos;
00218 }

bool psfa::DbDriverMySqlHelper::connect  ) 
 

Stellt eine Verbindung zu einer MySql-Datenbank her.

In der Konfiguration werden Host, Benutzer, Passwort und Datenbankname benötigt.

Rückgabe:
den Erfolg

Definiert in Zeile 35 der Datei DbDriverMySqlHelper.cpp.

Benutzt con_ und psfa::Config::getConfigValue().

Wird benutzt von psfa::DbReadDriverMySql::DbReadDriverMySql() und psfa::DbWriteDriverMySql::DbWriteDriverMySql().

00036 {
00037   Config* conf = Config::getConfig();
00038   try {
00039     con_.set_Host( conf->getConfigValue( "mysql", "host" ) );
00040     con_.set_User( conf->getConfigValue( "mysql", "user" ) );
00041     con_.set_Password( conf->getConfigValue( "mysql", "password" ) );
00042     con_.connect();
00043     con_.select_database( conf->getConfigValue( "mysql", "db" ) );
00044   }
00045   catch (mysqlcppapi::ex_BadQuery& er) {
00046     return false;
00047   }
00048   return con_.is_connected();
00049 }

bool psfa::DbDriverMySqlHelper::disconnect  ) 
 

Beendet die Verbindung.

Rückgabe:
den Erfolg

Definiert in Zeile 54 der Datei DbDriverMySqlHelper.cpp.

Benutzt con_.

Wird benutzt von psfa::DbReadDriverMySql::~DbReadDriverMySql() und psfa::DbWriteDriverMySql::~DbWriteDriverMySql().

00055 {
00056   if( con_.is_connected() ) {
00057     con_.close();
00058     return true;
00059   }
00060   return false;
00061 }

mysqlcppapi::Result_NoData psfa::DbDriverMySqlHelper::executeSql const std::ostringstream &  sql  ) 
 

Führt eine SQL-Anweisung aus, die keine Werte erwartet.

Also beispielsweise eine INSERT-Anweisung.

Parameter:
sql die Abfrage
Rückgabe:
das Ergebnis der Abfrage

Definiert in Zeile 66 der Datei DbDriverMySqlHelper.cpp.

Benutzt con_.

Wird benutzt von psfa::DbWriteDriverMySql::delPool(), psfa::DbWriteDriverMySql::insertEntries(), psfa::DbWriteDriverMySql::insertFileRows(), psfa::DbWriteDriverMySql::insertFiles(), psfa::DbWriteDriverMySql::insertKontext(), psfa::DbWriteDriverMySql::insertPool(), psfa::DbWriteDriverMySql::insertSearch(), psfa::DbWriteDriverMySql::insertUnit() und psfa::DbWriteDriverMySql::removeFiles().

00067 {
00068   try {
00069     mysqlcppapi::Query query = con_.create_Query();
00070     query << sql.str();
00071     mysqlcppapi::Result_NoData res = query.execute();
00072     return res;
00073   }
00074   catch(mysqlcppapi::ex_BadQuery& er) {
00075     mysqlcppapi::Result_NoData r;
00076     return r;
00077   }
00078   catch(mysqlcppapi::ex_BadConversion& er) {
00079     mysqlcppapi::Result_NoData r;
00080     return r;
00081   }
00082 }

int psfa::DbDriverMySqlHelper::getNextId const std::string  table,
const std::string  idField
 

Liefert die nächste ID in einer Tabelle.

Parameter:
table der Name der Tabelle
idField der Name des ID-Feldes
Rückgabe:
die nächste ID

Definiert in Zeile 107 der Datei DbDriverMySqlHelper.cpp.

Benutzt con_.

Wird benutzt von psfa::DbWriteDriverMySql::insertEntries(), psfa::DbWriteDriverMySql::insertFileRows(), psfa::DbWriteDriverMySql::insertFiles(), psfa::DbWriteDriverMySql::insertKontext(), psfa::DbWriteDriverMySql::insertPool(), psfa::DbWriteDriverMySql::insertSearch() und psfa::DbWriteDriverMySql::insertUnit().

00109 {
00110   try {
00111     mysqlcppapi::Query query = con_.create_Query();
00112     query << "SELECT MAX("
00113      << idField
00114      << ") FROM "
00115      << table;
00116     mysqlcppapi::Result_Store res = query.store();
00117     mysqlcppapi::Row row = res.fetch_row();
00118     int id = row[0];
00119     if( id ) {
00120       return id + 1;
00121     }
00122     else {
00123       return 1;
00124     }
00125   }
00126   catch(mysqlcppapi::ex_BadQuery& er) {
00127     return 0;
00128   }
00129   catch(mysqlcppapi::ex_BadConversion& er) {
00130     return 0;
00131   }
00132 }

int psfa::DbDriverMySqlHelper::getSingleValueInt const std::ostringstream &  sql  ) 
 

Liefert einen einzelnen Int-Wert.

Parameter:
sql die Abfrage
Rückgabe:
den Wert

Definiert in Zeile 163 der Datei DbDriverMySqlHelper.cpp.

Benutzt con_.

Wird benutzt von calculateFilePosition(), psfa::DbWriteDriverMySql::check(), psfa::DbWriteDriverMySql::delPool(), psfa::DbWriteDriverMySql::existPool(), psfa::DbReadDriverMySql::getEntries(), psfa::DbReadDriverMySql::getFiles(), psfa::DbReadDriverMySql::getKontextTags(), psfa::DbReadDriverMySql::getSearchTags(), psfa::DbReadDriverMySql::getUniqueContent(), psfa::DbReadDriverMySql::getUnits(), psfa::DbWriteDriverMySql::index() und psfa::DbWriteDriverMySql::insertEntries().

00164 {
00165   try {
00166     mysqlcppapi::Query query = con_.create_Query();
00167     query << sql.str();
00168     mysqlcppapi::Result_Store res = query.store();
00169     if( res.size() != 0 ) {
00170       mysqlcppapi::Row row = res.fetch_row();
00171       return row[0];
00172     }
00173     else {
00174       return 0;
00175     }
00176   }
00177   catch(mysqlcppapi::ex_BadQuery& er) {
00178     return 0;
00179   }
00180   catch(mysqlcppapi::ex_BadConversion& er) {
00181     return 0;
00182   }
00183 }

const std::string psfa::DbDriverMySqlHelper::getSingleValueString const std::ostringstream &  sql  ) 
 

Liefert einen einzelnen String-Wert.

Parameter:
sql die Abfrage
Rückgabe:
den Wert

Definiert in Zeile 138 der Datei DbDriverMySqlHelper.cpp.

Benutzt con_.

Wird benutzt von psfa::DbWriteDriverMySql::check() und psfa::DbReadDriverMySql::getEntries().

00139 {
00140   try {
00141     mysqlcppapi::Query query = con_.create_Query();
00142     query << sql.str();
00143     mysqlcppapi::Result_Store res = query.store();
00144     if( res.size() != 0 ) {
00145       mysqlcppapi::Row row = res.fetch_row();
00146       return row[0];
00147     }
00148     else {
00149       return "";
00150     }
00151   }
00152   catch(mysqlcppapi::ex_BadQuery& er) {
00153     return "";
00154   }
00155   catch(mysqlcppapi::ex_BadConversion& er) {
00156     return "";
00157   }
00158 }

template<class T>
void psfa::DbDriverMySqlHelper::getValueStream const std::ostringstream &  sql,
T &  outStream,
const std::string  delim
[inline]
 

Liefert mehrere Reihen bestehend aus einem Wert.

Parameter:
sql die Abfrage
outStream der OutStream für das Ergebnis
delim der Trenn-String zwischen den Reihen

Definiert in Zeile 168 der Datei DbDriverMySqlHelper.hpp.

Benutzt con_.

Wird benutzt von psfa::DbWriteDriverMySql::delPool() und psfa::DbWriteDriverMySql::removeFiles().

00171     {
00172       try {
00173    mysqlcppapi::Query query = con_.create_Query();
00174    query << sql.str();
00175    mysqlcppapi::Result_Store res = query.store();
00176    if( res.size() != 0 ) {
00177      mysqlcppapi::Result_Store::iterator i    = res.begin();
00178      mysqlcppapi::Result_Store::iterator iEnd = res.end();
00179      for ( ; i != iEnd; ++i) {
00180        mysqlcppapi::Row row = *i;
00181        if( (i + 1) == iEnd ) {
00182          outStream << row[0];
00183          continue;
00184        }
00185        outStream << row[0] << delim;
00186      }
00187    }
00188       }
00189       catch(mysqlcppapi::ex_BadQuery& er) {
00190    return;
00191       }
00192       catch(mysqlcppapi::ex_BadConversion& er) {
00193    return;
00194       }
00195       return;
00196     }

template<class T>
void psfa::DbDriverMySqlHelper::getValueVector const std::ostringstream &  sql,
T &  vec
[inline]
 

Liefert mehrere Reihen bestehend aus einem Wert.

Parameter:
sql die Abfrage
vec der Vector für das Ergebnis

Definiert in Zeile 134 der Datei DbDriverMySqlHelper.hpp.

Benutzt con_.

Wird benutzt von calculateFilePosition(), psfa::DbWriteDriverMySql::check(), psfa::DbReadDriverMySql::getFiles(), psfa::DbReadDriverMySql::getKontextTags(), psfa::DbReadDriverMySql::getPools(), psfa::DbReadDriverMySql::getSearchTags(), psfa::DbReadDriverMySql::getUniqueContent() und psfa::DbReadDriverMySql::getUnits().

00135     {
00136       try {
00137    mysqlcppapi::Query query = con_.create_Query();
00138    query << sql.str();
00139    mysqlcppapi::Result_Store res = query.store();
00140    if( res.size() != 0 ) {
00141      vec.reserve( res.size() );
00142      mysqlcppapi::Result_Store::iterator i;
00143      mysqlcppapi::Result_Store::iterator iEnd = res.end();
00144      for ( i = res.begin(); i != iEnd; ++i) {
00145        mysqlcppapi::Row row = *i;
00146        vec.push_back( row[0] );
00147      }
00148    }
00149       }
00150       catch(mysqlcppapi::ex_BadQuery& er) {
00151    return;
00152       }
00153       catch(mysqlcppapi::ex_BadConversion& er) {
00154    return;
00155       }
00156       return;
00157     }

void psfa::DbDriverMySqlHelper::queryDb const std::ostringstream &  sql,
mysqlcppapi::Result_Store &  store
 

Führt eine Abfrage aus, die Werte erwartet.

Parameter:
sql die Abfrage
store das Ergebnis der Abfrage

Definiert in Zeile 87 der Datei DbDriverMySqlHelper.cpp.

Benutzt con_.

Wird benutzt von psfa::DbReadDriverMySql::getEntries().

00089 {
00090   try {
00091     mysqlcppapi::Query query = con_.create_Query();
00092     query << sql.str();
00093     store = query.store();
00094     return;
00095   }
00096   catch(mysqlcppapi::ex_BadQuery& er) {
00097     return;
00098   }
00099   catch(mysqlcppapi::ex_BadConversion& er) {
00100     return;
00101   }
00102 }


Dokumentation der Datenelemente

mysqlcppapi::Connection psfa::DbDriverMySqlHelper::con_ [private]
 

Die aktuelle Verbindung zur MySql-Datenbank.

Definiert in Zeile 200 der Datei DbDriverMySqlHelper.hpp.

Wird benutzt von connect(), disconnect(), executeSql(), getNextId(), getSingleValueInt(), getSingleValueString(), getValueStream(), getValueVector() und queryDb().

int psfa::DbDriverMySqlHelper::fileId_ = 0 [static, private]
 

die aktuelle ID der Datei

Definiert in Zeile 26 der Datei DbDriverMySqlHelper.cpp.

Wird benutzt von calculateFilePosition().

std::vector< int > psfa::DbDriverMySqlHelper::lengths_ [static, private]
 

der aktuellen Zeilenlängen

Definiert in Zeile 30 der Datei DbDriverMySqlHelper.cpp.

Wird benutzt von calculateFilePosition().

int psfa::DbDriverMySqlHelper::overhead_ = 0 [static, private]
 

DOS oder Unix Zeilenende?

Definiert in Zeile 28 der Datei DbDriverMySqlHelper.cpp.

Wird benutzt von calculateFilePosition().


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
Erzeugt am Mon Jul 12 11:45:08 2004 für PSFA von doxygen 1.3.4