Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

Проблема Запись файла > 1 Mб в поле Blob (база MS SQL)   Найти похожие ветки 

 
mtb   (2004-01-13 12:40) [0]

Возникла проблема записи файлов > 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;


 
Danilka ©   (2004-01-13 12:49) [1]

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


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

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


 
mtb   (2004-01-13 13:38) [3]

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


 
mtb   (2004-01-13 13:39) [4]

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


 
Sandman25 ©   (2004-01-13 13:40) [5]

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


 
mtb   (2004-01-13 13:59) [6]

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

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


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

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

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


 
Sandman25 ©   (2004-01-13 15:46) [8]

[7] mtb (13.01.04 14:40)

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


 
Delirium ©   (2004-01-13 16:24) [9]

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


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

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

С утра получилось.
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;

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



Страницы: 1 вся ветка

Текущий архив: 2004.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
7-16778
MeskaLito
2003-11-21 11:31
2004.02.06
Блокировка компьютера


14-16715
Soft
2004-01-16 19:17
2004.02.06
Ошибка Microsoft Internet Explorer номер 444.


1-16263
denis24
2004-01-24 12:27
2004.02.06
listbox


3-16107
Ruslan
2004-01-10 15:55
2004.02.06
BDE


3-16198
AVP_opck
2004-01-13 08:57
2004.02.06
временная база данных