Qt/SQL - 从 QSqlQuery exec 存储过程获取列类型和名称?
Qt/SQL - Get column type and name from QSqlQuery exec Stored Procedure?
我已使用 QSqlDatabase class 连接到 MSSQL 服务器。然后我可以使用 QSQLQuery 获取存储过程的结果,例如:
QSqlQuery q;
q.prepare ("EXEC TestStoredProcedure");
if (q.exec ()) {
while (q.next ()) {
qDebug() << q.value (0).toString ();
...
}
}
所以,我有返回字段的值,但是我怎样才能得到字段的名称和类型?存储过程可以动态地形成返回字段的列表。
感谢您的帮助和解答!
您可以使用QSqlRecord。
例如:
QSqlRecord localRecord = q.record();
for (int var = 0; var < localRecord.count(); ++var) {
QString fieldName = localRecord.fieldName(var);
qDebug() << fieldName;
}
或
QSqlRecord localRecord = q.driver()->record("table");
for (int var = 0; var < localRecord.count(); ++var) {
QString fieldName = localRecord.fieldName(var);
qDebug() << fieldName;
}
我认为你可以在没有列类型的情况下工作。
我已使用 QSqlDatabase class 连接到 MSSQL 服务器。然后我可以使用 QSQLQuery 获取存储过程的结果,例如:
QSqlQuery q;
q.prepare ("EXEC TestStoredProcedure");
if (q.exec ()) {
while (q.next ()) {
qDebug() << q.value (0).toString ();
...
}
}
所以,我有返回字段的值,但是我怎样才能得到字段的名称和类型?存储过程可以动态地形成返回字段的列表。
感谢您的帮助和解答!
您可以使用QSqlRecord。 例如:
QSqlRecord localRecord = q.record();
for (int var = 0; var < localRecord.count(); ++var) {
QString fieldName = localRecord.fieldName(var);
qDebug() << fieldName;
}
或
QSqlRecord localRecord = q.driver()->record("table");
for (int var = 0; var < localRecord.count(); ++var) {
QString fieldName = localRecord.fieldName(var);
qDebug() << fieldName;
}
我认为你可以在没有列类型的情况下工作。