2010-06-17 68 views
5

Làm cách nào để kết nối với SQL Server bằng Qt?Kết nối với SQL Server với qt

+0

QT dường như có trình điều khiển ODBC mà bạn có thể sử dụng để kết nối với mssql. Đây là các tài liệu có liên quan: http://doc.qt.nokia.com/4.6/sql-driver.html#qodbc-for-open-database-connectivity-odbc – shoosh

+1

Tại sao lại không * câu hỏi này? Chỉ có một vài cách để kết nối với SQL Server từ Qt và câu hỏi này không thể được phân loại là "khó để nói những gì đang được hỏi ở đây". – Nemo

Trả lời

7

Qt hỗ trợ ODBC, để kết nối với một cơ sở dữ liệu odbc sử dụng một QSqlDatabase bạn có thể sử dụng đoạn mã sau

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 
{ 

} 

Hầu hết hoặc tất cả các QSql ... lớp trả về một lỗi, nó là một thói quen rất tốt để luôn kiểm tra lỗi đó.

Nếu bạn xây dựng Qt từ đầu bạn có thể phải kích hoạt việc xây dựng các odbc cắm

+0

@HeraldScheirich, 'connectionName' giữ gì? Tên cơ sở dữ liệu? Cảm ơn! – Rachael

+0

'connectionName' chỉ là một định danh khi bạn gọi' addDatabase() 'bạn có thể có nhiều kết nối/cơ sở dữ liệu mở,' QSqlDatabase :: database (connectionName) 'có thể được sử dụng để lấy db với định danh đã cho –

+0

Xin chào, bạn nếu luôn luôn chuỗi connectio có cấu trúc: "DRIVER = {SQL SERVER}; SERVER =% 1; DATABASE =% 2;", hoặc đôi khi có thể thay đổi? – APRocha

5

Trên Windows, bạn cũng có thể kết nối với một cơ sở dữ liệu bằng cách sử dụng DSN. Trong ví dụ này, DSN có tên là "Đơn đặt hàng" được tạo và sử dụng.

//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(); 
} 
Các vấn đề liên quan