Seite 1 von 1
QT4 und MS SQL
Verfasst: 7. Oktober 2005 10:01
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
Verfasst: 7. Oktober 2005 10:21
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.
Verfasst: 7. Oktober 2005 10:44
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
Verfasst: 7. Oktober 2005 10:56
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.
Verfasst: 7. Oktober 2005 11:15
von lepsai
Bessere Lösungen kosten Geld. Geld haben viele Leute nicht

Verfasst: 7. Oktober 2005 11:23
von Goos
FlorianBecker hat geschrieben: Wieso arbeiten so viele Leute mit MSSQL?
Weil so viele Leute mit MSSQL arbeiten, sowas ist immer von Vorteil
Goos
Verfasst: 7. Oktober 2005 11:26
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.

Verfasst: 7. Oktober 2005 11:33
von BartSimpson
Eventuell must du noch das Passwort und den
Nutzernamen übergeben. Dann könnte es eventuell über den ODBC Treiben gehen.
Verfasst: 7. Oktober 2005 11:39
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.

Vorsicht, verliebt sein ist immer problematisch *g*...man uebersieht da leicht mal auch ein paar Schwaechen und Probleme
Goos
Verfasst: 28. März 2006 19:00
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).
Verfasst: 10. Mai 2006 11:42
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.