Здравствуйте, гость ( Вход | Регистрация )
Litkevich Yuriy | Дата 4.5.2009, 5:57 |
Frigolem, я эту проблему иначе решил, просто проверяю существует ли файл, средствами QFile. | |
Frigolem | Дата 3.5.2009, 21:15 |
Само ядро (sqlite3.c), на которое ссылается драйвер, воспринимает имя БД как имя файла и напрямую использует его всюду. Qt'шный драйвер sqlite использует при открытии БД метод sqlite_open16, который не подразумевает передачу параметров открытия... При этом рядом стоящая альтернативная функция sqlite_open_v2 позволяет в качестве аргумента задать режим SQLITE_OPEN_READONLY (вместо SQLITE_OPEN_READWRITE) и таким образом получить ошибку при попытке открытия несуществующей БД. Для _open16 видимо ещё не реализовали. Наверно разработчики ядра не сильно об этом парятся, так как имя БД напрямую используют как имя файла. Возможно и нам пока что не стоит... Также есть один косвенный метод -- использовать QSqlDatabase::tables Она возвращает список таблиц в БД. Соответственно в новосозданной БД таблиц быть не должно. Жаль только, что таки как минимум оставляет после себя сделанный файл БД (с размером в 0 байт), если такового не было... Вот примерчик:
|
|
Tonal | Дата 29.4.2008, 7:34 |
Ну самой-то SQLite можно указать и другое поведение. Но вот можно ли это через драйвер Qt... | |
Litkevich Yuriy | Дата 29.4.2008, 7:27 |
Тут обнаружил такую штуку, никогда со встраиваемыми БД не работал с SQLITE в том числе. если написать такие строчки кода:
то если БД нет то будет создана, нашел это удобным, но не всегда. Можно ли проверить существует БД или нет? Как вариант проверять наличие файла, но хотел средствами для работы с БД. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 4:25 |