#include <psfa/DbDriverMySqlHelper.hpp>
Ö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 |
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.
|
Berechnet die Position in einer Datei. Dabei wird aus Performanzgründen die statischen Variablen fileId_, lengths_ und overhead_ verwendet.
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 } |
|
Stellt eine Verbindung zu einer MySql-Datenbank her. In der Konfiguration werden Host, Benutzer, Passwort und Datenbankname benötigt.
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 } |
|
Beendet die Verbindung.
Definiert in Zeile 54 der Datei DbDriverMySqlHelper.cpp. Benutzt con_. Wird benutzt von psfa::DbReadDriverMySql::~DbReadDriverMySql() und psfa::DbWriteDriverMySql::~DbWriteDriverMySql().
|
|
Führt eine SQL-Anweisung aus, die keine Werte erwartet. Also beispielsweise eine INSERT-Anweisung.
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 } |
|
Liefert die nächste ID in einer Tabelle.
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 } |
|
Liefert einen einzelnen Int-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 } |
|
Liefert einen einzelnen String-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 } |
|
Liefert mehrere Reihen bestehend aus einem Wert.
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 } |
|
Liefert mehrere Reihen bestehend aus einem Wert.
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 } |
|
Führt eine Abfrage aus, die Werte erwartet.
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 } |
|
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(). |
|
die aktuelle ID der Datei
Definiert in Zeile 26 der Datei DbDriverMySqlHelper.cpp. Wird benutzt von calculateFilePosition(). |
|
der aktuellen Zeilenlängen
Definiert in Zeile 30 der Datei DbDriverMySqlHelper.cpp. Wird benutzt von calculateFilePosition(). |
|
DOS oder Unix Zeilenende?
Definiert in Zeile 28 der Datei DbDriverMySqlHelper.cpp. Wird benutzt von calculateFilePosition(). |