Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef OPENMS_FORMAT_DB_DBCONNECTION_H
00036 #define OPENMS_FORMAT_DB_DBCONNECTION_H
00037
00038 #include <OpenMS/config.h>
00039
00040
00041 #include <QtSql/QSqlDatabase>
00042 #include <QtSql/QSqlQuery>
00043
00044
00045 #include <OpenMS/CONCEPT/Exception.h>
00046 #include <OpenMS/DATASTRUCTURES/String.h>
00047 #include <OpenMS/CONCEPT/Types.h>
00048
00049 #include <iostream>
00050
00051 namespace OpenMS
00052 {
00060 class OPENMS_DLLAPI DBConnection
00061 {
00062 public:
00070 class OPENMS_DLLAPI InvalidQuery :
00071 public Exception::BaseException
00072 {
00073 public:
00074 InvalidQuery(const char * file, Int line, const char * function, const String & sql_query, const String & sql_error);
00075 ~InvalidQuery() throw();
00076 };
00077
00085 class OPENMS_DLLAPI NotConnected :
00086 public Exception::BaseException
00087 {
00088 public:
00089 NotConnected(const char * file, Int line, const char * function);
00090 ~NotConnected() throw();
00091 };
00092
00093
00094
00096 DBConnection();
00097
00099 ~DBConnection();
00100
00114 void connect(const String & db, const String & user, const String & password, const String & host = "localhost", UInt port = 3306, const String & QTDBDriver = DB_PLUGIN, const String & connection_name = "OpenMS_default_connection");
00115
00117 bool isConnected() const;
00118
00124 void disconnect();
00125
00138 QSqlQuery executeQuery(const String & query, bool first = false);
00139
00153 Int getIntValue(const String & table, const String & column, const String & id);
00154
00169 double getDoubleValue(const String & table, const String & column, const String & id);
00170
00184 String getStringValue(const String & table, const String & column, const String & id);
00185
00198 UInt getId(const String & table, const String & column, const String & value);
00199
00201 UInt getAutoId();
00202
00204 String DBName() const;
00205
00217 void render(QSqlQuery & result, std::ostream & out = std::cout, const String & separator = " | ", const String & line_begin = "", const String & line_end = "\n");
00218
00219
00230 template <class StringListType>
00231 void executeQueries(const StringListType & queries);
00232
00233 private:
00234
00236 QString connection_name_;
00237
00239 inline QSqlDatabase getDB_() const
00240 {
00241 return QSqlDatabase::database(connection_name_, false);
00242 }
00243
00244 };
00245
00246
00247
00248
00249
00250
00251
00252 template <class StringListType>
00253 void DBConnection::executeQueries(const StringListType & queries)
00254 {
00255 String line;
00256 for (typename StringListType::const_iterator it = queries.begin(); it != queries.end(); ++it)
00257 {
00258 line = *it;
00259 line.trim();
00260 if (line != "")
00261 {
00262 executeQuery(line);
00263 }
00264 }
00265 }
00266
00267 }
00268
00269 #endif