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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2009, 13:40   #1
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию Правильное удаление Blob-поля из базы

Как правильно очистить Blob-поле в базе данных, чтобы размер файла базы данных уменьшался в зависимости от очищения?
Использую ADO.
Я пишу так:
Код:
 DBGrid1.DataSource.DataSet.Edit;
 DBGrid1.DataSource.DataSet.FieldByName('Скриншот').Clear;
Но размер файла базы данных остается прежним! Как был до удаления. Так ведь нехорошо... Я просто добавляю скриншот, а некоторые весят по 5 мб, но размер файла увеличивается и не уменьшается при очищении поля.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 15.05.2009, 16:31   #2
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Как правильно очистить Blob
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 15.05.2009, 16:36   #3
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Ща мож че нибуть найду...
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 15.05.2009, 16:36   #4
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Ну хорошо, не отвечаете, я переформулирую вопрос.
Как в базу данных ADO отправить SQL такого типа:
Код:
UPDATE MyTable 
Set MyBlobField = Null 
WHERE SomeField = 'Somevalue'
В простом ADOQuery не получается, выводит ошибку:
Цитата:
Текущий проводник не поддерживает возврат нескольких наборов записей в результате одной операции
Код такой:
Код:
procedure TfrmFilms.MClearPictureClick(Sender: TObject);
begin
 DBGrid1.DataSource.DataSet.Edit;
 //DBGrid1.DataSource.DataSet.FieldByName('Скриншот').Clear;

 with DataModule1.ADOQuery1.SQL do
 begin
  Clear;
  Add('UPDATE Таблица');
  Add('Set Скриншот = Null');
  Add('WHERE Key1 = ' + IntToStr(DBGrid1.DataSource.DataSet.FieldByName('Key1').Value)); //Key1 - это поле типа счетчик в таблице
 end;
 DataModule1.ADOQuery1.Active := true;
 DataModule1.ADOQuery1.ExecSQL;
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.

Последний раз редактировалось Neeter; 15.05.2009 в 16:41.
Neeter вне форума Ответить с цитированием
Старый 15.05.2009, 16:42   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Попробуй ApplyUpdates вызвать
Еще просто Delete принудительно вызвать...
Чесно говоря я не знаю метода паковки БД через компоненты Делфи...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.05.2009, 17:37   #6
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

У базы размер не постоянно увеличивается.
вот я попробовал добавлять очень много картинок (заменой старых).
Размер стал 22 мб (не такой как размер всех картинок)
Потом еще раз попробовал.
Размер таким же остался.
То есть если добавил скриншот, то размер базы увеличивается, потом когда удалил, размер остается прежним, но если снова добавить картинку и если ее размер не превышает размера базы минус размера всех картинок, то она просто добавляется в базу не изменяя ее размера.
Просто надо иметь с собой и пустую базу тоже(если вы будете в интернет выкладывать, чтобы она весила мало) а потом пользователь сам добавлять будет если захочет и расти база будет у него так как он захочет.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтения из BLOB - поля Den3D БД в Delphi 2 05.05.2009 15:17
Выгрузка с базы BLOB-поле tsergey Помощь студентам 1 17.04.2009 14:16
Получение данных из blob поля vvviperrr БД в Delphi 1 28.04.2008 00:05
картинка из поля BLOB в файл Word chekanoff Общие вопросы Delphi 1 20.04.2008 20:18
Blob поля в делфи dagarik БД в Delphi 2 02.12.2007 17:33