Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема Запись файла > 1 Mб в поле Blob (база MS SQL) [D6, D7, MSSQL, PostgresSQL]


mtb ©   (2004-01-13 12:40:00) 

Возникла проблема записи файлов > 1Мб в базу
привожу код который работает до 1Мб без проблем, а с большими файлами дает ошибку "Invalid BLOB length."

ниже привожу код
procedure TForm1.Button1Click(Sender: TObject);
var
blob: TBlobStream;
fs: TFileStream;
begin
Table1.Edit;
blob:=table1.CreateBlobStream(table1.FieldByName("bl"), bmWrite)as TBlobStream;
try
blob.Seek(0, soFromBeginning);
fs := TFileStream.Create("c:\assa.doc", fmOpenRead or fmShareDenyWrite);
try
blob.CopyFrom(fs, fs.Size)
finally
fs.Free
end;
finally
blob.Free;
table1.Post;
end;
end;


mtb   (2004-01-14 07:27:00) [1]

Спасибо всем!

С утра получилось.
BDE лучше не юзать.
сработал следующий код (может не очень оптимальный, но работает)

procedure TForm1.Button4Click(Sender: TObject);//загрузка в базу
begin
adoquery1.Parameters.ParamByName("bl").LoadFromFile("c:\assa.exe",ftBlob);
adoquery1.ExecSQL;
end;

procedure TForm1.Button6Click(Sender: TObject);//из базы в файл
begin
TBlobField(ATable1.FieldByName("bl")).SaveToFile ("c:\asssa123.exe")
end;

оптимизацию пока не проводил


Delirium   (2004-01-13 16:24:00) [2]

Проблема определённо в BDE. Используйте ADO.


Sandman25   (2004-01-13 15:46:00) [3]

[7] mtb (13.01.04 14:40)

Жаль. Попробуйте засунуть в БД большой Blob не из клиента, а с помощью спец. утилиты. Ну типа IBExpert для IB, dbaccess для Informix, не знаю как называется для MSSQL. Чтобы понять, на каком уровне ошибке - то ли БД не принимает, то ли отсечение при передаче происходит.


mtb   (2004-01-13 14:40:00) [4]

Re
Через insert into и
Param.LoadFromFile не пробовали?

При записи ошибок не выдало
Однако после считывания и записи в файл данные усеклись до 999 996 байт :(


mtb   (2004-01-13 13:59:00) [5]

Re
Через insert into и
Param.LoadFromFile не пробовали?

Получилось Спасибо
Теперь попробую считать данные и кинуть опять в файл


Sandman25   (2004-01-13 13:40:00) [6]

Через insert into и
Param.LoadFromFile не пробовали?


mtb   (2004-01-13 13:39:00) [7]

Удалено модератором


mtb   (2004-01-13 13:38:00) [8]

может кто знает всетаки в чем проблема?


mtb   (2004-01-13 12:55:00) [9]

через BDE blob size менял, ничего не вышло
использовал BDE ODBC и MSSQL


Danilka   (2004-01-13 12:49:00) [10]

работа через БДЕ?
если да, то может, дело в параметре алиаса "BLOB SIZE"


Наверх

Титульная страница Поиск, карта сайта Написать письмо