qsqlquery 예제

SQL 쿼리를 실행하려면 먼저 데이터베이스와의 연결을 설정해야 합니다. 일반적으로 데이터베이스 연결은 응용 프로그램 시작 시 호출하는 별도의 함수로 설정됩니다. 예: 다음 예제에서는 SELECT * FROM 쿼리가 실행됩니다. 열의 순서가 정의되지 않으므로 QSqlRecord:indexOf()는 열의 인덱스를 가져오는 데 사용됩니다. QSqlQuery는 SELECT뿐만 아니라 임의의 SQL 문을 실행할 수 있습니다. 다음 예제는 INSERT를 사용하여 레코드를 테이블에 삽입합니다: QSqlQuery는 준비된 쿼리 실행 및 자리 표시자에 대한 매개 변수 값 의 바인딩을 지원합니다. 일부 데이터베이스는 이러한 기능을 지원하지 않으므로 Qt는 필요한 기능을 에뮬레이트합니다. 예를 들어 Oracle 및 ODBC 드라이버는 적절하게 준비된 쿼리 지원을 가지며 Qt는 이를 사용합니다. 그러나 이 지원이 없는 데이터베이스의 경우 Qt는 쿼리가 실행될 때 자리 표시자를 실제 값으로 대체하는 등 기능 자체를 구현합니다. numRows영향())를 사용하여 SELECT가 아닌 쿼리의 영향을 받은 행 수와 SELECT에서 검색한 행 수를 size()를 찾습니다. NULL 값을 바인딩하려면 관련 형식의 null QVariant을 바인딩된 QVariantList에 추가해야 합니다.

예를 들어 문자열을 사용하는 경우 QVariant(QVariant::String)을 사용해야 합니다. 쿼리에서 SQL을 실행합니다. true를 반환하고 쿼리가 성공한 경우 쿼리 상태를 활성으로 설정합니다. 그렇지 않으면 false를 반환합니다. 쿼리 문자열은 쿼리중인 SQL 데이터베이스(예: 표준 SQL)에 적합한 구문을 사용해야 합니다. QSqlQuery 생성자는 사용할 데이터베이스 연결을 지정하는 선택적 QSqlDatabase 개체를 허용합니다. 위의 예에서는 연결을 지정하지 않으므로 기본 연결이 사용됩니다. 위의 예제에서는 myTable: Oracle 드라이버에 4개의 새 행을 삽입합니다. 높은 정밀도가 중요하지 않은 경우 이 메서드를 사용하여 문자열 변환을 우회하여 실행 속도를 높일 수 있습니다. 데이터베이스 드라이버가 지정된 기능을 지원하는지 확인하려면 QSqlDriver::hasFeature()를 사용합니다. 다음 예제에서는 QSqlQuery::size()를 호출하여 해당 기능을 지원하는 기본 데이터베이스의 결과 집합 크기를 결정합니다.

그렇지 않으면 마지막 레코드로 이동하여 쿼리의 위치를 사용하여 레코드 수를 알려줍니다. QSqlRecord::value() 함수는 필드 이름 또는 필드 인덱스를 사용합니다. 큰 데이터 집합에서 작동할 때는 필드를 인덱스에 의해 지정하는 것이 좋습니다. 예를 들어 이 간단한 예제에서는 다른 레코드를 탐색할 필요가 없었지만 루프를 사용할 수 있는 경우 null QVariant을 사용합니다. 예를 들어 문자열을 바인딩하는 경우 QVariant(QVariant::String)을 사용합니다. 모드 매개 변수는 바인딩된 QVariantList가 해석되는 방법을 나타냅니다. 모드가 값ARows인 경우 QVariantList 내의 모든 변형은 새 행의 값으로 해석됩니다. ValueAColumns는 오라클 드라이버의 특별한 경우입니다. 이 모드에서는 QVariantList 내의 모든 항목이 저장된 프로시저 내의 IN 또는 OUT 값에 대한 배열 값으로 해석됩니다.