2010-06-17 33 views
5

如何使用Qt連接到SQL Server?使用qt連接到SQL Server

+0

QT似乎有一個ODBC驅動程序,您可以使用它連接到mssql。以下是相關文檔:http://doc.qt.nokia.com/4.6/sql-driver.html#qodbc-for-open-database-connectivity-odbc – shoosh 2010-06-17 10:47:35

+1

這是爲什麼*不是問題?從Qt連接到SQL Server的方法只有幾種,這個問題不能被歸類爲「很難說出什麼問題」。 – Nemo 2015-02-11 21:10:36

回答

7

Qt支持ODBC,使用QSqlDatabase你可以使用下面的代碼

QString connectionTemplate = "DRIVER={SQL SERVER};SERVER=%1;DATABASE=%2;"; 

QString connectionString = connectionTemplate.arg(server).arg(dbName); 
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", connectionName); 

db.setDatabaseName(connectionString); 
db.setUserName(user); 
db.setPassword(password); 

if (db.open()) 
{ 

} 
else 
{ 

} 

大部分或全部QSQL ...類返回一個錯誤連接到ODBC數據庫,這是一個很好的習慣總是檢查錯誤。

如果你從頭開始構建Qt的,您可能需要啓用ODBC插件

+0

@HeraldScheirich,'connectionName'持有什麼?數據庫名稱?謝謝! – Rachael 2015-03-03 17:14:01

+0

'connectionName'只是一個標識符,當你調用'addDatabase()'你可以打開多個連接/數據庫時''QSqlDatabase :: database(connectionName)'可以用來檢索給定標識符的數據庫 – 2015-03-04 13:33:20

+0

嗨,你if總是字符串連接具有以下結構:「DRIVER = {SQL SERVER}; SERVER =%1; DATABASE =%2;」,或者有時可以更改? – APRocha 2015-05-18 22:24:16

5

在Windows上的建築,你也可以連接到使用DSN的數據庫。在此示例中,創建並使用名爲「訂單」的DSN。

//Load Odbc driver 
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); 

//Set DSN 
db.setDatabaseName("Orders"); 

//Connect to db 
if(db.open()) 
{ 
    //Query 
    QSqlQueryModel *model = new QSqlQueryModel; 
    model->setQuery("SELECT * FROM Orders ORDER BY Date DESC", db); 

    //Display 
    QTableView *view = new QTableView; 
    view->setModel(model); 
    view->show(); 
}