Форум: "Базы";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
ВнизПроблема Запись файла > 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.026 c