[gelöst] qt eval und vorübergehen odbc, später mysql modul

Alles rund um die Programmierung mit Qt
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

[gelöst] qt eval und vorübergehen odbc, später mysql modul

Beitrag von kowi1134 »

Hallo!

Bei der Evaluation von Qt gibt es ja kein MySQL Modul. Jetzt möchte ich vorübergehend ODBC benutzen und dann, wenn Qt "frei" ist das MySQL Modul.
Ich habe einen MySQL-Server installiert und erfolgreich getestet.
Dann habe ich mir MyODBC runtergeladen und installiert.
Jetzt komme ich aber nicht klar mit dem herstellen einer Verbindung zur MySQL-Datenbank mittels ODBC.

Wie muss mein Code in Qt aussehen, wenn ich mich mit den folgenden Paramtern mit einer Datenbank verbinden will? Danach würde ich gerne einen einfachen SQL-Query ausführen können!

Benutzer: klaus
Password: 83id0932
Datenbank: world
Host: localhost

(diese Daten sind ausgedacht)

MfG
Kowi
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Schau dir die Doku zu QDatabase an!
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag von kowi1134 »

diese klasse gibt es zumindest bei der qt3 eval. nicht...
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

dann haste bei der Installation die Database Module nicht angegeben...
Die gibt es aber auf jeden Fall!
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag von kowi1134 »

doch, habe ich...
und guck doch mal auf dieser offiziellen Seite, ob Du die Klasse da findest:

http://doc.trolltech.com/3.3/classes.html
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Er meinte QSqlDatabase.
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag von kowi1134 »

Vorweg: Was um alles in der Welt mache ich einem Forum, in dem man andauernd auf die Dokumention verwiesen wird?! :)

Als Erklärung für den QString databaseName gibt es follgenden Text:

...
db = QSqlDatabase::addDatabase( "QODBC3" );
db->setDatabaseName( "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=myaccessfile.mdb" );
if ( db->open() ) {
// success!
}
...

Und genau mit der Funktion setDatabaseName kann ich nichts anfangen, weil ich mich mit ODBC eben nicht auskenne. Es steht hier meines Erachtens nichts von einem Benutzernamen oder einer Datenbank oder irre mich hier?
Wie müsste mein Funktionsparamter denn aussehen, wenn ich mich mit einer MySQL-Datenbank verbinden will (Parameter s.o.)?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Hättest du gleich gesagt, das du zu einem MySQL Server Verbinden willst und wissen willst, wie das aussieht hätte ich dir schon früher helfen können. Außerdem habe ich dich ja nicht verwiesen, lediglich den Verweis auf die richtige Klasse gegeben. Also, eine Verbindung zu einer MySQL Datenbank sieht so aus:

Code: Alles auswählen

connection = QSqlDatabase::addDatabase( "QMYSQL3" );
connection -> setDatabaseName( "DATENBANK_NAME" );
connection -> setUserName( "root" );
connection -> setPassword( "" );
connection -> setHostName( "localhost" );
connection -> setPort( 3306 );
/* Bsp für weitere Optionen */
connection -> setConnectOptions( "CLIENT_COMPRESS;CLIENT_IGNORE_SPACE" );
Aber selbst das steht genauso in der Dokumentation. Wenn du sehr oft dorthin verwiesen wirst, bedeutet das vielleicht es sind simple Dinge, die klar und deutlich bereits in der Dokumentation stehen?

Ich hoffe, ich konnte dir helfen. Wobei ich aus persönlicher Sicht durch die ganzen Versionsunterschiede zwischen 3.x, 4.0 und 4.1 dazu übergegangen bin mit libmysqlclient14 (4.1) only zu arbeiten und nicht über das Plugin sondern über mysql++ zu gehen. Würde sich außerdem anbieten, da in deiner Version ja eh kein MySQL Plugin enthalten ist. Ist aber nur ein Tipp/Hinweis meinerseits.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

db->setUserName(...)
db->setPassword(...)

Doku lesen, kann ich nur empfehlen :)
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ja, die Doku von Qt ist ausgesprochen gut. Und zwar in jeder Klasse. Es ist neben monotone eine der besten Dokumentationen die ich kenne. Auch wenn Sie nur in Englisch verfügbar ist, aber zum Programmieren braucht man ja auch einiges an englischem Verständnis.
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag von kowi1134 »

Danke für den Code Florian! Habe mir mysql++ schon mal angeschaut, aber meine C++ Kenntnisse sind nicht so versiert, glaube ich!

Klar die Doku ist super, aber wenn ich VON der Doku ZUM Forum komme... :)
Ein Problem habe ich dennoch!!! Ich habe einen MySQL-Server, aber kein MySQL-Modul soviel ist klar. Ich will aber ODBC and MySQL ran!!! Und hier stoße ich in der Qt3 Doku auf Granit...
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Naja, ehrlich gesagt ist das ja auch kein Thema, was Qt betrifft. Qt ist wie man ODBC anspricht und MySQL ist wie man MySQL über ODBC benutzt. Wobei wenn du nur MySQL benutzt würde ich mir das mit dem ODBC nochmal überlegen, denn der Befehlssatz weicht doch hier und dort gewaltig ab und er stößt relativ schnell an seine Grenzen. mysql++ ist das gleiche wie die Qt Klassen nur mit anderen Namen.

Baue eine Verbindung auf, z.B. Global und frage dann deine benötigen Sachen ab. Da Qt, STL Support besitzt kannst du das dann einfach anstelle eines std::string's gleich als QString behandeln.
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag von kowi1134 »

Danke, dann versuch ich es mal mit mysql++.

Upps,...
auf der Seite: http://tangentsoft.net/mysql++/
steht folgendes:
Will it build under Visual C++ 6?

No, it won't. This is a six-year-old compiler, and it had the worst Standard C++ support of any compiler in its time. MySQL++ doesn't build with six-year-old versions of GCC, either. I'm not going to hold back the technical development of MySQL++ just to accommodate a weak implementation of C++.

The last version to work with this compiler is 1.7.1, linked above. I cannot support this version; I don't even know if it's a stock 1.7.1 or a hacked version. If it works, I'm happy for you. If it breaks, you get to keep both pieces.
Und da ich nur Visual C++ 6.0 als Buch Edition habe, brauche ich hiermit wohl gar nicht erst anzufangen, wie?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

nmake ist im MS .NET Framework kostenlos enthalten. Und da ist der Beta bereits Version 8.xx da und in der stable 7.xx.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Vergiss doch dein MySQL und mach alles über ODBC. Da haste weniger Stress (am Angang versteht sich :) ). Oder handelt es sich um irgendwelche Aufgaben, die eine Optimierung der Datenbankleistung erfordern?
Antworten