|
Тема |
Качване на голям файл в база данни ? |
|
Автор | Daniel (Нерегистриран) | |
Публикувано | 19.12.06 15:07 |
|
|
Здравейте на всички.
Нуждая се от помощ за следния проблем - в база данни (MS Access, MS SQL Server 2000) се опитвам да вкарам голям (над 100 МВ) файл в съответно BLOB поле, но не успявам. За файлове с размер под 90-100 МВ нещата се получават, но иначе връща грешка E_FAIL.
Ползва се ADO за връзка с базата данни.
Пример от ползвания код е даден по-долу:
var
LSFile : _Stream; //interface _Stream from ADODB_TLB.pas
ADORs : TRecordset; //class from ADODB_TLB.pas
intRealSize, intChunkSize, intAllSize : integer;
.....
.....
LSFile.LoadFromFile(SourceFile);
while LSFile.State <> adStateOpen do
sleep(5);
intRealSize := 0;
intChunkSize := 500000;
intAllSize := LSFile.Size;
while intRealSize <= intAllSize do
begin
ADORs.Fields.Item['FieldBLOB'].AppendChunk(LSFile.Read(intChunkSize));
intRealSize := intRealSize + intChunkSize;
end;
ADORs.Update;
result:=true;
Кода е подобен на този в сайта на delphi.about.com за качване на изображение в база данни.
При изеикване на ADORs.Update се появява грешка и промените не се получават.
Платформата е:
Windows XP + SP2
Delphi 6 Professional
База данни: MS Access, MS SQL Server 2000, Oracle
Търсих на доста места в мрежата, но досега решение не съм открил. В повечето случаи ставаше въпрос за обекти с размери до 1 МВ и ползване на BDE, което е различно от моя случай.
Моля, ако някой има идея как може да се реши проблема, нека каже.
Благодаря предварително и весело изкарване на празниците
|
| |
|
|
|