1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| #ifndef SQL_CPP
#define SQL_CPP
#include <QWidget>
#include <QMessageBox>
#include <QFile>
#include <QTextStream>
#include <QSqlDatabase>
#include <QSqlQueryModel>
#include <QSqlQuery>
#include <QSqlError>
QWidget *GLOB_WI_base;
QFile GLOB_database_params_file("G:/tests/BDE/calls.ini");
QTextStream GLOB_stream(&GLOB_database_params_file);
QSqlDatabase GLOB_database;
QString GLOB_database_path;
QString GLOB_database_host;
QString GLOB_database_port;
QString GLOB_database_user;
QString GLOB_database_password;
QSqlQuery GLOB_query;
bool getDatabaseParams()
{
if (!GLOB_database_params_file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QMessageBox::critical(GLOB_WI_base,"Error","Cannot find 'calls.ini'. Be sure the file's in the same folder than 'CALLS.FDB'.");
return false;
}
QString Database_params_file_text;
Database_params_file_text=GLOB_stream.readAll();
QMessageBox::information(GLOB_WI_base,"",Database_params_file_text);
int Index_database_path=Database_params_file_text.indexOf("Database path: ");
int Index_database_host=Database_params_file_text.indexOf("Host: ");
int Index_database_port=Database_params_file_text.indexOf("Port: ");
int Index_database_user=Database_params_file_text.indexOf("User: ");
int Index_database_password=Database_params_file_text.indexOf("Password: ");
GLOB_database_path=Database_params_file_text.mid(Index_database_path+15,Index_database_host-(Index_database_path+15));
GLOB_database_host=Database_params_file_text.mid(Index_database_host+6,Index_database_port-(Index_database_host+6));
GLOB_database_port=Database_params_file_text.mid(Index_database_port+6,Index_database_user-(Index_database_port+6));
GLOB_database_user=Database_params_file_text.mid(Index_database_user+6,Index_database_password-(Index_database_user+6));
GLOB_database_password=Database_params_file_text.mid(Index_database_password+10,Database_params_file_text.size()-(Index_database_password+10));
QMessageBox::information(GLOB_WI_base,"",GLOB_database_path+"\n"+GLOB_database_host+"\n"+GLOB_database_port+"\n"+GLOB_database_user+"\n"+GLOB_database_password);
return true;
}
bool connectDatabase()
{
GLOB_database.close();
if(getDatabaseParams()==true)
{
GLOB_database=QSqlDatabase::addDatabase("QIBASE");
GLOB_database.setDatabaseName(GLOB_database_path);
GLOB_database.setHostName(GLOB_database_host);
GLOB_database.setPort(GLOB_database_port.toInt());
GLOB_database.setUserName(GLOB_database_user);
GLOB_database.setPassword(GLOB_database_password);
if(!GLOB_database.open()){
QMessageBox::critical(GLOB_WI_base, "Connection failed", "Error while opening the database : "+GLOB_database.lastError().text());
}else{
GLOB_query=QSqlQuery(GLOB_database);
return true;
}
}
return false;
}
void changeDatabaseParams(QString PAR_GLOB_database_path, QString PAR_GLOB_database_host, QString PAR_GLOB_database_port, QString PAR_GLOB_database_user, QString PAR_GLOB_database_password)
{
if (!GLOB_database_params_file.open(QIODevice::WriteOnly | QIODevice::Truncate))
{
QMessageBox::critical(GLOB_WI_base,"Error","Cannot find 'calls.ini'. Be sure the file's in the same folder than 'CALLS.FDB'.");
}
GLOB_stream<<"Database path: "+PAR_GLOB_database_path
+"\nHost: "+PAR_GLOB_database_host
+"\nPort: "+PAR_GLOB_database_port
+"\nUser: "+PAR_GLOB_database_user
+"\nPassword"+PAR_GLOB_database_password;
GLOB_database_path=PAR_GLOB_database_path;
GLOB_database_host=PAR_GLOB_database_host;
GLOB_database_port=PAR_GLOB_database_port;
GLOB_database_user=PAR_GLOB_database_user;
GLOB_database_password=PAR_GLOB_database_password;
connectDatabase();
}
/***************
* SQL QUERIES *
***************/
void getUsers(QList<QString> &PAR_list_users)
{
GLOB_query.prepare("SELECT CO_NAME FROM TA_COLLEAGUE ORDER BY CO_NAME;");
if(!GLOB_query.exec())
QMessageBox::critical(GLOB_WI_base, "Query execution error", "Error occured while query execution : "+GLOB_query.lastError().text());
while(GLOB_query.next())
{
bool New=true;
for(int i=0;i<PAR_list_users.count();i++)
{
if(GLOB_query.value(0).toString()==PAR_list_users[i])
New=false;
}
if(New)
PAR_list_users.append(GLOB_query.value(0).toString());
}
}
#endif // SQL_CPP |
Partager