![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Litkevich Yuriy |
![]()
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Тут обнаружил такую штуку, никогда со встраиваемыми БД не работал с SQLITE в том числе.
если написать такие строчки кода:
то если БД нет то будет создана, нашел это удобным, но не всегда. Можно ли проверить существует БД или нет? Как вариант проверять наличие файла, но хотел средствами для работы с БД. |
|
|
![]() |
Tonal |
![]()
Сообщение
#2
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Ну самой-то SQLite можно указать и другое поведение. Но вот можно ли это через драйвер Qt...
|
|
|
Frigolem |
![]() ![]()
Сообщение
#3
|
Студент ![]() Группа: Новичок Сообщений: 14 Регистрация: 24.9.2008 Пользователь №: 297 Спасибо сказали: 3 раз(а) Репутация: ![]() ![]() ![]() |
Само ядро (sqlite3.c), на которое ссылается драйвер, воспринимает имя БД как имя файла и напрямую использует его всюду.
Qt'шный драйвер sqlite использует при открытии БД метод sqlite_open16, который не подразумевает передачу параметров открытия... ![]() При этом рядом стоящая альтернативная функция sqlite_open_v2 позволяет в качестве аргумента задать режим SQLITE_OPEN_READONLY (вместо SQLITE_OPEN_READWRITE) и таким образом получить ошибку при попытке открытия несуществующей БД. Для _open16 видимо ещё не реализовали. Наверно разработчики ядра не сильно об этом парятся, так как имя БД напрямую используют как имя файла. Возможно и нам пока что не стоит... ![]() Также есть один косвенный метод -- использовать QSqlDatabase::tables Она возвращает список таблиц в БД. Соответственно в новосозданной БД таблиц быть не должно. ![]() Жаль только, что таки как минимум оставляет после себя сделанный файл БД (с размером в 0 байт), если такового не было... ![]() Вот примерчик:
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Frigolem, я эту проблему иначе решил, просто проверяю существует ли файл, средствами QFile.
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 10.7.2025, 20:50 |