Hej,
na potrzeby swojego projektu, w którym będzie potrzeba połączenia się z dwoma bazami danych jednocześnie, stworzyłem swoją klasę do łączenia się z bazami:
#ifndef SQL_FUNKCJE_H
#define SQL_FUNKCJE_H
#include <QSqlQuery>
#include <QSqlDatabase>
#include <QString>
#include <QMessageBox>
#include <QCoreApplication>
#include <QSqlQueryModel>
class Sql_funkcje
{
public:
Sql_funkcje();
Sql_funkcje(int x);
QSqlDatabase db;
QSqlQueryModel *model;
void connect(QString nazwa_bazy);
QString select(QString tabela, QString wartosci, QString warunek = "1=1");
void insert(QString tabela, QString values, QString zmienne);
void update(QString tabela, QString set, QString warunek);
void delet(QString tabela, QString warunek);
void close();
int isOpen();
int poziom_uprawnien;
};
#endif // SQL_FUNKCJE_H
Klasa nie jest statyczna, więc każda inicjalizacja nowego obiektu o nazwie Sql_funkcje w której uruchomiona została metoda connect, powinna przetrzymywać tylko wybrane dla siebie połączenie z bazą. Ale tak nie jest.
Przykładowo mam dwa pliki w programie o nazwach:
pierwszy.cpp
pierwszy.h
drugi.cpp
drugi.h
Jeśli w pierwszym pliku stworzę sobie obiekt Sql_funkcje baza i połączę się w niej z jakąś bazą, to inicjując nowy obiekt w pliku drugi.cpp o nazwie Sql_funkcje baza2, ma ona juz na samym początku zainicjowane połączenie do bazy takiej, jak w pliku pierwszy.cpp. Co więcej, kiedy w drugi.cpp wykonam connecta dla zmiennej baza2, to automatycznie połączenie ze zmiennej baza zostanie nadpisane.
Niestety w moim programie wymagane jest, aby móc się połączyć z dwoma bazami jednocześnie. Moje pytanie, czy jestem w stanie to jakoś obejść? Czy da się łączyć jednocześnie z dwoma bazami w programie?