Hallo zusammen,
ich habe eine Verständnisfrage beim Zugriff auf die Datenbank (MS SQL-Server 2012, Qt5.1.1, Win7 prof.). Folgender Code dient zum Verbinden mit dem DB-Server :
Code: Alles auswählen
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
//db.setHostName("servertest");
db.setDatabaseName("servertest");
db.setUserName("xxx");
db.setPassword("yyy");
ok = db.open();
Unter Systemsteuerung > Verwaltung > Datenquellen (ODBC) habe ich eine Systemdatenquelle namens servertest eingerichtet (dortiger Test war erfolgreich). db.open funktioniert nur, wenn ich servertest als DatabaseName benutze, nicht als HostName. Als Hostname kommt die Fehlermeldung (Fehler Datenbank öffnen: "[Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben QODBC3: Unable to connect" ). Wieso? ... Somit arbeite ich auf keiner konkreten Datenbank auf dem Server (Master?, der zuletzt benutzten?). Wenn ich die SQL-Befehle dann gemäß des Benennungssyntaxes ( (Server.)Database.DatabaseSchema.DatabaseObject) ausführe, funktionieren sie auch:
Code: Alles auswählen
query = QString("CREATE TABLE produktion..jobs (jobID int, jobName varchar(64) )");
ok = q.exec(query);
if (!ok) qDebug() << "Fehler Tabelle erstellen" << q.lastError().text();
cu,
dd0815