Работа с sql из различных классов. |
Здравствуйте, гость ( Вход | Регистрация )
Работа с sql из различных классов. |
molchanoviv |
24.11.2008, 11:46
Сообщение
#1
|
Старейший участник Группа: Сомодератор Сообщений: 597 Регистрация: 18.7.2008 Из: Саратов Пользователь №: 238 Спасибо сказали: 41 раз(а) Репутация: 5 |
собсно вопрос про SQLite был к чему:
Необходимо работать с одной SQL базой из двух классов, не пойму как это реализовать. Хотел сделать так:
и вызывать эту функцию в конструкторах этих классов. но получаю при выполнении вот что Driver not loaded driver not loaded Может я по рассеяности опять что пропустил? |
|
|
Litkevich Yuriy |
24.11.2008, 12:43
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
molchanoviv |
24.11.2008, 13:41
Сообщение
#3
|
Старейший участник Группа: Сомодератор Сообщений: 597 Регистрация: 18.7.2008 Из: Саратов Пользователь №: 238 Спасибо сказали: 41 раз(а) Репутация: 5 |
Не то. Ибо если я изменю функцию createDatabase так
и вызову ее в одном из классов, то тогда работает. |
|
|
Litkevich Yuriy |
24.11.2008, 15:22
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
сообщение
Driver not loaded driver not loaded это только, когда с драйвером проблемы.для SQLite ненужно указывать узел (setHostName) Если ты работаешь только с одной БД в своей программе, создай соединение по умолчанию:
это ты должен создать, где-то в начале работы с программой, а затем использовать это соединение по умолчанию:
Из асистента (к сожалению еще нет на сайте): Цитата Подробное описание
Класс QSqlDatabase предоставляет подключение к базе данных. Класс QSqlDatabase предоставляет абстрактный интерфейс для доступа к базе данных. Он использует конкретный QSqlDriver базы данных для доступа и манипуляции данными. В следующем коде показано как установить соединение:
После создания объекта QSqlDatabase, устанавливаем параметры соединения с помощью setDatabaseName(), setUserName(), setPassword(), setHostName(), setPort(), и setConnectOptions(). Только после установки параметров вызывается open() для открытия соединения. Соединение определеное выше — безымянное соединение. Это соединение по умолчанию и доступ к нему может быть получен позже используя database():
Чтобы сделать програмирование более удобным, QSqlDatabase реализован как класс-значение (англ. "value class"). Любые изменения сделаные в соединении с базой данных через один объект QSqlDatabase будут влиять на другие объекты QSqlDatabase представляющие это же соединение. Вызовите cloneDatabase(), если вы хотите создать независимое соединение с базой данных на основе существующего. Если вы нуждаетесь во множестве соединений с базами данных одновременно, определите произвольное имя в addDatabase() и database(). Вызовите removeDatabase(), чтобы удалить соединение. QSqlDatabase выведет предупреждение, если вы попытаетесь удалить соединение, указанное в других объектах QSqlDatabase. Используйте contains(), чтобы видеть если заданное имя соединения есть в списке соединений. Как только соединение установлено вы можете посмотреть, какие таблицы база данных предоставляет с помощью tables(), найти первичный индекс для таблицы с помощью primaryIndex(), получить мета-информацию о полях таблицы (например, их имена) с помощью record() и выполнить запрос с помощью exec(). Если транзакции поддерживаются, вы можете использовать transaction(),чтобы начать транзакцию, и затем commit() или rollback(), чтобы завершить ее. Вы можете узнать поддерживается ли транзакция используя QSqlDriver::hasFeature(). При использовании транзакции вы должны начать транзакцию, прежде чем создадите свой запрос. Если произошла ошибка, она может быть получена с помощью lastError(). Имена SQL драйверов доступны из drivers(), вы можете проверить доступность драйвера с помощью isDriverAvailable(). Если вы создали свой собственный драйвер, вы можете зарегистрировать его с помощью registerSqlDriver(). Смотрите также QSqlDriver, QSqlQuery, Модуль QtSql и Потоки и Модуль QtSql. |
|
|
Текстовая версия | Сейчас: 30.11.2024, 13:31 |