데이터베이스에 연결하기
QSqlQuery 나 QSqlQueryModel 을 사용하여 데이터베이스에 액세스하려면 하나 이상의 데이터베이스 연결을 생성하고 열어야 합니다. 데이터베이스 연결은 일반적으로 데이터베이스 이름이 아닌 연결 이름으로 식별됩니다. 동일한 데이터베이스에 여러 개의 연결을 가질 수 있습니다. ` QSqlDatabase `는 이름이 지정되지 않은 연결인 ‘기본 연결’ 개념도 지원합니다. 연결 이름 인자를 받는 ` QSqlQuery ` 또는 ` QSqlQueryModel ` 멤버 함수를 호출할 때 연결 이름을 전달하지 않으면 기본 연결이 사용됩니다. 애플리케이션에 데이터베이스 연결이 하나만 필요한 경우 기본 연결을 생성하는 것이 편리합니다.
연결을 생성하는 것과 연결을 여는 것의 차이점에 유의하십시오. 연결을 생성한다는 것은 ` QSqlDatabase` 클래스의 인스턴스를 생성하는 것을 의미합니다. 연결은 열리기 전까지는 사용할 수 없습니다. 다음 코드 조각은 기본 연결을 생성한 후 여는 방법을 보여줍니다:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("bigblue");
db.setDatabaseName("flightdb");
db.setUserName("acarlson");
db.setPassword("1uTbSbAs");
bool ok = db.open();첫 번째 줄은 연결 객체를 생성하고, 마지막 줄은 사용을 위해 연결을 엽니다. 그 사이에서 ` database name`, ` host name`, ` user name`, ` password`을 포함한 몇 가지 연결 정보를 초기화합니다. 이 경우, 호스트 ` bigblue`에 있는 MySQL 데이터베이스 ` flightdb `에 연결하고 있습니다. ` addDatabase()`의 ` "QMYSQL" ` 인수는 연결에 사용할 데이터베이스 드라이버의 유형을 지정합니다. Qt에 포함된 데이터베이스 드라이버 목록은 지원되는 데이터베이스 드라이버 표에 나와 있습니다.
이 코드 조각의 연결은 기본 연결이 됩니다. addDatabase()에 두 번째 인자(연결 이름)를 전달하지 않았기 때문입니다. 예를 들어, 여기서는 "first" 및 "second" 라는 두 개의 MySQL 데이터베이스 연결을 설정합니다:
QSqlDatabase firstDB = QSqlDatabase::addDatabase("QMYSQL", "first");
QSqlDatabase secondDB = QSqlDatabase::addDatabase("QMYSQL", "second");이러한 연결이 초기화된 후, 각 연결에 대해 open()을 호출하여 활성 연결을 설정합니다. open()이 실패하면 false 을 반환합니다. 이 경우, QSqlDatabase::lastError()을 호출하여 오류 정보를 확인하십시오.
연결이 설정되면, 어디서든 연결 이름을 지정하여 정적 함수 ` QSqlDatabase::database()`를 호출하여 해당 데이터베이스 연결에 대한 포인터를 얻을 수 있습니다. 연결 이름을 전달하지 않으면 기본 연결이 반환됩니다. 예를 들어:
QSqlDatabase defaultDB = QSqlDatabase::database();
QSqlDatabase firstDB = QSqlDatabase::database("first");
QSqlDatabase secondDB = QSqlDatabase::database("second");데이터베이스 연결을 제거하려면, 먼저 QSqlDatabase::close()를 사용하여 데이터베이스를 닫은 다음, 정적 메서드 QSqlDatabase::removeDatabase()를 사용하여 연결을 제거합니다.
© 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.