2010-06-17 31 views
5

¿Cómo me puedo conectar a SQL Server con Qt?Conexión a SQL Server con qt

+0

QT parecen tener un controlador ODBC que puede utilizar para conectarse a mssql. Aquí están los documentos relevantes: http://doc.qt.nokia.com/4.6/sql-driver.html#qodbc-for-open-database-connectivity-odbc – shoosh

+1

¿Por qué es * no * una pregunta? Hay solo algunas formas de conectarse a SQL Server desde Qt y esta pregunta no se puede categorizar como "difícil de decir qué se está preguntando aquí". – Nemo

Respuesta

7

Qt soporta ODBC, para conectarse a una base de datos ODBC utilizando una QSqlDatabase se puede utilizar el siguiente código

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 
{ 

} 

mayor parte o la totalidad de las clases ... QSQL devolverá un error, es un muy buen hábito para siempre verificar ese error.

Si usted construyó Qt desde cero puede que tenga que permitirá la construcción de la ODBC Plugin

+0

@HeraldScheirich, ¿qué contiene 'connectionName'? ¿Nombre de la base de datos? ¡Gracias! – Rachael

+0

'connectionName' es solo un identificador al llamar a' addDatabase() 'puede tener múltiples conexiones/bases de datos abiertas,' QSqlDatabase :: database (connectionName) 'se puede usar para recuperar el db con el identificador dado –

+0

Hola, si siempre la cadena connectio tiene la estructura: "DRIVER = {SQL SERVER}; SERVER =% 1; DATABASE =% 2;", ¿o algunas veces puede cambiar? – APRocha

5

En Windows, también se puede conectar a una base de datos utilizando un DSN. En este ejemplo, se crea y utiliza un DSN llamado "Pedidos".

//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(); 
} 
Cuestiones relacionadas