Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Запись массива в бинари в blob поле в БД в MSACCESS   Найти похожие ветки 

 
Yozh_Programmer ©   (2004-03-29 23:39) [0]

Вот есть код
записи данных в БД с blob"ом

procedure TForm1.Button1Click(Sender: TObject);
var arI : array[ 1..3 ] of Integer;
   ms : TMemoryStream;
begin
   a_q.SQL.Text := "insert into bin_table values( :_bin_field )";
   a_q.Parameters.ParamByName( "_bin_field" ).DataType := ftBLOB;
   a_q.Parameters.ParamByName( "_bin_field" ).Size := SizeOf( Integer ) * 3;
   ArI[ 1 ] := StrToInt( Edit2.Text );
   ArI[ 2 ] := StrToInt( Edit3.Text );
   ArI[ 3 ] := StrToInt( Edit4.Text );
   ms := TMemoryStream.Create();
   ms.Write( ArI, Sizeof( Integer ) * 3 );
   a_q.Parameters.ParamByName( "_bin_field" ).LoadFromStream( ms, ftBLOB );
   a_q.ExecSQL();
   ms.Destroy();
end;

теперь считывание

procedure TForm1.Button2Click(Sender: TObject);
var i, Count : Integer;
   ms : TMemoryStream;
   ArI : array[ 1..3 ] of Integer;
   _s : String;
begin
   ms := TMemoryStream.Create();
   lv.Clear(); // TListView
   a_q.SQL.Text := "select * from bin_table order by id";
   a_q.Open();
   Count := a_q.RecordCount;
   for i := 1 to Count do
   begin
       ( a_q.FieldByName( "bin_field" ) as TBlobField ).SaveToStream( ms );
       ms.Read( ArI, ms.Size );
       _s := IntToStr( ArI[ 1 ] ) + "; " + IntToStr( ArI[ 2 ] ) + "; " + IntToStr( ArI[ 3 ] );
       lv.Items.Add().Caption := _s;
       a_q.Next();
   end;
   a_q.Close();
   ms.Destroy();
end;

короче, что не добавляю показывает одни и теже значения, что я делаю не верно???


 
sniknik ©   (2004-03-30 08:41) [1]

попробуй позицию задавать перед обрашением
...
ms.Write( ArI, Sizeof( Integer ) * 3 );
ms.Position:= 0;
...

ms.Position:= 0;
ms.Read( ArI, ms.Size );

и пользуйся ReadBuffer (хоть ошибку покажет если несработает)
и поменяй ms.Destroy(); на ms.free;



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
14-1080715256
BEN
2004-03-31 10:40
2004.04.25
Delphi 5 и Win2k


1-1081505904
hgd
2004-04-09 14:18
2004.04.25
Как сделать форму поверх всех


1-1081655025
Aramis
2004-04-11 07:43
2004.04.25
Нестандартные курсоры


14-1081164946
Info
2004-04-05 15:35
2004.04.25
В CVS на firebird.sf.net появился FireBird 1.5.1


1-1081451762
Relaxxx
2004-04-08 23:16
2004.04.25
Ошибка в Delphi7, в компоненте ActionManager при нажатии на ....