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

Gast #3957143
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
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
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
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
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
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
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
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
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?
Gast #3962565
Hallo,

Nach der Installation des Prozess Monitors habe ich festgestellt, dass 
der Installer auf der Ordner, wo QT installiert ist zugreift.

Mir ist dieses Zugriff unerklärlich?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.