Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-16738
Akvilon
2004-01-12 22:19
2004.02.06
На чем написана Delphi?


3-16100
Sirgfine
2004-01-10 23:20
2004.02.06
BDE


3-16040
RUYurik
2004-01-13 05:59
2004.02.06
Лицензия для InterBase 7.0


1-16492
Islander
2004-01-27 22:17
2004.02.06
Где хранить настройки в 200x/XP?


1-16234
sbuffoon
2004-01-26 01:09
2004.02.06
Alt+F4





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский