![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Stream and AdoCommand [D7, MSSQL]
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;