Как получить столбец из таблицы SQL после выполнения запроса - PullRequest
0 голосов
/ 07 ноября 2018

Недавно я писал программу для простого окна входа в систему как часть проекта, над которым я работал. У меня база данных SQL структурирована следующим образом:

User:    
 __________________________________________
| id | name | username | password | status |
| ___+______+__________+__________+________|
| 1  | niko | ******** | ******** | admin  |
| 2  | andy | ******** | ******** | user   |
 ------------------------------------------

и еще несколько таких столбцов. Я подготовил SQL-запрос в C ++ в QTcreator следующим образом:

qry.prepare("SELECT name FROM Database.User WHERE username = :username AND password = :password")

который в идеале должен получить нико или энди или любое другое имя для данного пароля и имени пользователя. Единственная проблема - я не уверен, как с этим работать. Я прочитал документацию QT несколько раз и не нашел способа получить имя в виде строки. Я пытался распечатать его, используя:

qDebug<<qry.result()

однако, что возвращает только «0x5561eb32d240» Я не уверен, что это такое? Qt не задокументировал результат (), и единственное, что я знаю о возвращении результата, это то, что это константный тип QSql.

Любые идеи о том, как я могу вернуть имя в виде строки для последующего использования?

1 Ответ

0 голосов
/ 10 ноября 2018

Это пример с qsqlite. Это должно быть работа.

QSqlDatabase data_base;
data_base = QSqlDatabase::addDatabase("QSQLITE", id);
data_base.setDatabaseName(data_base_path);

if (data_base.open())

{
    QString query = "SELECT name FROM Database.User WHERE username = :username AND password = :password";
    QSqlQuery SqlQuery = QSqlQuery( data_base );
    SqlQuery.exec( query );

    while (SqlQuery.next())
    {
        int field_idx   = SqlQuery.record().indexOf("name");
        QString name = SqlQuery.record().value( field_idx ).toString();
        qDebug() << name;
    };
}
...