我的程序如下,很简单的procedure TForm1.MBBitBtn1Click(Sender: TObject);
var
Ms:TmemoryStream;
jpg:Tjpegimage;
testStream:TMemoryStream;
begin
try
testStream := TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(testStream);
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into RPT_CAR_INFO(JPGDATE,CARJPG) values (:id,:photo)');
adoquery1.Parameters.ParamByName('id').Value := '003';
adoQuery1.Parameters.ParamByName('photo').LoadFromStream(testStream,ftBlob);
adoquery1.ExecSQL;
finally
testStream.Free;
end;
end;
表结构
create table RPT_CAR_INFO
(
JPGDATE VARCHAR2(16),
CARJPG blob );运行后报错:“ORA-12571 TNS 包写入程序失败”
虽然报错,记录倒是插进去了,字段 JPGDATE 有值
不知道什么原因,我快晕了......
var
Ms:TmemoryStream;
jpg:Tjpegimage;
testStream:TMemoryStream;
begin
try
testStream := TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(testStream);
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into RPT_CAR_INFO(JPGDATE,CARJPG) values (:id,:photo)');
adoquery1.Parameters.ParamByName('id').Value := '003';
adoQuery1.Parameters.ParamByName('photo').LoadFromStream(testStream,ftBlob);
adoquery1.ExecSQL;
finally
testStream.Free;
end;
end;
表结构
create table RPT_CAR_INFO
(
JPGDATE VARCHAR2(16),
CARJPG blob );运行后报错:“ORA-12571 TNS 包写入程序失败”
虽然报错,记录倒是插进去了,字段 JPGDATE 有值
不知道什么原因,我快晕了......
2.你的SQLNET.ORA文件的不正确配置也可能导致问题。删除你的客户端和你的数据库服务器上SQLNET.ORA 文件中SQLNET.EXPIRE_TIME=0这一条。
D:\oracle\ora81\network\ADMIN\SAMPLE 下有一个SQLNET.ORA
里面有一条 #sqlnet.expire_time = 10 ,这样是有问题的吗
数据库服务器上我暂时看不到
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select JPGDATE,CARJPG from RPT_CAR_INFO');
ADOQuery1.Open;
会提示 “数据类型不被支持” 这样的错误是不是我什么地方搞错了?有谁遇到过这样的情况
但是我就不知道使用 blob 类型为什么会出错?
blob 和 LONG RAW 类型有何区别呢?
用ADO连接ORACLE数据库,不支持BLOB,打不开含有BLOB字段的记录集。
当然,也没办法插入数据了是这样吧,各位
var
testStream:TMemoryStream;
begin
try
testStream := TMemoryStream.Create; // 创建内存流
Image1.Picture.Graphic.SaveToStream(testStream); // 将图片保存到内存流中
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into tbltemp (Image) values (:photo)'); // 进行插入操作
adoQuery1.Parameters.ParamByName('photo').LoadFromStream(testStream,ftBlob); // 读取保存的内存图
adoquery1.ExecSQL;
finally
testStream.Free; // 释放内存流
end;
end; 试试这个呢我的数据类型是image哈,不是blob
var
testStream:TMemoryStream;
begin
try
testStream := TMemoryStream.Create; // 创建内存流
Image1.Picture.Graphic.SaveToStream(testStream); // 将图片保存到内存流中
testStream.position:=0; //关键的一句
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into tbltemp (Image) values (:photo)'); // 进行插入操作
adoQuery1.Parameters.ParamByName('photo').LoadFromStream(testStream,ftBlob); // 读取保存的内存图
adoquery1.ExecSQL;
finally
testStream.Free; // 释放内存流
end;
end;