QSqlResult Class
QSqlResult 클래스는 특정 SQL 데이터베이스의 데이터에 액세스하기 위한 추상 인터페이스를 제공합니다. 더 보기...
Header: | #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
이 열거형 유형은 준비된 쿼리에서 자리 표시자를 지정하는 다양한 구문을 지정합니다.
Constant | 값 | 설명 |
---|---|---|
QSqlResult::PositionalBinding | 0 | 자리 표시자로 "?"를 사용하는 ODBC 스타일 위치 구문을 사용합니다. |
QSqlResult::NamedBinding | 1 | 명명된 자리 표시자와 함께 Oracle 스타일 구문을 사용합니다(예: ":id"). |
bindingSyntax()도 참조하세요 .
멤버 함수 문서
[explicit protected]
QSqlResult::QSqlResult(const QSqlDriver *db)
데이터베이스 드라이버를 사용하여 QSqlResult를 생성합니다 db. 객체는 비활성 상태로 초기화됩니다.
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 가 음수가 아닌 경우에만 호출됩니다. 파생 클래스는 이 함수를 다시 구현하여 index 필드의 값을 반환하거나, 값을 확인할 수 없는 경우 QVariant()를 반환해야 합니다.
[protected]
const QSqlDriver *QSqlResult::driver() const
결과와 연관된 드라이버를 반환합니다. 생성자에 전달된 객체입니다.
[virtual protected]
bool QSqlResult::exec()
쿼리를 실행하여 성공하면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.
prepare()도 참조하세요 .
[protected]
QString QSqlResult::executedQuery() const
실제로 실행된 쿼리를 반환합니다. 예를 들어 바인딩된 값이 준비된 쿼리와 함께 사용되었고 기본 데이터베이스가 준비된 쿼리를 지원하지 않는 경우와 같이 전달된 쿼리와 다를 수 있습니다.
[pure virtual protected]
bool QSqlResult::fetch(int index)
결과를 임의의 (0 기반) 행에 배치합니다 index.
이 함수는 결과가 활성 상태인 경우에만 호출됩니다. 파생 클래스는 이 함수를 재구현하여 결과를 index 행에 배치하고 적절한 값으로 setAt()을 호출해야 합니다. 성공하면 참을 반환하고 실패하면 거짓을 반환합니다.
isActive(), fetchFirst(), fetchLast(), fetchNext() 및 fetchPrevious()도 참조하세요 .
[pure virtual protected]
bool QSqlResult::fetchFirst()
결과를 결과의 첫 번째 레코드(행 0)에 배치합니다.
이 함수는 결과가 활성 상태인 경우에만 호출됩니다. 파생 클래스는 이 함수를 다시 구현하여 결과를 첫 번째 레코드에 배치하고 적절한 값으로 setAt()를 호출해야 합니다. 성공하면 참을 반환하고 실패하면 거짓을 반환합니다.
fetch() 및 fetchLast()도 참조하세요 .
[pure virtual protected]
bool QSqlResult::fetchLast()
결과를 결과의 마지막 레코드(마지막 행)에 배치합니다.
이 함수는 결과가 활성 상태인 경우에만 호출됩니다. 파생 클래스는 이 함수를 다시 구현하여 결과를 마지막 레코드에 배치하고 적절한 값으로 setAt()를 호출해야 합니다. 성공하면 참을 반환하고 실패하면 거짓을 반환합니다.
fetch() 및 fetchFirst()도 참조하세요 .
[virtual protected]
bool QSqlResult::fetchNext()
결과에서 사용 가능한 다음 레코드(행)에 결과를 배치합니다.
이 함수는 결과가 활성 상태인 경우에만 호출됩니다. 기본 구현은 다음 인덱스와 함께 fetch()를 호출합니다. 파생 클래스는 이 함수를 재구현하여 다른 방식으로 결과를 다음 레코드에 배치하고 적절한 값을 사용하여 setAt()를 호출할 수 있습니다. 성공하면 참을 반환하고 실패하면 거짓을 반환합니다.
fetch() 및 fetchPrevious()도 참조하세요 .
[virtual protected]
bool QSqlResult::fetchPrevious()
결과를 결과의 이전 레코드(행)에 배치합니다.
이 함수는 결과가 활성 상태인 경우에만 호출됩니다. 기본 구현은 이전 인덱스와 함께 fetch()를 호출합니다. 파생 클래스는 이 함수를 재구현하여 다른 방식으로 결과를 다음 레코드에 배치하고 적절한 값을 사용하여 setAt()를 호출할 수 있습니다. 성공하면 참을 반환하고 실패하면 거짓을 반환합니다.
[virtual]
QVariant QSqlResult::handle() const
이 결과 집합에 대한 저수준 데이터베이스 핸들을 QVariant 으로 래핑하여 반환하거나 핸들이 없는 경우 잘못된 QVariant 을 반환합니다.
경고: 이 함수는 사용법을 잘 알고 있는 경우에만 최대한 주의해서 사용하세요.
경고: 여기서 반환된 핸들은 결과가 수정되면(예: 지우는 경우) 부실 포인터가 될 수 있습니다.
경고: 결과가 아직 실행되지 않은 경우 핸들은 NULL이 될 수 있습니다.
경고: 포워드 전용 모드에서는 fetch(), fetchFirst(), fetchLast(), fetchNext(), fetchPrevious(), nextResult() 호출 후 QSqlResult 의 핸들이 변경될 수 있습니다.
여기서 반환되는 핸들은 데이터베이스에 따라 다르므로 액세스하기 전에 변형의 유형 이름을 쿼리해야 합니다.
이 예는 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 을 데이터베이스에 적용해야 합니다. 이 함수는 결과가 비활성 상태로 설정된 후에만 호출되며 새 결과의 첫 번째 레코드 앞에 배치됩니다. 파생 클래스는 쿼리가 성공하여 사용할 준비가 되면 참을 반환하고, 그렇지 않으면 거짓을 반환해야 합니다.
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 로 설정합니다. forward 이 참이면 결과를 탐색하는 데 fetchNext() 만 허용됩니다. 전달 전용 모드는 결과를 캐시할 필요가 없으므로 훨씬 적은 메모리를 필요로 합니다. 기본적으로 이 기능은 비활성화되어 있습니다.
정방향 전용을 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
문인 경우 참이어야 하고, 그렇지 않으면 거짓이어야 합니다.
isSelect()도 참조하세요 .
[pure virtual protected]
int QSqlResult::size()
SELECT
결과의 크기를 반환하고, 확인할 수 없거나 쿼리가 SELECT
문이 아닌 경우 -1을 반환합니다.
numRowsAffected()도 참조하세요 .
© 2025 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.