Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2012, 22:18   #1
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
Вопрос Firebird несколько вопросов

Здравствуйте!
Возникло несколько несложных для профессионалов вопросов, подскажите...

1. Как написать ХП ничего не выводящую (без "do suspend"), то есть просто обработчик нескольких таблиц по SQL скрипту? (IBExpert ругается, не даёт сохранить в БД скрипт.) Вызов должен происходить из программы, без всяких таймеров.

2. В программе после множества действий получается некая таблица данных, обновлённые данные из которой нужно записать в БД. Сделать это всё внутри одного Dataset невозможно. Как наиболее правильно сравнивать "данные старые - данные новые" на предмет изменений с последующим сохранением изменений в БД? (Возможно не только update, но и insert и delete!)
Варианты: а) создать в программе два Dataset и вручную сравнивать, затем в БД отправлять в 3 этапа Изменённые,Удалённые,Добавленные? б) использовать один Dataset и отправлять в БД все данные, а перед постом проверять триггером/ХП? Как вообще такое делается обычно?

3. View в БД обновляются внутри БД постоянно сами (например при изменении данных в связанных таблицах) или только когда обращаются непосредственно к View?

4. Как хранить мультимедиа данные нужные всем пользователям БД при условии, что прямого доступа к серверу с БД ни у кого нет? Например фото и видео файлы? Записывать прямо в БД криво и тупо, если класть рядом - то непонятно как это делать если нет прямого доступа к папкам сервера? Кто как решает подобные вопросы?
delphicoding вне форума Ответить с цитированием
Старый 08.03.2012, 22:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
IBExpert ругается
Что пальчиком грозит?
Цитата:
В программе после множества действий получается некая таблица данных
А сразу вопрос в лоб - зачем? Временная таблица? А просто понапроводить транзакции, но без их коммита в базу?
Впрочем если речь идет о временной таблице, из которой потом данные попадают в другие таблицы то помогает
Код:
insert into Таблица1 select некие поля from временная таблица
insert into Таблица2 select некие другие поля from временная таблица
Учитывая что пример рассчитан на случай когда в одной временной таблице косолидируются данные, требуемые в разных таблицах. И это естесственно грубый пример.
Цитата:
View в БД обновляются внутри БД постоянно сами (например при изменении данных в связанных таблицах) или только когда обращаются непосредственно к View?
Вьюшка это просто предопределенный запрос. Какая разница когда он обновляется?
Цитата:
Как хранить мультимедиа данные нужные всем пользователям
В БД лучше хранить имя файла и путь. Само же хранилище файлов должно быть закрыто от внешнего попадания неким шлюзом, однако каталог с файлами должен иметь доступ на чтение. К примеру:
\\sever\photo\cfphn089[0jm98dx8098d\file.jpg
Папка photo расшарена но закрыта по безопасности.
Папка cfphn089[0jm98dx8098d открыта по безопасности.
Таким образом твоя прога по полному пути пройти сможет, а вот юзверь через проводник нет. Или вернее сможет, но ты ведь ему имя каталога cfphn089[0jm98dx8098d не расскажешь
Или второй вариант: По запросу файл копируется на локальный диск в скажем TEMP папку винды.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.03.2012, 22:45   #3
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

1. "do suspend" не существует. В том смысле, что "do" никакого отношения к "suspend" не имеет. Детали в справке по SQL. Чтобы написать ХП, "ничего не выводящую", нужно написать ХП ничего не выводящую (без слова "suspend").

2. Каждый разработчик делает это по своему. Универсального метода не существует.

3. Сервер СУБД - это самая обычная прога (dll, к примеру, для винды). Разумеется сама по себе она ничего не делает. Представление не обновляется - это не таблица, а формируется когда это требуется, т.е. при запросе к представлению.

4. Если доступа к серверу с БД нет, а "записывать прямо в БД криво и тупо", то это называется тупик.
Прик вне форума Ответить с цитированием
Старый 09.03.2012, 12:47   #4
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Stilet
1-2-3. странная манера не отвечать на заданные вопросы, а писать комменты в стиле "а это ваще ненужное всё". Если спрашивают - значит нужно.

4. Вот это нормальный ответ, спасибо! Уточнение - как на Delphi правильно пишется код типа "отдать файл / отправить файл юзеру в папку TEMP"?

Прик
1,3 - понятно, спасибо.
delphicoding вне форума Ответить с цитированием
Старый 09.03.2012, 13:06   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
1-2-3. странная манера не отвечать на заданные вопросы, а писать комменты в стиле "а это ваще ненужное всё". Если спрашивают - значит нужно.
delphicoding, o-o, суровый мужик. Странная манера отвечать выговором на оказанную помощь вместо "спасибо". Выговор то хоть без занесения в личное дело?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.03.2012, 13:13   #6
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Цитата:
o-o, суровый мужик. Странная манера отвечать выговором на оказанную помощь вместо "спасибо". Выговор то хоть без занесения в личное дело?
Странная манера писать не читая - напоминает анекдот про чукчу. :D
delphicoding вне форума Ответить с цитированием
Старый 09.03.2012, 13:21   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Чукча все видит. В том числе и спасибо в стиле - здесь ты негодяй, а за это, так уж и быть - спасибо.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.03.2012, 13:43   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
странная манера не отвечать на заданные вопросы
Ану-ка давай посмотрим что ты спросил:
Цитата:
IBExpert ругается, не даёт сохранить в БД скрипт.
Т.е. по твоему IBExpert на любые ошибки пишет одно единственное ругательство, которое все программисты знают на зубок?
Насчет остального думай что хочешь - при проектировании не об этом задумываться надо. Это далеко не самое важное.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.03.2012, 19:06   #9
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
Восклицание

Вопрос №2 остался без ответа...
delphicoding вне форума Ответить с цитированием
Старый 10.03.2012, 21:15   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вопрос №2 остался без ответа...
Мдя...
Ты внимательно прочел про то что я о транзакциях писал? Ась??
Похоже что нет.
Повторюсь - ты выполняешь запросы в рамках одной транзакции. Эти все данные попадают в грязный кэш СУБД, которая хранит их таблица аки, и ждет твоей комманды COMMIT, дабы записать это все одним чёхом в базу. Отсюда я задал вопрос: Зачем тебе нужна временная таблица? Ты прав - синхронизировать таблицы занятие трудоемкое, и если много клиентов сразу почнут это дело на сервере СУБД может загнуться от такого напряга.
Опять таки вопрос: Что это за данные такие, что требуют искусственного временного хранилища? Ты уверен что ну никак без времянки нельзя?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько вопросов DeFix Работа с сетью в Delphi 3 28.11.2011 13:48
Несколько вопросов phphel Общие вопросы Delphi 19 30.01.2011 21:24
несколько вопросов по C Horus92 Общие вопросы C/C++ 2 15.11.2009 16:08
несколько вопросов fitc Общие вопросы Delphi 28 14.07.2009 21:20
Несколько вопросов Зубоскалик Общие вопросы Delphi 14 20.11.2008 14:28