From 6faae8ae2d4575bb03459bd381a5cf8da8044b3c Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Wed, 3 Oct 2012 11:14:40 -0500 Subject: [PATCH] Minor tweaks to ODBC connection string to work better on win32. --- src/mainwin.cpp | 78 +++++++++++++++++++------------------------------ 1 file changed, 30 insertions(+), 48 deletions(-) diff --git a/src/mainwin.cpp b/src/mainwin.cpp index d453103..55ba367 100644 --- a/src/mainwin.cpp +++ b/src/mainwin.cpp @@ -106,7 +106,6 @@ MainWindow::MainWindow(): aboutWin(new AboutWindow(this)), // Finally, set up database connection -// db = QSqlDatabase::addDatabase("QMYSQL"); db = QSqlDatabase::addDatabase("QODBC"); bool ok = false; @@ -119,27 +118,18 @@ MainWindow::MainWindow(): aboutWin(new AboutWindow(this)), sqlSettings.edit4->setText(dbUserName); sqlSettings.edit5->setText(dbPassword); -#if 0 -db = QSqlDatabase::addDatabase("QODBC"); -db.setDatabaseName("Driver={MySQL ODBC 5.1 Driver};DATABASE=agp-dbserver01;"); -db.setUserName("xcdr"); -db.setPassword("xcdr"); -#endif do { - // Set up the DB connection with saved settings - QString odbc = QString("DRIVER={%1};DATABASE=%2;").arg(dbDriver).arg(dbName); - db.setHostName(dbHostName); + // Set up the ODBC DB connection with saved settings + // NB: For this to work properly on 64-bit Windows, you need to use the 32-bit driver! + QString odbc = QString("DRIVER={%1};DATABASE=%2;SERVER=%3;UID=%4;PASSWORD=%5") + .arg(dbDriver).arg(dbName).arg(dbHostName).arg(dbUserName).arg(dbPassword); db.setDatabaseName(odbc); - db.setUserName(dbUserName); - db.setPassword(dbPassword); ok = db.open(); // If unsuccessful, run the SQL settings/test dialog if (!ok) { -//printf("Error: %s\n", db.lastError().databaseText().toAscii().data()); -//printf("Error: %s\n", db.lastError().driverText().toAscii().data()); sqlSettings.error1->setText(db.lastError().databaseText()); sqlSettings.error2->setText(db.lastError().driverText()); @@ -167,45 +157,37 @@ db.setPassword("xcdr"); if (query.value(0).toInt() > 1) { - // Do Login dialog - LoginDialog loginDlg; - bool done = false; + // Do Login dialog + LoginDialog loginDlg; + bool done = false; - do - { - bool accept = loginDlg.exec(); - - // Check to see if user cancelled out - if (!accept) - done = true; - else + do { -#if 0 - // Search DB for this username/login pair - QSqlQuery query("SELECT UID, name, login FROM User WHERE Login=? AND Password=?"); - query.addBindValue(loginDlg.edit1->text()); - query.addBindValue(loginDlg.edit2->text()); - query.exec(); -#else - // Search DB for this username/login pair - QSqlQuery query; - query.prepare("SELECT UID, name, login FROM User WHERE Login=? AND Password=?"); - query.addBindValue(loginDlg.edit1->text()); - query.addBindValue(loginDlg.edit2->text()); - query.exec(); -#endif - - while (query.next()) - { - // We have a winner! - loggedInUID = query.value(0).toInt(); - fullName = query.value(1).toString(); - login = query.value(2).toString(); + bool accept = loginDlg.exec(); + + // Check to see if user cancelled out + if (!accept) done = true; + else + { + // Search DB for this username/login pair + QSqlQuery query; + query.prepare("SELECT UID, name, login FROM User WHERE Login=? AND Password=?"); + query.addBindValue(loginDlg.edit1->text()); + query.addBindValue(loginDlg.edit2->text()); + query.exec(); + + while (query.next()) + { + // We have a winner! + loggedInUID = query.value(0).toInt(); + fullName = query.value(1).toString(); + login = query.value(2).toString(); + done = true; + } } } - } - while (!done); + while (!done); } else { -- 2.37.2