Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизЗапись массива в бинари в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c