Проверка существования БД, и её открытия или создание |
Здравствуйте, гость ( Вход | Регистрация )
Проверка существования БД, и её открытия или создание |
bynet |
2.7.2010, 20:49
Сообщение
#1
|
Студент Группа: Участник Сообщений: 69 Регистрация: 17.3.2008 Из: Belarus Пользователь №: 124 Спасибо сказали: 0 раз(а) Репутация: 0 |
Надо проверить в программе существует ли БД (использую QSQLITE), если она не существует то создать, а если существует прочитать её. Помогите с реализацией! Какие пути решения?
Сообщение отредактировал bynet - 2.7.2010, 20:50 |
|
|
Litkevich Yuriy |
2.7.2010, 21:25
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
проверить существует ли файл.
но для SQLITE ещё проще, он автоматом создаст БД при открытии, если её не было. |
|
|
maint |
3.7.2010, 8:50
Сообщение
#3
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
Надо проверить в программе существует ли БД (использую QSQLITE), если она не существует то создать, а если существует прочитать её. Помогите с реализацией! Какие пути решения? есть такая функция в C/C++ stat. С помощью ее можно проверить наличие файла-базы. Там же можно получить информацию, какой она длины. Если 0, то надо создавать таблицы. Во всяком случае с этим подходом я живу уже лет 5. |
|
|
Andrewshkovskii |
3.7.2010, 9:53
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
|
|
|
maint |
3.7.2010, 11:40
Сообщение
#5
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
именно системный вызов/функция C/C++. stat или lstat. Надо подключить хедер <sys/stat.h>. Она есть во всех C/C++ (gcc/g++, Borland, Watcom, Intel C++, была, во всяком случае в VS до 8 версии. Дальше не пользовался, не знаю. Вызов прост как грабли для stat. Для lstat - подобен struct stat stbuf; if(stat(путь_до_файла, &stbuf) < 0) А нету else Есть; в stat.st_size - длина файла. |
|
|
DEADHUNT |
3.7.2010, 11:43
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
|
|
|
inviZ |
4.7.2010, 13:05
Сообщение
#7
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 5.6.2010 Пользователь №: 1781 Спасибо сказали: 4 раз(а) Репутация: 1 |
Надо проверить в программе существует ли БД (использую QSQLITE), если она не существует то создать, а если существует прочитать её. Помогите с реализацией! Какие пути решения? Все верно во втором посте. База сама создается, если ее нет. Но скорее всего тебе еще придется проверить, существуют ли нужная тебе таблица/таблицы. Например, как-то так:
Вместо table_name используешь название нужной таблицы, естественно. |
|
|
Litkevich Yuriy |
4.7.2010, 15:03
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
проще получить список таблиц так:
QStringList QSqlDatabase::tables ( QSql::TableType type = QSql::Tables ) const это будет независимо от СУБД. |
|
|
Текстовая версия | Сейчас: 1.12.2024, 14:20 |