Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение/Запись Image в БД, Обязательно динамически. 
:(
    Опции темы
Zero
Дата 30.3.2005, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



САБЖ.
Вообщем как загружать в БД MS-Access, содержимо TImage, и обратно. Работаю с компонентами вкладки ADO.
Хотя конечно могу и сам разобратся, но нету времени, если кто имеет какие-нибудь полезные ссылки на методички или любая информация, то скиньте пожалуйста.
Заранее благодарен!!!
PM MAIL ICQ   Вверх
Vit
Дата 30.3.2005, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



DRKB


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Zero
Дата 30.3.2005, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Vit я уже смотрел там. Вчасности ту ссылку которую ты мне тот раз скидывал там показано как считывать уже имеющиеся файлы, а как записывать не написано. А то FAQ, которое у меня тут там вроде нету. А то которое ты на 10 Mb сделал, у меня при скачивании какие-то глюки выводятся, какие-то цифры по всему экрану начинают бегать. Вообщем я его скачать не могу. smile
PM MAIL ICQ   Вверх
k2s
Дата 31.3.2005, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.2.2005

Репутация: нет
Всего: нет



Запись файла в BLOB поле через ADOQuery. Из DRKB:
Цитата
Код
ADOquery1.sql.text:='Insert into myTable (a) Values (:b)'; 
ADOQuery1.parameters.parseSQL(ADOquery1.sql.text, true); 
ADOQuery1.parameters.parambyname('b').LoadFromFile('MyFile'); 
ADOQuery1.execsql;

PM MAIL   Вверх
DDX
  Дата 1.4.2005, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 31.1.2005
Где: Москва

Репутация: 5
Всего: 5



на форуме совсем недавно было несколько таких же тем, поиск ещё никому не повредил ;)
почитай тут:
http://forum.vingrad.ru/index.php?showtopic=46995
http://forum.sources.ru/index.php?showtopic=89054
DRKB forever

Это сообщение отредактировал(а) DDX - 1.4.2005, 10:06
--------------------
Учиться, учитьcя и ещё раз учиться  
PM MAIL WWW   Вверх
Zero
Дата 2.4.2005, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(k2s @ 31.3.2005, 01:29)
Запись файла в BLOB поле через ADOQuery. Из DRKB:

Интересно, а автор ответа из DRKB его проверял хотябы, у меня лично после 3-ей строки выдаётся ошибка. smile
Цитата(DDX @ 1.4.2005, 10:00)
на форуме совсем недавно было несколько таких же тем

Да только в этих темах нету ни одного нормального ответа.
Если кто-нибудь знает как записывать из делфи (исп. компоненент TImage) в аксес и обратно, то напишите простой пример пожалуйстя, а то я что-то ни как не найду ни где нормальных ответов, где расписано как это делается с нуля.
Почему-то все кто знают как это делается ─ думают что вес это знают и пишут типа
Цитата
DRKB
или "пользуйся поиском", но конкретного ничего не отвемают. О существование поиска и FAQ, я и сам прекрасно знаю, и не стал бы для этого задовать вопрос.
Те кто не знают соответственно тоже ничего не пишут.
В ИТОГЕ: ни кто ничего не пишет и ни чем толковым не хочет помочь.
PM MAIL ICQ   Вверх
Zero
Дата 2.4.2005, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Поднимаю тему.
PM MAIL ICQ   Вверх
Zero
Дата 2.4.2005, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Ну короче я нашёл один из примеров в и-нете, он вроде записывает в Access, данные, ну там становится написано типо "двоичные данные" ну и какуюто хрень об ошибке пишет.
А может кто-нибудь знает как тут можно переправить чтобы он записывал именно bmp, и было бы всё без глюков. smile
Код

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if openpicturedialog1.Execute then
    edit1.Text:=openpicturedialog1.FileName;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  adotable1.Append;
  TBLOBField(ADOtable1.FieldByName('qqq')).LoadFromFile(edit1.Text);
  adotable1.Post;
end;

PM MAIL ICQ   Вверх
offline
Дата 2.4.2005, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



Что-то я нифига не понял, что тебе конкретно надо, может это подойдет. Код конечно можно упростить, но это по ситуации смотреть надо

Код

//-------------------------------------------------------------------------
// процедура определения типа картинки по расширению файла
// конечно лучше анализировать содержимое картинки, но это более трудоемко
//-------------------------------------------------------------------------
function GetGraphicClassByExt(Ext: String) : TGraphicClass;
begin
 if (Ext = '.wmf') or (Ext = '.emf') then
   Result := TMetafile
 else if (Ext = '.gif') then
   Result := TGifImage
 else if (Ext = '.bmp') or (Ext = '.dib') then
   Result := TBitmap
 else if (Ext = '.jpeg') or (Ext = '.jpg') then
   Result := TJPEGImage
 else
   Result := nil;
end;

//------------------------------------------------------------------------------
// процедура загрузки картинки в базу
//------------------------------------------------------------------------------
function Tdtmdl_Main.SetPicture(PictureFieldName, PictureFieldFile: String): Boolean;
var
  Field: TBLOBField;
  DataSet: TDataSet;
  FileName: String;
  FS: TFileStream;
begin
  Result := false;
  DataSet := ds_Elements.DataSet;
  if DataSet.IsEmpty then Exit;
  LogMessage('Установка картинки');
  Result := OpenPictureDialog.Execute;
  if Result then
    begin
      if not DataSetInModifyMode(DataSet) then DataSet.Edit();
      try
        try
          FileName := OpenPictureDialog.FileName;
          DataSet.FieldByName(PictureFieldFile).Value := ExtractFileName(FileName);
          Field := TBLOBField(DataSet.FieldByName(PictureFieldName));
          FS := TFileStream.Create(FileName, fmOpenRead + fmShareDenyNone);
          FS.Position := 0;
          Field.LoadFromStream(FS);
          FS.Free();
        except
          on E: Exception do
            LogErrorMessage('Ошибка при установке картинки ' + E.Message);
        end;
      finally
        DataSet.CheckBrowseMode();
      end;
    end;
end;

//------------------------------------------------------------------------------
// процедура записи ккартинки из базы в TImage
//------------------------------------------------------------------------------
procedure Tdtmdl_Main.SetPictureToImage(DataSet: TDataSet; Image: TImage; PictureFieldName, PictureFieldFile: String; ImageDraw: TImage = nil);
var
  Stream: TStream;
  Field: TBLOBField;
  FileExt: String;
  MF: TGraphic;
  GClass: TGraphicClass;
begin
  if not Assigned(Image) then Exit;
  LogMessage('Прорисовка картинки');
  Image.Picture.Assign(nil);
  Image.Width := 1;
  Image.Height := 1;
  if Assigned(ImageDraw) then ImageDraw.Picture.Assign(nil);
  if DataSet.IsEmpty then Exit;
  Field := TBLOBField(DataSet.FieldByName(PictureFieldName));
  if not Field.IsNull then
    begin
      Stream := TMemoryStream.Create;
      try
        Field.SaveToStream(Stream);
        Stream.Position := 0;
        FileExt := LowerCase(ExtractFileExt(DataSet.FieldByName(PictureFieldFile).Value));
        GClass := GetGraphicClassByExt(FileExt);
        if Assigned(GClass) then
          begin
            MF := GClass.Create;
            try
              MF.LoadFromStream(Stream);
              Image.Visible := false;
              Image.AutoSize := true;
              Image.Picture.Assign(MF);
              Image.AutoSize := false;
              Image.Stretch := true;
              Image.Visible := true;
            finally
              MF.Free();
            end;
          end;
      finally
        Stream.Free;
      end;
    end;
end;



PM MAIL   Вверх
Zero
Дата 3.4.2005, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



kirilllius что-то я не могу его связать, ты не мог бы прикрепить файл у уже установлеными компонентами? Что-то не получается его сделать. smile Или что у меня не правильно (пока пытаюсь загрузить в БД картинку)
Код

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if openpicturedialog1.Execute then
  s:=openpicturedialog1.FileName;
end;

function TForm1.SetPicture(PictureFieldName, PictureFieldFile: String): Boolean;
var
  Field: TBLOBField;
  DataSet: TDataSet;
  FS: TFileStream;
begin
  DataSet.FieldByName(PictureFieldFile).Value := ExtractFileName(s);
  Field := TBLOBField(DataSet.FieldByName(PictureFieldName));
  FS := TFileStream.Create(s, fmOpenRead + fmShareDenyNone);
  FS.Position := 0;
  Field.LoadFromStream(FS);
  FS.Free();
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  q:boolean;
begin
  q:=SetPicture('qqq',s) //qqq ─ это имя столбца например
end; 

Замечание: Ни каких проверок на ошибки и ничего лишнего делать не нужно, я хочу разобратся как загружать картинки в БД(и обратно), а всё остальное потом.
PM MAIL ICQ   Вверх
offline
Дата 3.4.2005, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



Вот упрощенный пример работы с Jpeg. Если не пойдет, тогда вышлю пример рабочей версии.
Код

//загрузка картинки в базу
procedure LoadImgToBD;
 var
  FileName: Stream;
  Stream: TMemoryStream;
  ImgJPEG : TJpegImage;
begin
  if not DlgOpenImg.Execute
    then Exit; 
  FileName := DlgOpenImg.FileNam;
  try
   ImgJPEG := TJpegImage.Create;//создаем класс изобразения
   ImgJPEG.LoadFromFile(FileName);//загрузаем в него картинку
   Stream:= TMemoryStream.Create;//создать поток
   ImgJPEG.SaveToStream(Stream);//сохранить данные в поток
   Stream.Position:=0;//прерчитать поток
   DataSet.Edit;//открываем набор данных для редактирования
   TBLOBField(DataSet.FieldByName(PictureFieldName)).LoadFromStream(Stream);//сохранить поток
   DataSet.Post;
   TImage.Picture.Assign(ImgJPEG);//считать поток в поле изображения
  finally
   ImgJPEG.Free;//удалить класс изображения
   Stream.Free;//удалить поток
  end;
end;

//загрузка картинки из базы
procedure LoadImgFromBD;
var
  Stream: TStream;
  ImgJPEG: TJpegImage;
 begin
  try
   Stream:= TMemoryStream.Create;//создание потока в памяти
   TBLOBField(DataSet.FieldByName(PictureFieldName)).SaveToStream(Stream);//сохранение  в поток из BLOB поля
   Stream.Position:=0;//установить поток на начало
   ImgJPEG := TJpegImage.Create;
   ImgJPEG.LoadFromStream(Stream);
   TImage.Picture.Assign(ImgJPEG);//считать поток в поле изображения
  finally
   ImgJPEG.Free;
   Stream.Free;//удалить поток из памяти
  end;
 end;


Это сообщение отредактировал(а) kirilllius - 3.4.2005, 10:51
PM MAIL   Вверх
Zero
Дата 3.4.2005, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



kirilllius а ты можеш прикрепить проверенный пример к своему посту, а то во всех твоих примерах есть ошибки, а когда я их переделываю, видимо в них меняется смысл и не работает.
И что это за тип TDataSet, я нихрена не понял что нужно вводить на его место. smile
И это у меня должны быть именно bmp, возможно из-за этого когда я переделываю под TBitMap, тоже что-нить глюкает.
PM MAIL ICQ   Вверх
offline
Дата 3.4.2005, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



Ок, сейчас найду его и пришлю smile
PM MAIL   Вверх
Zero
Дата 3.4.2005, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



smile smile
PM MAIL ICQ   Вверх
offline
Дата 3.4.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



Вот 100% рабочий пример, только что сам пробовал. Если ты работаешь с BMP и стандартным TImage, то можешь на поле с изображением поставить DBImage1 он сам будет выводить в него графику. Но ты писал, что хочешь разобраться с принципом загрузки и выгрузки, поэтому смотри оба примера.

PoleImages – это поле типа OLE в базе Access
Считывается изображение из базы на событии - AfterScroll

Код

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
 var
  FileName: String;
  Stream: TMemoryStream;
  ImgBMP : TBitmap;
begin
  if not OpenPictureDialog1.Execute
    then Exit;
  FileName := OpenPictureDialog1.FileName;
  try
   ImgBMP := TBitmap.Create;
   ImgBMP.LoadFromFile(FileName);
   Stream:= TMemoryStream.Create;
   ImgBMP.SaveToStream(Stream);
   Stream.Position:=0;
   ADOTable1.Append;
   // ADOTable1.Edit;
   TBLOBField(ADOTable1.FieldByName('PoleImages')).LoadFromStream(Stream);
   ADOTable1.Post;
   DBImage1.Picture.Assign(ImgBMP);
  finally
   ImgBMP.Free;
   Stream.Free;
  end;
end;

procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
var
  Stream: TMemoryStream;
  ImgBMP: TBitmap;
 begin
  try
   Stream:= TMemoryStream.Create;
   TBLOBField(ADOTable1.FieldByName('PoleImages')).SaveToStream(Stream);
   Stream.Position:=0;
   ImgBMP := TBitmap.Create;
   ImgBMP.LoadFromStream(Stream);
   Image1.Picture.Assign(ImgBMP);
  finally
   ImgBMP.Free;
   Stream.Free;
  end;
end;



PM MAIL   Вверх
Zero
Дата 3.4.2005, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Всё, спасибо большое kirilllius, это то что нужно. smile Дальше я уже сам разберу, как что делать. smile
PM MAIL ICQ   Вверх
offline
Дата 3.4.2005, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



Рад помочь smile
PM MAIL   Вверх
DDX
Дата 4.4.2005, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 31.1.2005
Где: Москва

Репутация: 5
Всего: 5



Zero
примера да, не написал, но сам из интереса накропал маленькую программку для проверки записи и загрузки картинок, исходя исключительно из drkb и вышеуказанных тем
--------------------
Учиться, учитьcя и ещё раз учиться  
PM MAIL WWW   Вверх
Zero
Дата 4.4.2005, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(DDX @ 4.4.2005, 10:40)
исходя исключительно из drkb и вышеуказанных тем

DDX там везде написано на первый взгляд не понятно, т.е. теперь мне можно там смотреть когда я понял сам принцип записи и считывания, а в самом начале когда начинаешь что-либо с нуля то по тем ссылкам хреново разбирать, а пример то оказывается делается в 3 строчки для записи если захотеть:
Код

procedure TForm1.SpeedButton1Click(Sender: TObject);    
begin    
  if openpicturedialog1.Execute then    
    edit1.Text:=openpicturedialog1.FileName;    
end;    
procedure TForm1.Button1Click(Sender: TObject);    
begin    
  adotable1.Append;    
  TBLOBField(ADOtable1.FieldByName('<Имя столбца таблицы>')).LoadFromFile(edit1.Text);    
  adotable1.Post;    
end;

PM MAIL ICQ   Вверх
offline
Дата 4.4.2005, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



Инетересно, а база после такой операции выростает на размер файла или в несколько раз больше?
PM MAIL   Вверх
Zero
Дата 4.4.2005, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(kirilllius @ 4.4.2005, 22:02)
Инетересно, а база после такой операции выростает на размер файла или в несколько раз больше?
Всмысле... Ты про что имеешь ввиду? smile
PM MAIL ICQ   Вверх
offline
Дата 4.4.2005, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



Если ты в базу добавляешь все содержимое файла, то как вырастает твоя база?
Или ты добавляешь какие-то фрагменты?


PM MAIL   Вверх
Zero
Дата 5.4.2005, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(kirilllius @ 4.4.2005, 22:59)
Если ты в базу добавляешь все содержимое файла, то как вырастает твоя база?

Да не вопрос то понятен, только ты про что намекаешь? smile Хочешь сказать что то как я переделал, база будет больше чем то как ты показал? smile Так? smile
Цитата(kirilllius @ 4.4.2005, 22:59)
Или ты добавляешь какие-то фрагменты?

Не всё, точнее... У меня курсач на тему "создания форума" и я добавляю в БД фотографие и аватары, но полностью. Все проверки которые нужно делать, делаются заранее, т.е. если дойдёт до записи, то 100% запишется и ни каких дополнительных проверок делать не требуется. smile
PM MAIL ICQ   Вверх
offline
Дата 5.4.2005, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



Вроде если использовать для графики

adotable1.Append;
TBLOBField(ADOtable1.FieldByName('<Имя столбца таблицы>'))....
adotable1.Post;

без класса TJPEGImage, то база будет расти не на размер файла, а больше, поэтому нужно сначало читать файл в поток, затем в графический клас например в TJPEGImage для JPEG а затем его уже сохранять в базу, Это приводит к тому, что база ростет в зависимости от размера файла
PM MAIL   Вверх
bursa
Дата 5.4.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.2.2005
Где: Липецк

Репутация: 1
Всего: 1



Вопрос дилетанта: а почему бы не хранить в базе только путь до картинки?
PM MAIL   Вверх
DimW
Дата 5.4.2005, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 5
Всего: 44



Наверное многие не любят когда в нагрузку к БД и EXE, еще валяются папки с картинками и т.д.

Меня это тоже напригает...

ну а как такой вопрос: а почему бы не хранить в базе только путь до текстового файла???

Многие и на это согласны лишь бы БД разгрузить, многие хотят выжать максимум от БД... - а почему и нет!!!... smile
PM MAIL ICQ   Вверх
DDX
Дата 5.4.2005, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 31.1.2005
Где: Москва

Репутация: 5
Всего: 5



bursa
потому что её могут удалить/переименовать/перенести базу просто на другую машину

а так - религиозных предубеждений не должно быть, думаю, никаких ))
проще, когда всё в одном месте


Это сообщение отредактировал(а) DDX - 5.4.2005, 14:41
--------------------
Учиться, учитьcя и ещё раз учиться  
PM MAIL WWW   Вверх
bursa
Дата 5.4.2005, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.2.2005
Где: Липецк

Репутация: 1
Всего: 1



Цитата(DimW @ 5.4.2005, 14:37)
многие хотят выжать максимум от БД... - а почему и нет!!!...
Да, но... Не влияет ли на производительность базы ее громадные размеры. Особенно, если это какая-нибудь топография. И тут-то и наоборот, ценой своего удобства, замедляем работу. Не надо забывать и о фрагментации внутри базы.

Цитата(DimW @ 5.4.2005, 14:37)
а почему бы не хранить в базе только путь до текстового файла???
smile

Цитата(DDX @ 5.4.2005, 14:39)
её могут удалить/переименовать/перенести базу просто на другую машину

Согласен. Правда, можно извращаться: Никто, кроме сисадмина, с сервера с нерасшаренной папки ничего не сделает. Не знаю правда, как Эксесс, но в других базах можно вызвать в селекте файл с диска.

PM MAIL   Вверх
DimW
Дата 5.4.2005, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 5
Всего: 44



Цитата
Да, но... Не влияет ли на производительность базы ее громадные размеры.


Но ведь индексация не зря придумана была!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Цитата
Не надо забывать и о фрагментации внутри базы.


Но и об админах БД тоже забывать не нужно... smile
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1298 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.