]> Shamusworld >> Repos - schematic/commitdiff
Minor tweaks to ODBC connection string to work better on win32.
authorShamus Hammons <jlhamm@acm.org>
Wed, 3 Oct 2012 16:14:40 +0000 (11:14 -0500)
committerShamus Hammons <jlhamm@acm.org>
Wed, 3 Oct 2012 16:14:40 +0000 (11:14 -0500)
src/mainwin.cpp

index d4531034c95712f6423f5906bcfcd90de5a00b0b..55ba367f8d31e36ef642fb9e6fcd8b4bbdc76f9d 100644 (file)
@@ -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
        {