QT4 und MS SQL

Alles rund um die Programmierung mit Qt
Antworten
Pedde
Beiträge: 13
Registriert: 6. Juli 2005 08:01

QT4 und MS SQL

Beitrag von Pedde »

Hallo,
ich habe schon viel gesucht zu der Frage wie ich eine Verbindung zu einem MS SQL Server herstelle, aber leider habe ich nur mangelhafte Ergebnisse gefunden.

Mein letzter Stand ist, dass ich dies über eine ODBC Verbindung versuchen muss, aber leider scheitert es da an der Konfiguration:
- muss da eine ODBC Verbindung auch in Windows eingerichtet werden
- welche Parameter gibt es bei setDatabaseName(...)

Ich habe es so versucht:

Code: Alles auswählen

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER={SQL Server};SERVER=gis_server;DATABASE=vbd");
...
Kann das so funktionieren?

Thx Pedde
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Warum stellst du keine Verbindung über den TDS Treiber her?

Die EVAL von Linux ist die Linux commercial und dort ist der TDS Treiber enthalten, den man übrigens direkt unter Win, Lin und/oder Mac übersetzen kann.
Pedde
Beiträge: 13
Registriert: 6. Juli 2005 08:01

Beitrag von Pedde »

Wie stelle ich denn da eine Verbindung her?

Code: Alles auswählen

LOGINREC *loginRecord, DBPROCESS *dbProcess, const QString &hostName
sagt mir nicht viel...

--
Pedde
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Das ist doch auch nur der Händle für die eigentliche Verbindung, die ja auf den Nenner von QtSql gebracht wird.

Eine Verbindung wird genauso hergestellt, wie eben nicht ODBC Verbindungen hergestellt werden.

In der Dokumentation stehen einige Beispiele für PostgreSQL und MySQL und genauso geht das auch mit MS SQL, aber nicht vergessen, ohne das QTDS Plugin geht gar nix.

Code: Alles auswählen

QDatabase db = QDatabase::addDatabase( "QTDS" );
db.setHostName( /* localhost, oder SERVERNAME */ );
db.setPort( 1433 ); //default MS SQL Port
db.setDatabaseName( /* default Database Schema */ );
db.setUserName( /* Benutzername */ );
db.setPassword( /* Passwort */ );
db.open();
Fertig ist deine Verbindung. Wieso arbeiten so viele Leute mit MSSQL? Es gibt viel bessere Lösungen, wie ich finde.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Bessere Lösungen kosten Geld. Geld haben viele Leute nicht :)
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

FlorianBecker hat geschrieben: Wieso arbeiten so viele Leute mit MSSQL?
Weil so viele Leute mit MSSQL arbeiten, sowas ist immer von Vorteil :D

Goos
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ok, lass uns diskutieren. PostgreSQL? MySQL?

Die APIs von oben genannten Datenbanken sind wesentliche sauberer, und an die Geschwindigkeit von MySQL kann man sich schnell gewöhnen.

Denkst du diese Lösungen sind nicht so gut? Ich frage das aus eigenem Interesse, denn in MySQL bin ich persönlich ja beinahe schon verliebt. :D
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Eventuell must du noch das Passwort und den
Nutzernamen übergeben. Dann könnte es eventuell über den ODBC Treiben gehen.
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

FlorianBecker hat geschrieben:Ok, lass uns diskutieren. PostgreSQL? MySQL?
Sollte man vielleicht in einem neuen Thread tun, damit der hier nicht zu sehr verwaessert wird.
FlorianBecker hat geschrieben: Die APIs von oben genannten Datenbanken sind wesentliche sauberer, und an die Geschwindigkeit von MySQL kann man sich schnell gewöhnen.
Reden wir von dem Ganzen jetzt hauptsaechlich in Bezug auf QT?

FlorianBecker hat geschrieben: Denkst du diese Lösungen sind nicht so gut? Ich frage das aus eigenem Interesse, denn in MySQL bin ich persönlich ja beinahe schon verliebt. :D
Vorsicht, verliebt sein ist immer problematisch *g*...man uebersieht da leicht mal auch ein paar Schwaechen und Probleme ;)

Goos
palto
Beiträge: 4
Registriert: 28. März 2006 18:44

Beitrag von palto »

so geht's ganz bestimmt:

QSqlDatabase objQSqlDb=QSqlDatabase::addDatabase("QODBC");
objQSqlDb.setDatabaseName("DRIVER={SQL Server};Server=ServerName;Trusted_Connection=no;Database=DataBaseName;Uid=sa;Pwd=pwd;");
objQSqlDb.setUserName("sa");
objQSqlDb.setPassword("pwd");
objQSqlDb.setHostName("ServerName");
bool bRetVal=objQSqlDb.open();

WICHTIG: QODBC Plugin muss vorhanden sein (siehe Plugin Verzeichnis).
nubertus
Beiträge: 1
Registriert: 10. Mai 2006 11:31

Beitrag von nubertus »

warum mssql verwenden? vielleicht weil es beim visual studio dabei ist? vielleicht weil die expressversion kostenlos ist und zur kommerziellen verwertung gut geeignet, was man von mysql nur bedingt behaupten kann.
ausserdem gibt es da eventuell eine bessere zusammenarbeit mit
mssql mobile. allzuviele mobile datenbanken für windows-pdas gibt es ja nicht für lau...

was auch immer "saubere apis" sein sollen - klingt für mich eher nach phrase. von der benutzung her sind die unterschiede der genannten dbs eher gering.

paltos source drängt mir die frage auf, warum man die bei setDatabaseName übergebenen parameter anschliessend nochmal setzen muss.
Antworten