Visual Studio C++ + Qt Plugin "Datenbank Error Connection"

Gast #3957143
Lesenswert?
• ▲
▼
Ich arbeite in eine der projekte mit Datenbanken (Access Datenbank).
In dieses Datenbanken werden nur Messdaten geschrieben.
Bei mir auf meinen PC funktioniert alles einwandfrei.
wenn ich dieses projekte in eine andere PC teste dann bekomme ich  keine 
Verbindung zu Datenbank "Seh bitte Anhang"


Wie gesagt auf meinen PC könnte ich immer testen und sobald ich in einem 
anderen PC ausprobiere bekomme ich die oben genannte Fehlermeldung.

Was für treiber kann es fehlen?
Auf der andere Maschiene  ist auch die Office Paket installiert.
gibt es einen QOBDC driver?

Danke in voraus
Angehängte Dateien:
Gast #3957164
Lesenswert?
• ▲
▼
David schrieb:
> Was für treiber kann es fehlen?
Vermutlich der ODBC Treiber für die Access Datenbank
> Auf der andere Maschiene  ist auch die Office Paket installiert.
Ja, dabei wird der mitinstalliert.
http://www.microsoft.com/de-de/download/details.aspx?id=13255  Mit 
diesem Download kannst du den auch ohne Office installieren. Aber 
Achtung: Die Bittigkeit muss der deiner Anwendung entsprechen, also wenn 
deine Anwendung 32bit ist brauchst du den 32bit Treiber (auch wenn es 
ein 64bit System ist). Das ist btw besonders lustig mit Java, weil man 
da a priori gar nicht weiß ob die JVM 32bit oder 64bit ist...
Persönliche Seite #3957359
Lesenswert?
• ▲
▼
Dann genügt es vielleicht nicht, nur den "Datenbanktreiber" zu 
installieren, sondern es muss auch eine ODBC-Verbindung konfiguiert sein 
...

Sieh Dir mal an, was odbcad32.exe auf dem Rechner, wo der Kram 
funktioniert, als System-DSNs oder User-DSNs ausgibt.

Achtung:

Wenn Du auf einem 64-Bit-Windows arbeitest, wird standardmäßig die 
64-Bit-Version von odbcad32.exe aufgerufen; die aber ist nur für 
ODBC-Verbindungen von 64-Bit-Programmen zuständig. Möchtest Du die 
ODBC-Verbindungen für 32-Bit-Programme konfigurieren, musst Du die für 
32-Bit-Verbindungen zuständige Version von odbcad32.exe aufrufen.

Genialerweise heißen beide Ausführungen gleich, und genialerweise sind 
sie auch optisch nicht zu unterscheiden.

Die 64-Bit-Version findet sich unter

c:\windows\system32\odbcad32.exe

Die 32-Bit-Version hingegen findet sich unter

c:\windows\syswow64\odbcad32.exe


Ja. Das ist Windows. So ist das.
Gast #3957762
Lesenswert?
• ▲
▼
Wie sieht denn der Code aus wo mit der DB kommuniziert wird, bzw. die 
Verbindung geöffnet wird? Und was wird da konkret für eine Komponente 
für genutzt? (Ich kenne zwar QT nicht, aber vllt. kann man daran ja 
trotzdem was erkennen)

Wenn ich das hier richtig interpretiere:
http://qt-project.org/forums/viewthread/19174
...gibt es da bei QT scheinbar irgendwelche Klassen, die für den 
DB-Zugriff verantwortlich sind und dort selbst auch Treiber genannt 
werden? D.h. das Problem liegt ggf. an der QT-Runtime die nicht 
korrekt/vollständig genug auf dem Zielrechner angekommen ist oder wo 
Teile nicht gefunden werden?
Gast #3958253
Lesenswert?
• ▲
▼
hier ist meine Klasse, die für die DatenBankverbindung verantwortlich 
ist:

Header File:
1
class DatabaseManager
2
{
3
public:
4
  static DatabaseManager &getInstance();
5
  static QSqlDatabase db;
6
  static bool createConnection();
7
......
8
};

Cpp File:
1
#include "DatabaseManager.h"
2
 
3
QSqlDatabase DatabaseManager::db  = QSqlDatabase::addDatabase("QODBC");
4
DatabaseManager::DatabaseManager(void)
5
{
6
}
7

8
DatabaseManager::~DatabaseManager(void)
9
{
10
  db.close();
11
}
12
DatabaseManager &DatabaseManager::getInstance()
13
{
14
  static DatabaseManager databaseManager;
15
  return databaseManager;
16
}
17

18
bool DatabaseManager::createConnection()
19
{
20
     db.setDatabaseName("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:/Messungen/TestDB.accdb");
21

22
    if (!db.open()){
23
    QMessageBox::critical(0,
24
    QObject::tr("Database Error Connection"), db.lastError().text());
25
  return false;
26
  }
27

28
  return true;
29
}

Ich habe dann eine Installer daraus gemacht wo ich dann auf beliebige PC 
installieren kann.

Bei mir funktioniert einwandfrei und ich kann die DB öffnen.
Die nötige Dll sind auch bei der Installer von daher nach meine 
Einschätzung muss es eigentlich alles okay sein.

Ich komme zu ersten mal mit der Datenbank in Berührung und weiss es 
wirklich nicht wo das Probelem sein kann.
Gast #3958846
Lesenswert?
• ▲
▼
Ich benutze aber Access Datenbank bzw. QODBC und ich habe folgende DLL 
file miteingepackt.

QSQL4.dll
QSQLODBC4.dLL
QSQLPSQL4.dll
QSQLLITE4.dll
 und trotzdem bekomme ich immmer die gleiche Fehlermeldung.

Wie gesagt auf mein PC funktioniert aber in eine andere PC leider nit.


Was muss ich noch als DLL miteinpacken?
Gast #3958861
Lesenswert?
• ▲
▼
David schrieb:
> Ich benutze aber Access Datenbank bzw. QODBC und ich habe folgende DLL
> file miteingepackt.
>
> QSQL4.dll
> QSQLODBC4.dLL
> QSQLPSQL4.dll
> QSQLLITE4.dll
>  und trotzdem bekomme ich immmer die gleiche Fehlermeldung.

nein, für ODBC wird wohl nur die QSQLODBC4.dLL verwendet.

Hast du mal genau den Treibername zwischen den beiden PCs verglichen?

Oder als alternative einfach mal eine DSN anlegen und schauen ob das 
damit geht.
Gast #3958871
Lesenswert?
• ▲
▼
David schrieb:
> Was meinst du genau?

Bei filemon/process monitor wird angezeigt welche Dateien die Anwendung 
versucht zu laden, damit kann man schonmal seltsame Probleme aufdecken.
z.B. kann es sein, dass er zwar die "QSQLODBC4.dLL" findet, diese aber 
wiederum Abhängigkeiten hat die man aus irgendwelchen Gründen auf dem 
Zielrechner nicht hat. Oder man kann damit auch sehen, ob er *.dlls ggf. 
im falschen Ordner sucht.
Gast #3962543
Lesenswert?
• ▲
▼
bluppdidupp schrieb:
> David schrieb:
>> Was meinst du genau?
>
> Bei filemon/process monitor wird angezeigt welche Dateien die Anwendung
> versucht zu laden, damit kann man schonmal seltsame Probleme aufdecken.
> z.B. kann es sein, dass er zwar die "QSQLODBC4.dLL" findet, diese aber
> wiederum Abhängigkeiten hat die man aus irgendwelchen Gründen auf dem
> Zielrechner nicht hat. Oder man kann damit auch sehen, ob er *.dlls ggf.
> im falschen Ordner sucht.

Bei diesem programm "Prozess Monitor" muss ich immer die Admin rechte 
haben?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren