이 페이지에서

QSqlResult Class

QSqlResult 클래스는 특정 SQL 데이터베이스의 데이터에 접근하기 위한 추상 인터페이스를 제공합니다. 더 보기...

헤더: #include <QSqlResult>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sql)
target_link_libraries(mytarget PRIVATE Qt6::Sql)
qmake: QT += sql

공개 함수

virtual ~QSqlResult()
virtual QVariant handle() const

보호된 유형

enum BindingSyntax { PositionalBinding, NamedBinding }

보호된 함수

QSqlResult(const QSqlDriver *db)
void addBindValue(const QVariant &val, QSql::ParamType paramType)
int at() const
virtual void bindValue(int index, const QVariant &val, QSql::ParamType paramType)
virtual void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)
QSql::ParamType bindValueType(int index) const
QSql::ParamType bindValueType(const QString &placeholder) const
QSqlResult::BindingSyntax bindingSyntax() const
QVariant boundValue(int index) const
QVariant boundValue(const QString &placeholder) const
int boundValueCount() const
QString boundValueName(int index) const
QStringList boundValueNames() const
QVariantList boundValues() const
QVariantList &boundValues()
void clear()
virtual QVariant data(int index) = 0
const QSqlDriver *driver() const
virtual bool exec()
QString executedQuery() const
virtual bool fetch(int index) = 0
virtual bool fetchFirst() = 0
virtual bool fetchLast() = 0
virtual bool fetchNext()
virtual bool fetchPrevious()
bool hasOutValues() const
bool isActive() const
bool isForwardOnly() const
virtual bool isNull(int index) = 0
bool isSelect() const
bool isValid() const
QSqlError lastError() const
virtual QVariant lastInsertId() const
QString lastQuery() const
virtual int numRowsAffected() = 0
virtual bool prepare(const QString &query)
virtual QSqlRecord record() const
virtual bool reset(const QString &query) = 0
void resetBindCount()
virtual bool savePrepare(const QString &query)
virtual void setActive(bool active)
virtual void setAt(int index)
virtual void setForwardOnly(bool forward)
virtual void setLastError(const QSqlError &error)
virtual void setQuery(const QString &query)
virtual void setSelect(bool select)
virtual int size() = 0

상세 설명

일반적으로 QSqlQuery 은 QSqlResult의 데이터베이스별 구현을 위한 범용 래퍼를 제공하므로, QSqlResult 대신 QSqlQuery 을 사용합니다.

자체 SQL 드라이버를 구현하는 경우( QSqlDriver 의 서브클래스를 생성하여), 필요한 모든 순수 가상 함수와 기타 가상 함수를 구현하는 자체 QSqlResult 서브클래스를 제공해야 합니다.

QSqlDriver도 참조하십시오 .

멤버 유형 문서

enum QSqlResult::BindingSyntax

이 열거형 유형은 준비된 쿼리에서 자리 표시자를 지정하는 데 사용되는 다양한 구문을 정의합니다.

상수값설명
QSqlResult::PositionalBinding0"?"를 자리 표시자로 사용하는 ODBC 스타일의 위치 기반 구문을 사용합니다.
QSqlResult::NamedBinding1이름이 지정된 자리 표시자(예: ":id")를 사용하는 Oracle 스타일 구문을 사용합니다.

bindingSyntax()도 참조하십시오 .

멤버 함수 문서

[explicit protected] QSqlResult::QSqlResult(const QSqlDriver *db)

db 데이터베이스 드라이버를 사용하여 QSqlResult 객체를 생성합니다. 이 객체는 비활성 상태로 초기화됩니다.

isActive() 및 driver()도 참조하십시오 .

[virtual noexcept] QSqlResult::~QSqlResult()

객체를 삭제하고 할당된 리소스를 모두 해제합니다.

[protected] void QSqlResult::addBindValue(const QVariant &val, QSql::ParamType paramType)

매개변수 유형 paramType 의 값 val 을 현재 레코드(행)에서 사용 가능한 다음 위치에 할당합니다.

bindValue()도 참조하십시오 .

[protected] int QSqlResult::at() const

결과의 현재 (0부터 시작하는) 행 위치를 반환합니다. 특수 값인 QSql::BeforeFirstRow 또는 QSql::AfterLastRow 을 반환할 수도 있습니다.

setAt() 및 isValid()도 참조하십시오 .

[virtual protected] void QSqlResult::bindValue(int index, const QVariant &val, QSql::ParamType paramType)

매개변수 유형 paramType 의 값 val 을 현재 레코드(행)의 위치 index 에 바인딩합니다.

addBindValue()도 참조하십시오 .

[virtual protected] void QSqlResult::bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)

매개변수 유형 paramType 의 값 val 을 현재 레코드(행) 내의 placeholder 라는 이름에 바인딩합니다.

참고: 정의되지 않은 자리 표시자를바인딩하면 정의되지 않은 동작이 발생합니다.

이 함수는 오버로드된 함수입니다.

QSqlQuery::bindValue()도 참조하십시오 .

[protected] QSql::ParamType QSqlResult::bindValueType(int index) const

index 위치에 바인딩된 값의 매개변수 유형을 반환합니다.

boundValue()도 참조하십시오 .

[protected] QSql::ParamType QSqlResult::bindValueType(const QString &placeholder) const

지정된 ` placeholder ` 이름으로 바인딩된 값의 매개변수 유형을 반환합니다.

이 함수는 오버로드된 함수입니다.

[protected] QSqlResult::BindingSyntax QSqlResult::bindingSyntax() const

준비된 쿼리에서 사용되는 바인딩 구문을 반환합니다.

[protected] QVariant QSqlResult::boundValue(int index) const

현재 레코드(행)의 index 위치에 바인딩된 값을 반환합니다.

bindValue() 및 boundValues()도 참조하십시오 .

[protected] QVariant QSqlResult::boundValue(const QString &placeholder) const

현재 레코드(행)에서 지정된 placeholder 이름으로 바인딩된 값을 반환합니다.

이 함수는 오버로드된 함수입니다.

bindValueType()도 참조하십시오 .

[protected] int QSqlResult::boundValueCount() const

결과에 포함된 바인딩된 값의 개수를 반환합니다.

boundValues()도 참조하십시오 .

[protected] QString QSqlResult::boundValueName(int index) const

현재 레코드(행)의 index 위치에 바인딩된 값의 이름을 반환합니다.

boundValue() 및 boundValueNames()도 참조하십시오 .

[protected] QStringList QSqlResult::boundValueNames() const

바인딩된 모든 값의 이름을 반환합니다.

boundValue() 및 boundValueName()도 참조하십시오 .

[protected] QVariantList QSqlResult::boundValues() const

현재 레코드(행)에 대한 결과의 바인딩된 값 목록을 반환합니다.

boundValueCount()도 참조하십시오 .

[protected] QVariantList &QSqlResult::boundValues()

현재 레코드(행)에 대한 결과의 바인딩된 값 목록에 대한 변경 가능한 참조를 반환합니다.

이 함수는 오버로드된 함수입니다.

boundValueCount()도 참조하십시오 .

[protected] void QSqlResult::clear()

전체 결과 집합을 지우고 관련 리소스를 모두 해제합니다.

[pure virtual protected] QVariant QSqlResult::data(int index)

현재 행의 ` index ` 필드에 대한 데이터를 ` QVariant` 형식으로 반환합니다. 이 함수는 결과가 활성 상태이고 유효한 레코드에 위치해 있으며, ` index `이 0 이상일 때만 호출됩니다. 파생 클래스는 이 함수를 재구현하여 ` index` 필드의 값을 반환해야 하며, 값을 확인할 수 없는 경우에는 `QVariant()`를 반환해야 합니다.

[protected] const QSqlDriver *QSqlResult::driver() const

결과와 연관된 드라이버를 반환합니다. 이는 생성자에 전달된 객체입니다.

[virtual protected] bool QSqlResult::exec()

쿼리를 실행하며, 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

prepare()도 참조하십시오 .

[protected] QString QSqlResult::executedQuery() const

실제로 실행된 쿼리를 반환합니다. 예를 들어, 준비된 쿼리에 바인딩된 값이 사용되었으나 해당 데이터베이스가 준비된 쿼리를 지원하지 않는 경우 등, 이 쿼리는 전달된 쿼리와 다를 수 있습니다.

exec() 및 setQuery()도 참조하십시오 .

[pure virtual protected] bool QSqlResult::fetch(int index)

결과를 임의의 (0부터 시작하는) 행 index 에 배치합니다.

이 함수는 결과가 활성 상태일 때만 호출됩니다. 파생 클래스는 이 함수를 재구현하여 결과를 index 행에 배치하고, 적절한 값을 사용하여 setAt()를 호출해야 합니다. 성공 시 true를, 실패 시 false를 반환합니다.

isActive(), fetchFirst(), fetchLast(), fetchNext(), fetchPrevious()도 참조하십시오 .

[pure virtual protected] bool QSqlResult::fetchFirst()

결과를 결과 집합의 첫 번째 레코드(0번째 행)로 이동시킵니다.

이 함수는 결과가 활성 상태일 때만 호출됩니다. 파생 클래스는 이 함수를 재구현하여 결과를 첫 번째 레코드에 배치하고, 적절한 값을 전달하여 setAt()을 호출해야 합니다. 성공 시 true를, 실패 시 false를 반환합니다.

fetch() 및 fetchLast()도 참조하십시오 .

[pure virtual protected] bool QSqlResult::fetchLast()

결과를 결과 집합의 마지막 레코드(마지막 행)로 이동시킵니다.

이 함수는 결과가 활성 상태일 때만 호출됩니다. 파생 클래스는 이 함수를 재구현하여 결과를 마지막 레코드로 위치시키고, 적절한 값을 전달하여 setAt()를 호출해야 합니다. 성공 시 true를, 실패 시 false를 반환합니다.

fetch() 및 fetchFirst()도 참조하십시오 .

[virtual protected] bool QSqlResult::fetchNext()

결과 집합에서 사용 가능한 다음 레코드(행)로 포지션을 이동합니다.

이 함수는 결과가 활성 상태일 때만 호출됩니다. 기본 구현은 다음 인덱스를 인수로 전달하여 ` fetch()`를 호출합니다. 파생 클래스는 이 함수를 재구현하여 다른 방식으로 결과를 다음 레코드로 이동시킨 후, 적절한 값을 인수로 전달하여 ` setAt()`를 호출할 수 있습니다. 성공 시 `true`를, 실패 시 `false`를 반환합니다.

fetch() 및 fetchPrevious()도 참조하십시오 .

[virtual protected] bool QSqlResult::fetchPrevious()

결과를 결과 집합의 이전 레코드(행) 위치로 이동합니다.

이 함수는 결과가 활성 상태일 때만 호출됩니다. 기본 구현은 이전 인덱스를 사용하여 ` fetch()`를 호출합니다. 파생 클래스는 이 함수를 재구현하여 다른 방식으로 결과를 다음 레코드로 이동시킨 후, 적절한 값을 사용하여 ` setAt()`를 호출할 수 있습니다. 성공 시 `true`를, 실패 시 `false`를 반환합니다.

[virtual] QVariant QSqlResult::handle() const

이 결과 집합에 대한 저수준 데이터베이스 핸들을 반환하며, 핸들이 없는 경우 ` QVariant ` 또는 유효하지 않은 ` QVariant `으로 감싸서 반환합니다.

경고: 이 함수는 극도의 주의를 기울여사용해야 하며, 해당 작업의 내용을 정확히 이해하고 있는 경우에만 사용하십시오.

경고: 결과가 수정된 경우(예: 결과 집합을 지운 경우), 여기서 반환된핸들은 더 이상 유효하지 않은 포인터가 될 수 있습니다.

경고: 결과가 아직 실행되지 않은 경우핸들이 NULL일 수 있습니다.

경고: PostgreSQL : forward-only 모드에서 QSqlResult 의 핸들은 fetch(), fetchFirst(), fetchLast(), fetchNext(), fetchPrevious(), nextResult()를 호출한 후 변경될 수 있습니다.

여기서 반환되는 핸들은 데이터베이스에 따라 다르므로, 액세스하기 전에 해당 변수의 유형명을 조회해야 합니다.

다음 예제는 SQLite 결과의 핸들을 가져옵니다:

QSqlDatabase db = QSqlDatabase::database("sales");
QSqlQuery query("SELECT NAME, DOB FROM EMPLOYEES", db);

QVariant v = query.result()->handle();
if (v.isValid() && qstrcmp(v.typeName(), "sqlite3_stmt*") == 0) {
    // v.data() returns a pointer to the handle
    sqlite3_stmt *handle = *static_cast<sqlite3_stmt **>(v.data());
    if (handle) {
        // ...
    }
}

다음 코드 조각은 PostgreSQL 또는 MySQL의 핸들을 반환합니다:

if (qstrcmp(v.typeName(), "PGresult*") == 0) {
    PGresult *handle = *static_cast<PGresult **>(v.data());
    if (handle) {
        // ...
        }
}

if (qstrcmp(v.typeName(), "MYSQL_STMT*") == 0) {
    MYSQL_STMT *handle = *static_cast<MYSQL_STMT **>(v.data());
    if (handle) {
        // ...
        }
    }

QSqlDriver::handle()도 참조하십시오 .

[protected] bool QSqlResult::hasOutValues() const

쿼리의 바인딩된 값 중 적어도 하나가 ` QSql::Out ` 또는 ` QSql::InOut`인 경우 ` true `를 반환하고, 그렇지 않은 경우 ` false`를 반환합니다.

bindValueType()도 참조하십시오 .

[protected] bool QSqlResult::isActive() const

결과에 가져올 레코드가 있으면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.

[protected] bool QSqlResult::isForwardOnly() const

결과 집합을 앞으로만 스크롤할 수 있는 경우 ` true `를 반환하고, 그렇지 않은 경우 ` false`를 반환합니다.

setForwardOnly()도 참조하십시오 .

[pure virtual protected] bool QSqlResult::isNull(int index)

현재 행의 위치 index 에 있는 필드가 null인 경우 true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다.

[protected] bool QSqlResult::isSelect() const

현재 결과가 ` SELECT ` 문에서 나온 것이라면 ` true `을 반환하고, 그렇지 않으면 ` false`을 반환합니다.

setSelect()도 참조하십시오 .

[protected] bool QSqlResult::isValid() const

결과가 유효한 레코드에 위치해 있는 경우(즉, 결과가 첫 번째 레코드 이전이나 마지막 레코드 이후에 위치해 있지 않은 경우) true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.

at()도 참조하십시오 .

[protected] QSqlError QSqlResult::lastError() const

결과와 관련된 마지막 오류를 반환합니다.

setLastError()도 참조하십시오 .

[virtual protected] QVariant QSqlResult::lastInsertId() const

데이터베이스에서 지원하는 경우, 가장 최근에 삽입된 행의 객체 ID를 반환합니다. 쿼리가 어떤 값도 삽입하지 않았거나 데이터베이스에서 ID를 반환하지 않는 경우, 유효하지 않은 ` QVariant `가 반환됩니다. 삽입 작업으로 인해 두 개 이상의 행이 변경된 경우, 동작은 정의되지 않습니다.

Oracle 데이터베이스의 경우 행의 ROWID가 반환되는 반면, MySQL 데이터베이스의 경우 행의 자동 증가 필드가 반환된다는 점에 유의하십시오.

QSqlDriver::hasFeature()도 참조하십시오 .

[protected] QString QSqlResult::lastQuery() const

현재 SQL 쿼리 텍스트를 반환하며, 쿼리가 없는 경우에는 빈 문자열을 반환합니다.

setQuery()도 참조하십시오 .

[pure virtual protected] int QSqlResult::numRowsAffected()

마지막으로 실행된 쿼리에 의해 영향을 받은 행의 수를 반환하며, 해당 수를 확인할 수 없거나 쿼리가 ` SELECT ` 문인 경우에는 -1을 반환합니다.

size()도 참조하십시오 .

[virtual protected] bool QSqlResult::prepare(const QString &query)

주어진 query 를 실행할 수 있도록 준비합니다. 이 쿼리는 일반적으로 반복적으로 실행될 수 있도록 자리 표시자를 사용합니다. 쿼리 준비가 성공하면 true를 반환하고, 그렇지 않으면 false 를 반환합니다.

exec()도 참조하십시오 .

[virtual protected] QSqlRecord QSqlResult::record() const

쿼리가 활성 상태인 경우 현재 레코드를 반환하고, 그렇지 않은 경우 빈 QSqlRecord 객체를 반환합니다.

기본 구현은 항상 빈 QSqlRecord 를 반환합니다.

isActive()도 참조하십시오 .

[pure virtual protected] bool QSqlResult::reset(const QString &query)

후속 데이터 검색 시 SQL 문 ` query `을 사용하도록 결과를 설정합니다.

파생 클래스는 이 함수를 재구현하고 query 를 데이터베이스에 적용해야 합니다. 이 함수는 결과 집합이 비활성 상태로 설정된 후, 새로운 결과 집합의 첫 번째 레코드 바로 앞에 위치했을 때만 호출됩니다. 파생 클래스는 쿼리가 성공적으로 완료되어 사용 준비가 된 경우 true를, 그렇지 않은 경우 false를 반환해야 합니다.

setQuery()도 참조하십시오 .

[protected] void QSqlResult::resetBindCount()

바인딩 매개변수의 개수를 초기화합니다.

[virtual protected] bool QSqlResult::savePrepare(const QString &query)

주어진 query 를 가능한 경우 기본 데이터베이스 기능을 사용하여 준비합니다. 쿼리가 성공적으로 준비되면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

참고: 이 메서드의 이름은 "safePrepare()"로 지정되었어야 합니다.

prepare()도 참조하십시오 .

[virtual protected] void QSqlResult::setActive(bool active)

이 함수는 파생 클래스가 내부 활성 상태를 ` active`로 설정할 수 있도록 제공됩니다.

isActive()도 참조하십시오 .

[virtual protected] void QSqlResult::setAt(int index)

이 함수는 파생 클래스가 내부(0부터 시작하는) 행 위치를 ` index`로 설정할 수 있도록 제공됩니다.

at()도 참조하십시오 .

[virtual protected] void QSqlResult::setForwardOnly(bool forward)

‘forward only’ 모드를 ` forward`로 설정합니다. ` forward `가 true인 경우, 결과 집합을 탐색하기 위해서는 ` fetchNext()`만 사용할 수 있습니다. ‘forward only’ 모드는 결과 집합을 캐시할 필요가 없으므로 메모리 사용량이 훨씬 적습니다. 기본적으로 이 기능은 비활성화되어 있습니다.

forwardOnly를 false로 설정하는 것은 데이터베이스 엔진에 대한 권장 사항일 뿐이며, 결과 집합이 순방향 전용인지 스크롤 가능한지는 데이터베이스 엔진이 최종적으로 결정합니다. isForwardOnly()는 항상 결과 집합의 정확한 상태를 반환합니다.

참고: 쿼리 실행 후에 setForwardOnly를호출하면 , 기껏해야 예상치 못한 결과가 발생하고, 최악의 경우 시스템이 중단될 수 있습니다.

참고: 순방향 전용 쿼리가 성공적으로 완료되었는지확인하려면 , 애플리케이션은 쿼리 실행 후뿐만 아니라 쿼리 결과를 탐색한 후에도 lastError()를 호출하여 오류가 없는지 확인해야 합니다.

경고: PostgreSQL : 포워드 온리 모드에서 쿼리 결과를 탐색하는 동안에는 동일한 데이터베이스 연결에서 다른 SQL 명령을 실행하지 마십시오. 이렇게 하면 쿼리 결과가 손실될 수 있습니다.

관련 항목: isForwardOnly(), fetchNext(), QSqlQuery::setForwardOnly().

[virtual protected] void QSqlResult::setLastError(const QSqlError &error)

이 함수는 파생 클래스가 마지막 오류를 ` error`로 설정할 수 있도록 제공됩니다.

lastError()도 참조하십시오 .

[virtual protected] void QSqlResult::setQuery(const QString &query)

결과에 대한 현재 쿼리를 ` query`로 설정합니다. 데이터베이스에서 쿼리를 실행하려면 ` reset()`를 호출해야 합니다.

reset() 및 lastQuery()도 참조하십시오 .

[virtual protected] void QSqlResult::setSelect(bool select)

이 함수는 파생 클래스가 현재 문장이 SQL SELECT 문장인지 여부를 나타낼 수 있도록 제공됩니다. 문장이 SELECT 문장인 경우 select 매개변수는 true여야 하며, 그렇지 않은 경우 false여야 합니다.

isSelect()도 참조하십시오 .

[pure virtual protected] int QSqlResult::size()

SELECT 결과의 크기를 반환하며, 크기를 확인할 수 없거나 쿼리가 SELECT 문이 아닌 경우에는 -1을 반환합니다.

numRowsAffected()도 참조하십시오 .

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.