QSqlDatabase :: record(const QString&tablename)返回空记录
问题描述:
我已经阅读this问题。我想要使用方法QSqlDatabase :: record(const QString & tablename)获取表的字段名称。但它总是返回一个空记录。我可以通过QSQLQuery正确查询数据库表。我的数据库是一个SQL Server数据库。QSqlDatabase :: record(const QString&tablename)返回空记录
答
其实你应该得到。
正如你所说的SQL服务器,试着用“@yourtablename”。我的意思是在你的QString中的表名前面加上“@”。
如果没有运气,
检查您的表名。 (空格或附加字符等)。
类型转换为QString
(安全方面)。或者创建一个表名为QString
的对象并传递它。
在传递之前修剪QString。
仍然由于某种原因,如果你没有得到字段名称,请尝试下面的步骤。
你QSqlRecord QSqlDatabase::record(const QString &tablename) const
会返回一个QSqlRecord
对象
首先得到该号码字段中记录
int QSqlRecord::count() const
循环计数(例如:使用),并得到字段名使用下面的每个指标功能
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);
}
按Select查询:
QSqlQuery select;
select.prepare("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'YourTableName'");
if (select.exec() && select.next()) {
QSqlRecord record = select.record();
}
请** [编辑] **你问题[mcve]或[SSCCE(Short,Self Contained,Correct Example)](http://sscce.org) – NathanOliver