#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(). |
1.3.4