ich weiß das dieses Thema schon öfter hier behandelt wurde. Und ich habe auch einige beiträge dazu gelesen und Ratschläge befolgt. Aber ich stehe entweder so sehr auf dem Schlauch das da gar nix mehr durchkommt oder ich sehe den Wald vor lauter Bäumen nicht.
Ich habe folgende Konsolen-Application:
main.cpp
Code: Alles auswählen
#include <QtCore/QCoreApplication>
#include "dbaccess.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
DBAccess db;
db.open();
db.getData();
return 0;
}
Code: Alles auswählen
#ifndef DBACCESS_H
#define DBACCESS_H
class DBAccess
{
public:
DBAccess();
virtual ~DBAccess();
bool open();
void getData();
};
#endif // DBACCESS_HCode: Alles auswählen
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QVariant>
#include "dbaccess.h"
DBAccess::DBAccess()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER=MySQL ODBC 3.51 Driver;DATABASE=database");
db.setHostName("127.0.0.1");
db.setUserName("user");
db.setPassword("password");
}
DBAccess::~DBAccess() {
if (QSqlDatabase::database().isOpen()) {
QSqlDatabase::database().close();
}
QSqlDatabase::removeDatabase(QSqlDatabase::database().connectionName());
}
bool DBAccess::open() {
return QSqlDatabase::database().open();
}
void DBAccess::getData() {
if (QSqlDatabase::database().isOpen()) {
QSqlQuery qu;
qu.exec("SELECT feld1, feld2 FROM tabelle ORDER BY feld1");
while(qu.next()) {
QString mc = qu.value(0).toString();
QString mn = qu.value(1).toString();
qDebug() << "Feld1: " << mc << " Feld2: " << mn;
}
qu.clear();
} else {
QSqlError err = QSqlDatabase::database().lastError();
qDebug() << "DatabaseText: " << err.databaseText();
qDebug() << "DriverText: " << err.driverText();
qDebug() << "Number: " << err.number();
}
}Code: Alles auswählen
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.Grüße,
Willi