我已经阅读了this个问题。我想使用方法QSqlDatabase :: record(const QString& tablename)获取表的字段名称。但它总是返回一个空记录。我可以通过QSQLQuery正确查询数据库表。我的数据库是SQL Server数据库。
答案 0 :(得分:0)
其实你应该得到。
正如您所说的SQL服务器,请尝试使用“@yourtablename”。我的意思是说在你的QString中的表名之前加上“@”。
如果没有运气,
检查您的表名。 (空格或其他字符等。)
输入QString
(安全方)。或者使用表名创建一个QString
对象并传递它。
在传递之前修剪QString。
由于某种原因,如果您没有获得字段名称,请尝试以下步骤。
您的QSqlRecord QSqlDatabase::record(const QString &tablename) const
将返回QSqlRecord
对象
首先获取记录中的数字字段
int QSqlRecord::count() const
循环计数(例如:使用for)并使用以下函数获取每个索引的字段名称
QString QSqlRecord::fieldName(int index) const
下面的一些伪代码:(假设您已成功建立连接,未编译且未经过测试。)
QSqlRecord rec = QSqlDatabase::record("Your table name");
int count = rec.count();
QStringList fieldNames;
For (int i =0; i<count; i++)
{
fieldNames.push_back(rec.fieldName(i);
}
按选择查询:
QSqlQuery select;
select.prepare("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'YourTableName'");
if (select.exec() && select.next()) {
QSqlRecord record = select.record();
}