环境:
Delphi7.0+Access2000+ADO+Windows2000
问题:
一个大的Byte数组(byteArray:Array[0..1023] of Byte),能否作为一个整体
(以整个数组作为数据元素,不能拆开以后再保存)保存到ACCESS数据库的字段中去?
Delphi该如何操作?ACCESS数据库字段应如何定义?请各位赐教,谢谢。
Delphi7.0+Access2000+ADO+Windows2000
问题:
一个大的Byte数组(byteArray:Array[0..1023] of Byte),能否作为一个整体
(以整个数组作为数据元素,不能拆开以后再保存)保存到ACCESS数据库的字段中去?
Delphi该如何操作?ACCESS数据库字段应如何定义?请各位赐教,谢谢。
建表:table1 ID 自动,DATA OLE数据
程序如下:
unit assu1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
Button1: TButton;
ADOQuery1: TADOQuery;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
a:array [0..10] of integer;
i:integer;
m:TMemoryStream;
begin
for i:=0 to 9 do
a[i]:=i; //赋值
m:=TMemoryStream.Create;
m.Write(a,10*sizeof(integer)); //写入memstream
m.Position:=0;
with ADOQuery1 do
begin
SQL.Text:='insert into table1(data) values(:data)';
Parameters[0].LoadFromStream(m,ftBlob );
ExecSQL; //写入数据库
end;
m.Free;
end;procedure TForm1.Button2Click(Sender: TObject);
var
m:TMemoryStream;
a:array [0..10] of integer;
i:integer;
begin
m:=TMemoryStream.Create;
with ADOQuery1 do
begin
SQL.Text:='select * from table1 where id=1';
Open;
if eof then exit;
(FieldByname('data') AS TBlobField).SaveToStream(m); //从数据库读出
end;
m.Position:=0;
m.Read(a,10*sizeof(integer)); //读入memstream
for i:=0 to 9 do
Memo1.Lines.Add(InttoStr(a[i])); //显示
end;end.
明白了,希望以后没有人再问这个问题了。
动态数组又如何处理?谢谢!