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

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

Stream and AdoCommand [D7, MSSQL]


Страницы:   1 2 3

Viod ©   (2008-07-11 11:40:00) 

Здравствуйте!
Есть такая задача: нужно сохранить rtf файл в базу данных, затем из базы данных получить и загрузить в редактор.
rtf передается в поток TMymoryStream.
Для записи в базу данных используется хранимая процедура типа:
@code image
AS
INSERT INTO temp_table(code) VALUES(@code)
-----------------------------------------------------

var mystream:Tmemorystream; // сюда передаю rtf

Пользуюсь компонентом ADOCommand

ADOCommand1.CommandType:=cmdStoredProc;
ADOCommand1.CommandText:='p_inferno_temp2;1';
ADOCommand1.Parameters.Clear;
ADOCommand1.Parameters.Add;
ADOCommand1.Parameters[0].Direction:=pdInput;
ADOCommand1.Parameters[0].Name:='@code';   ADOCommand1.Parameters[0].LoadFromStream(mystream,ftBlob);

Параметру не передается значение из потока.
такой вариант записи в базу вобще возможен?


Viod   (2008-07-11 13:25:00) [41]

Все работает.
Теперь пытаюсь сделать вывод с помощью хранимой процедуры

если просто то:
CREATE PROCEDURE temp_out
AS
select code from temp_table
GO

В принципе я вызываю процедуру, она мне возвращает набор, и я его обрабатываю как описано выше... Так будет работать?


Viod   (2008-07-11 13:12:00) [42]

спасибо за оперативность :)
пойду пробовать


Ega23   (2008-07-11 13:09:00) [43]

with TADODataSet.Create(nil) do
begin
 try
   Connection := .....;
   CommandText := 'Select code from temp_table';
   try
     Open;
     if IsEmpty then Exit;
     ms := TMemoryStream.Create;
     try
       TBLOBField(FieldByName('code')).SaveToStream(ms, ftBLOB);
       ms.Position := 0;
       ... Работаем с ms
     finally
       ms.Free;
     end;  
   except
     .....
   end;
 finally
   Free;
 end;
end;


Viod   (2008-07-11 13:03:00) [44]

Это осилил, спасибо, а как теперь из базы выгрузить в stream?


Ega23   (2008-07-11 11:53:00) [45]

with ADOCommand1 do
begin
 Connection := ....;
 CommandText := 'exec s_MyProc @code=:code';
 Parameters.ParamByName('code').DataType := ftBlob;
 Parameters.ParamByName('code').LoadFromStream(mystream,ftBlob);
 try
   Execute;
 except
   ......
 end;
end;


Страницы:   1 2 3

Наверх

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