Mam prosta aplikacje w Qt dzialajaca na tej zasadzie - ktos klika w menu, otwiera sie okienko, w ktore wprowadza dane, dane sa zapisywane do bazy. Po zamknieciu okienka (i programu) baza dalej istnieje, nie usuwam jej - tak trzymam sobie dane wstawione przez uzytkownika.
Mam pewien probem z tym - i juz kompletnie brak sil, aby to sensownie rozwiazac :/ nie odsylajcie mnie blagam do google (chyba juz cale przeszukalem :p wpisujac: multiply database connections qt) i zero rezultatow, ktore by mi pomogly ... Chodzi o to, ze jak user za 1 razem klika, wprowadza dane, zapisuja sie. Potem, kolejnym razem, dostaje taki komunikat:
QSqlDatabasePrivate::addDatabase: duplicate connection name 'nazwaBazy', old connection removed.
QSqlQuery::exec: database not open
"table nazwaTabeli already exists"
"Unable to execute statement"
no i jak latwo sie domyslic, nic sie nie zapisuje ...
A do bazy wpisuje tak:
mojaBaza = QSqlDatabase::addDatabase("QSQLITE", "daneOs");
mojaBaza.setHostName("localhost");
mojaBaza.setDatabaseName("./daneOs.gdb");
mojaBaza.setUserName("Administrator");
mojaBaza.setPassword("dupa.8");
if (!mojaBaza.open()) {
QMessageBox::critical(0, QObject::tr("Database Error"),mojaBaza.lastError().text());
exit(1);
}
QSqlQueryModel modelCreate;
modelCreate.setQuery("select * from mojaTabela");
QSqlQuery query(registeredUsersDb);
if(modelCreate.record().isEmpty())
{
query.exec("create table mojaTabela (id integer primary key autoincrement, " "imie varchar(40), nazwisko varchar(60), adres varchar(80))");
qDebug() << query.lastError().databaseText();
qDebug() << query.lastError().driverText();
query.prepare("insert into mojaTabela values(:id,:imie,:nazwisko,:adres)");
query.bindValue(":imie",getImie());
query.bindValue(":nazwisko",getNazwisko());
query.bindValue(":adres",getAdres());
query.exec();
qDebug() << query.lastError().databaseText();
qDebug() << query.lastError().driverText();
if(mojaBaza.isOpen())
{
mojaBaza.close();
}
}
else
{
query.prepare("insert into mojaTabela values(:id,:imie,:nazwisko,:adres)");
query.bindValue(":imie",getImie());
query.bindValue(":nazwisko",getNazwisko());
query.bindValue(":adres",getAdres());
query.exec();
qDebug() << query.lastError().databaseText();
qDebug() << query.lastError().driverText();
if(mojaBaza.isOpen())
{
mojaBaza.close();
}
}
Blagam ... pomóżcie ;)