QSqlDatabase :: record(const QString&tablename)返回空记录

问题描述:

我已经阅读this问题。我想要使​​用方法QSqlDatabase :: record(const QString & tablename)获取表的字段名称。但它总是返回一个空记录。我可以通过QSQLQuery正确查询数据库表。我的数据库是一个SQL Server数据库。QSqlDatabase :: record(const QString&tablename)返回空记录

+1

请** [编辑] **你问题[mcve]或[SSCCE(Short,Self Contained,Correct Example)](http://sscce.org) – NathanOliver

其实你应该得到。

正如你所说的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(); 
} 
+0

我尝试了所有提示,但仍无法正常工作。我从QSqlDatabase :: record()中获得空值,并且QSqlRecord :: count()返回零。 –

+0

嗯....你是否尝试过这样的事情QString str =“@tablename”。 – Naidu

+0

你可以尝试查询选择语句,我在我的答案中添加了。 – Naidu