QSqlResult Class
QSqlResult 클래스는 특정 SQL 데이터베이스의 데이터에 접근하기 위한 추상 인터페이스를 제공합니다. 더 보기...
| 헤더: | #include <QSqlResult> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Sql) target_link_libraries(mytarget PRIVATE Qt6::Sql) |
| qmake: | QT += sql |
- 상속된 멤버를 포함한 모든 멤버 목록
- QSqlResult는 데이터베이스 클래스의 일부입니다.
공개 함수
| 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::PositionalBinding | 0 | "?"를 자리 표시자로 사용하는 ODBC 스타일의 위치 기반 구문을 사용합니다. |
QSqlResult::NamedBinding | 1 | 이름이 지정된 자리 표시자(예: ":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 을 반환할 수도 있습니다.
[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
실제로 실행된 쿼리를 반환합니다. 예를 들어, 준비된 쿼리에 바인딩된 값이 사용되었으나 해당 데이터베이스가 준비된 쿼리를 지원하지 않는 경우 등, 이 쿼리는 전달된 쿼리와 다를 수 있습니다.
[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.