데이터베이스에 연결하기
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()를 사용하여 제거합니다.
© 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.