Соединение с базой данныхЧтобы получить доступ к базе данных с помощью 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(); Первая строка создает объект соединения, а последняя открывает его. В промежутке, мы инициализировали некоторую информацию о соединении, включая имя базы данных, имя узла, имя пользователя, пароль. В этом примере, мы соединялись с базой данных MySQL flightdb на узле bigblue. Аргумент "QMYSQL" в addDatabase() тип драйвера базы данных, чтобы использовать для соединения. Набор драйверов баз данных включенных в Qt показан в таблице поддерживаемые драйверы баз данных. Соединение в примере будет соединением по умолчанию, потому что мы не передаем второй аргумент в addDatabase(), который является именем соединения. Например, здесь мы устанавливаем два соединения с базой данных MySQL называемых "first" и "second": 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(). |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |