2014-01-08 64 views
0

我有一個web域,並且已經有mySql數據庫。我希望將數據庫中的數據連接到我的Qt應用程序。這是我的嘗試和我的結果。 (主機名稱,數據庫名稱,用戶名和密碼只是編輯)。如何使用Qt連接到我的網域mySQL數據庫?

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 

    db.setHostName("www.mydomain.com"); 
    db.setDatabaseName("myDatabase"); 
    db.setUserName("myName"); 
    db.setPassword("myPass"); 

    if(!db.open()){ 
     QSqlError err = db.lastError(); 
     qDebug() << err.text(); 
    } 
    else { 
     QSqlQuery qry; 
     qDebug() << "Connected to SQL Database!"; 
     if (qry.exec("select * from dataTable;")){ 
      while(qry.next()){ 
       qDebug() << qry.value(1).toString(); 
      } 
     } 
     else { 
      qDebug() << "ERROR QUERY"; 
     } 


     qDebug() << "Closing..."; 
     db.close(); 
    } 

    return a.exec(); 
} 

它表明它已連接但執行查詢後。它返回一個錯誤。此外,我嘗試更改爲無效的主機名和/或用戶名,並且仍然連接。

enter image description here

+1

如果你改變了qDebug線,什麼是打印出來)<<「ERROR QUERY:」<< qry.lastError()。text();' – lpapp

回答

1

1)嘗試的w/o分號。

「對於SQLite,查詢字符串一次只能包含一條語句。」 (http://qt-project.org/doc/qt-4.8/qsqlquery.html#exec

但是,這是一個聲明,解釋者可能會因爲分號而感到困惑。


2)「請注意,當調用exec()時,會重置此查詢的最後一個錯誤。」 (http://qt-project.org/doc/qt-4.8/qsqlquery.html#exec

因爲這不是一份聲明中,儘量避免對過去錯誤的exec()這樣的信息可用:`qDebug(:

QSqlQuery qry("select * from dataTable"); 

if(qry.lastError()) { 
    // ... 
} 

while(qry.next()) { 
    qDebug() << qry.value(1).toString(); 
} 
+1

爲了完整起見,這不適用於綁定。另外,我不確定你想用2)做什麼。它是有效的(並廣泛使用)有一個單獨的exec()調用,然後獲取最後一個錯誤的文本。 – lpapp