二进制流的问题!
我才保存二进制流到数据库的时候,编写代码如下:
procedure TForm1.savefinger(p:pchar);
var Stream: TBlobStream;
begin
with query1 do
begin
close;
sql.clear;
sql.add('insert into finger value(:id,:finger)');
paramByName('ID').AsInteger:=1;
Stream :=TBlobStream.Create(TBlobField(parambyname ('finger')),bmReadWrite );
try
Stream.Seek(0, 2);
Stream.Write(p^, 400);
finally
Stream.Free;
end;
ExecSQL;
end;
end;
在执行到stream:=TBlobStream.Create的时候就出错了,提示非法的内存访问!
我看了delphi的帮组代码都是这样写的!不知为什么出错?请各位大虾指点迷津!
问题点数:30、回复次数:3Top
1 楼zswang(伴水清清)(专家门诊清洁工)回复于 2001-12-05 14:29:15 得分 15
//ParamByName() 的类型是TParam不是TField
var
Stream: TMemoryStream;
begin
with query1 do begin
close;
sql.clear;
sql.add('insert into finger value(:id,:finger)');
Stream := TMemoryStream.Create;
try
Stream.Seek(0, 2);
Stream.Write(p^, 400);
parambyname('finger').LoadFromStream(Stream, ftBlob);
paramByName('ID').AsInteger:=1;
finally
Stream.Free;
end;
ExecSQL;
end;
end;
Top
2 楼cobi(我是小新)回复于 2001-12-05 14:32:44 得分 15
Stream :=TBlobStream.Create(TBlobField(parambyname ('finger')),bmReadWrite );
try
Stream.Seek(0, 2);
Stream.Write(p^, 400);
finally
Stream.Free;
end;
以上的需要更改一下,你试一下这样行不:
stream := ...;
ParamByName('Img').Loadfromstream(stream);
Top
3 楼anglely168(左八荣,右八耻.代表在中间,和谐在胸口。人挡杀人,佛挡杀佛.)回复于 2001-12-05 15:07:46 得分 0
都是过了!还是不行!不过,我用table好像保存进去了!我们项目给我提供的接口是一个存续过程,不用我直接对表操作,用存续过程storyproc和query差不多!Top




