2015-07-02 3 views
0

Я пытаюсь определить размер моего вектора с размером базы данных mysql в qt C++. После выполнения моих команд он возвращает 0 и получает ошибку;Как получить размер базы данных с Qt?

QMYSQLResult::data: column 1 out of range 

в строке:

int dbSize = query.value(1).toInt(); 

Однако, когда я выполнить команду SQL в MySQL-верстаке это говорит

Вот мои блоки кода для размера базы данных Добыть:

int databaseConn::getDbSize() 
{ 
    QSqlDatabase::database().transaction(); 
    QSqlQuery query; 

    query.prepare("SELECT count(*) FROM images"); 
    query.exec(); 
    query.next(); 

    if(query.lastError().isValid()) 
    { 
     qDebug() << query.lastError().text(); 
     QSqlDatabase::database().rollback(); 

     return -1; 
    } 
    else 
    { 
     int dbSize = query.value(1).toInt(); 

     qDebug() << dbSize; 

     return dbSize; 
    } 
} 

Не могли бы вы помочь мне, где моя ошибка?

PS: Я не хочу называть весь дб и считать это нравится:

QSqlQuery query("SELECT * FROM test"); 

query.record().count(); 

ответ

2

index в QVariant QSqlQuery::value (int index) const означает индекс отсчитывается от нуля поля в операторе отбора. В вашем случае, единственное поле count(*) будет иметь индекс 0:

int dbSize = query.value(0).toInt(); 

Вы можете получить счетчик поля от QSqlRecord:

qDebug() << query.record().count(); 
+0

Так что, если я исполню 'выберите имя, фамилия из таблицы;' и если Я хочу получить имя, которое я буду использовать 0, и для фамилии буду использовать 1? – goGud

+0

@goGud У вас все получилось. – Amartel

Смежные вопросы