Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.06.2016, 12:33
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию Самообновление БД

Ребят решил сделать такую штуку. Самообновление структуры бд.
Есть такая проблема. С новой версией добавляются новые поля в таблички. А страрая версия будет выдавать ошибки. Чтоб этого избежать решил делать некий срез структуры новой бд в файле и при старте программы опрашивать если объекта (таблицы или поля) нет в этой версии бд, то создать его
Посоветуйте как такое реализовать?
Ответить с цитированием
  #2  
Старый 19.06.2016, 19:10
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,056
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Зависит от БД.
В принципе, большинство БД позволяют получать данные об структуре из мета-данных. Названия таблиц/вью метаданныз и их структура зависят от БД. Ну а как добавлять/создавать таблицы/вью и др. объекты БД - это стандартный DDL, правда его придется генерить смостоятельно во время исполнения программы, что не так сложно.
Ответить с цитированием
  #3  
Старый 20.06.2016, 17:46
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию

Спасибо. Что такое ддл? И как с ее помощью осуществлять миграцию версий бд
Ответить с цитированием
  #4  
Старый 21.06.2016, 05:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,056
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Data Definition Language - та чать SQL, предназначенная для работы со структурами данных - создание/изменени/удаление таблиц/вью/триггеров/etc.
Собственно, тебе надо считать из метаданных текущее состояние БД, сравнить его с требуемым (которое идет с новой версией программы), по разнице сгенерировать запросы для изменения БД и выполнить их.

Например,
у тебя есть в БД таблицы T1 (F1, F2) и T2 (F1, F2, F3).
А для новой версии программы требуется: T1 (F1, F2, F3) и T2 (F1, F2, F3) и T3 (F1).
Таким образом, тебе надо сгенерировать запрос на добавление поля F3 в таблицу T1, T2 трогать не надо, а еще надо создать таблицу T3.
Ответить с цитированием
  #5  
Старый 24.06.2016, 22:43
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А представляете что будет, когда вам потребуется сделать сравнение данных по таблице, структура которой менялась произвольно?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 25.06.2016, 06:19
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,056
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, тут просто накладывается "административное" ограничение - только добавляем поля и создаем новые таблицы. Тогда задача сильно упрощается.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:50.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter