表结构:
SQL> desc testblob
名称 是否为空? 类型
----------------------------------------- -------- -----
PHOTO NOT NULL BLOB
ID NOT NULL LONG想要进行的操作:插入一条含有BLOB的记录代码:
procedure TForm1.Button1Click(Sender: TObject);
var
memstrm:TMemoryStream ;
StrSql:String;
StrSql2:String;
begin memstrm:=TMemoryStream.Create;
try
memstrm.Clear;
memstrm.LoadFromFile('ZP.BMP');
with OraQuery do
begin
StrSql:='INSERT INTO TH2IDTFUSER.TESTBLOB (ID,PHOTO) VALUES(1,EMPTY_BLOB()) RETURNING PHOTO INTO :PHOTO'; OraQuery.Close;
SQL.Clear;
SQL.Add(StrSql); memstrm.Position:=0;
TBlobField(OraQuery.FieldByName('PHOTO')).LoadFromStream(memstrm); try
OraSession.Connected:=true;
ExecSQL;
except
OraSession.Connected:=false;
Showmessage('Connect Failed or Exec Sql Failed');
end;
end;
finally
memstrm.Free;
OraSession.Connected:=false;
end;end;出现的问题:OraQuery Field 'PHOTO' NOT FOUND;如果把FieldByName改成ParamByName就会出现非法地址访问。我已经头昏脑胀了,大侠救命!!!!!!!
SQL> desc testblob
名称 是否为空? 类型
----------------------------------------- -------- -----
PHOTO NOT NULL BLOB
ID NOT NULL LONG想要进行的操作:插入一条含有BLOB的记录代码:
procedure TForm1.Button1Click(Sender: TObject);
var
memstrm:TMemoryStream ;
StrSql:String;
StrSql2:String;
begin memstrm:=TMemoryStream.Create;
try
memstrm.Clear;
memstrm.LoadFromFile('ZP.BMP');
with OraQuery do
begin
StrSql:='INSERT INTO TH2IDTFUSER.TESTBLOB (ID,PHOTO) VALUES(1,EMPTY_BLOB()) RETURNING PHOTO INTO :PHOTO'; OraQuery.Close;
SQL.Clear;
SQL.Add(StrSql); memstrm.Position:=0;
TBlobField(OraQuery.FieldByName('PHOTO')).LoadFromStream(memstrm); try
OraSession.Connected:=true;
ExecSQL;
except
OraSession.Connected:=false;
Showmessage('Connect Failed or Exec Sql Failed');
end;
end;
finally
memstrm.Free;
OraSession.Connected:=false;
end;end;出现的问题:OraQuery Field 'PHOTO' NOT FOUND;如果把FieldByName改成ParamByName就会出现非法地址访问。我已经头昏脑胀了,大侠救命!!!!!!!
open;
append;
.....
post;这种模式来提交你的blob应该没有什么问题。