问题一:
环境:WIN2K、D6、ORACEL9I、ADO
表picture中有字段picfile 为blob字段
代码如下:
var
testStream,mStream :TMemoryStream;begin
ADOConnection1.ConnectionString := sconstr;
ADOConnection1.Connected := true;
ADOQuery1.Connection := ADOConnection1;
testStream := TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(testStream);
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into picture(id,otherID,PICFILE) values(:v_recid,:v_keyid,:v_picFile)');
adoQuery1.Parameters.ParamByName('v_id').Value:=edit1.Text;
adoQuery1.Parameters.ParamByName('v_otherID').Value:=edit2.Text;
adoQuery1.Parameters.ParamByName('v_picFile').LoadFromStream(teststream,ftblob);
adoquery1.ExecSQL;
testStream.Free;报错如下:
“ORA-01460:转换请求无法实现或不合理”问题二:
代码如下:
ADOConnection1.ConnectionString := sconstr;
ADOConnection1.Connected := true;
ADOQuery1.Connection := ADOConnection1;
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'select * from picture';
ADOQuery1.Open;
报错如下:
“数据类型不被支持”
请有这方面经验的朋友解释一下这是什么问题引起的,如何解决,谢了先。
环境:WIN2K、D6、ORACEL9I、ADO
表picture中有字段picfile 为blob字段
代码如下:
var
testStream,mStream :TMemoryStream;begin
ADOConnection1.ConnectionString := sconstr;
ADOConnection1.Connected := true;
ADOQuery1.Connection := ADOConnection1;
testStream := TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(testStream);
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into picture(id,otherID,PICFILE) values(:v_recid,:v_keyid,:v_picFile)');
adoQuery1.Parameters.ParamByName('v_id').Value:=edit1.Text;
adoQuery1.Parameters.ParamByName('v_otherID').Value:=edit2.Text;
adoQuery1.Parameters.ParamByName('v_picFile').LoadFromStream(teststream,ftblob);
adoquery1.ExecSQL;
testStream.Free;报错如下:
“ORA-01460:转换请求无法实现或不合理”问题二:
代码如下:
ADOConnection1.ConnectionString := sconstr;
ADOConnection1.Connected := true;
ADOQuery1.Connection := ADOConnection1;
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'select * from picture';
ADOQuery1.Open;
报错如下:
“数据类型不被支持”
请有这方面经验的朋友解释一下这是什么问题引起的,如何解决,谢了先。
var fname,s:string;
jpg:TJPEGImage;
Stm:TMemoryStream; jpg:=TJPEGImage.Create;
Stm:=TMemoryStream.Create;
jpg.LoadFromFile(fname);
jpg.SaveToStream(Stm);
Stm.Position:=0;
TBlobField(adoQuery1.FieldByName('v_picFile')).LoadFromStream(Stm);
jpg.Free;
Stm.Free;
首先谢谢你了,但好象还是不行呢,
要结合 SQL语句 INSERT INTO TABLE 那个该怎么写呢,就如我上面的代码那样
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into picture(id,otherID,PICFILE) values(:v_recid,:v_keyid,:v_picFile)');
adoQuery1.Parameters.ParamByName('v_id').Value:=edit1.Text;
adoQuery1.Parameters.ParamByName('v_otherID').Value:=edit2.Text;
adoQuery1.Parameters.ParamByName('v_picFile').LoadFromStream(teststream,ftblob);
//这里总不好用
//adoQuery1.FieldByName('v_picFile')).LoadFromStream(Stm);
//因为我这里没有v_picFile这个字段啊?
adoquery1.ExecSQL;
var
sqltext : string;
begin
//添加设备
sqltext := '';
Memo1.Lines.SaveToFile('c:\tempMemo.txt');
with dtmd.qyinsertsb do
begin
Close;
SQL.Clear; if PicterFilename <> '' then
begin
SQL.Add('insert into sbtb(sbid,sbname,gmdate,dj,sl,fpsl,cjname,cfdb,tel,bz,tp)');
SQL.Add('values(:#sbid,:#sbname,:#gmdate,:#dj,:#sl,:#fpsl,:#cjname,:#cfdb,:#tel,:#bz,:#tp)');
end else begin
SQL.Add('insert into sbtb(sbid,sbname,gmdate,dj,sl,fpsl,cjname,cfdb,tel,bz)');
//
SQL.Add('values(:#sbid,:#sbname,:#gmdate,:#dj,:#sl,:#fpsl,:#cjname,:#cfdb,:#tel,:#bz)');
//
end;
Parameters.ParamByName('#sbid').Value := Trim(edSbid.Text);
Parameters.ParamByName('#sbname').Value := Trim(edSbname.Text);
Parameters.ParamByName('#gmdate').Value := FormatDateTime('yyyy-mm-dd',dtpkGmrq.Date);
Parameters.ParamByName('#dj').Value := StrToFloat(edDj.Text);
Parameters.ParamByName('#sl').Value := StrToFloat(EdSl.Text);
Parameters.ParamByName('#fpsl').Value := 0;
Parameters.ParamByName('#cjname').Value := Trim(edCj.Text);
Parameters.ParamByName('#cfdb').Value := Trim(edDb.Text);
Parameters.ParamByName('#tel').Value := Trim(edTel.Text);
// Parameters.ParamByName('#memo').DataType := ftMemo;
Parameters.ParamByName('#bz').Value := Memo1.Text;
if PicterFilename <> '' then
Parameters.ParamByName('#tp').LoadFromFile(PicterFilename,ftBlob);//这是图片
try
ExecSQL;
Result := true;
except
Result := false;
end; end;
end;
我和你的代码基本上是一致的关键是 Parameters.ParamByName('#tp').LoadFromFile(PicterFilename,ftBlob);//这是图片在execsql时 报错如下:
“ORA-01460:转换请求无法实现或不合理”
我就搞不懂了。
你用的ORACLE数据库吗?字段是BLOB型吗?
后 报错如下:
ORA-12571:TNS package writer failure这个是什么错误啊?