delphi中更新表字段update BLOB型数据(image)/获取图片转成BLOB型存入数据库
来源:互联网 发布:淘宝信用卡办理条件 编辑:程序博客网 时间:2024/05/12 05:05
我用的是ODAC 链接oracle数据库,delphi中update BLOB型数据问题困扰了我很久,我发现我直接
v_sql :='update xx_image set image:=in_image where xx1='+xx1;
with dm_db.OraQuery1 do
begin
Close;
Sql.clear;
Sql.Add(v_sql);
ParamByName('in_image').AsOraBlob.LoadFromFile(uri);//uri是图片地址
ExecSQL;
end;
这么写,会报EInternal ERROR,在网上搜了好多也没有合适的解决方法,最后向同事请教,将更新语句写到数据库的存储过程中,然后调用存储过程,这样不会报错了。
调用存储过程语句:
with dm_db.DzdaProc do begin
StoredProcName := 'UPDATE_XX_IMAGE';//存储过程名
PrepareSQL;
ParamByName('in_xx1').AsString := xx1;
ParamByName('in_xx2').AsString := copy(xx2,2,2);
ParamByName('in_xx3').AsString := xx3;
ParamByName('in_image').ParamType := ptInput; // to transfer Lob data to Oracle
ParamByName('in_image').AsOraBlob.LoadFromFile(uri); //uri是图片地址
Options.TemporaryLobUpdate := True;
Execute;
end;
存储过程代码(xx1,xx2,xx3代表数据库表的字段名称,xx_image是数据库表名):
CREATE OR REPLACE PROCEDURE UPDATE_XX_IMAGE
(in_xx1 IN varchar2,in_xx2 IN varchar2,in_xx3 IN Number,in_image IN BLOB)
IS
lobloc blob;
vLength integer;
BEGIN
if(in_image is not null) then
select image into lobloc from xx_image where xx1= in_xx1and xx2=in_xx2 and xx3=in_xx3 for update;
vLength := dbms_lob.getLength(in_image);
DBMS_LOB.open(lobloc,DBMS_LOB.lob_readwrite);
DBMS_LOB.copy(lobloc,in_image,vLength);
end if;
commit;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;
欢迎各位程序yuan批评指正~
v_sql :='update xx_image set image:=in_image where xx1='+xx1;
with dm_db.OraQuery1 do
begin
Close;
Sql.clear;
Sql.Add(v_sql);
ParamByName('in_image').AsOraBlob.LoadFromFile(uri);//uri是图片地址
ExecSQL;
end;
这么写,会报EInternal ERROR,在网上搜了好多也没有合适的解决方法,最后向同事请教,将更新语句写到数据库的存储过程中,然后调用存储过程,这样不会报错了。
调用存储过程语句:
with dm_db.DzdaProc do begin
StoredProcName := 'UPDATE_XX_IMAGE';//存储过程名
PrepareSQL;
ParamByName('in_xx1').AsString := xx1;
ParamByName('in_xx2').AsString := copy(xx2,2,2);
ParamByName('in_xx3').AsString := xx3;
ParamByName('in_image').ParamType := ptInput; // to transfer Lob data to Oracle
ParamByName('in_image').AsOraBlob.LoadFromFile(uri); //uri是图片地址
Options.TemporaryLobUpdate := True;
Execute;
end;
存储过程代码(xx1,xx2,xx3代表数据库表的字段名称,xx_image是数据库表名):
CREATE OR REPLACE PROCEDURE UPDATE_XX_IMAGE
(in_xx1 IN varchar2,in_xx2 IN varchar2,in_xx3 IN Number,in_image IN BLOB)
IS
lobloc blob;
vLength integer;
BEGIN
if(in_image is not null) then
select image into lobloc from xx_image where xx1= in_xx1and xx2=in_xx2 and xx3=in_xx3 for update;
vLength := dbms_lob.getLength(in_image);
DBMS_LOB.open(lobloc,DBMS_LOB.lob_readwrite);
DBMS_LOB.copy(lobloc,in_image,vLength);
end if;
commit;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;
欢迎各位程序yuan批评指正~
阅读全文
0 0
- delphi中更新表字段update BLOB型数据(image)/获取图片转成BLOB型存入数据库
- java中Blob数据存入数据库
- 2_向数据库中存入图片BLOB(单机)
- hibernate从sqlserver数据库中读取图片 Image (Blob)
- mysql中更新(update)blob字段
- Oracle JDBC存入图片Blob
- JSP页面获取数据库中BLOB字段生产图片
- byteArray转BLOB存入数据库
- 图片存入数据实战——blob类型
- 利用数据库如何存入BLOB格式图片,并从数据库中取出BLBO格式图片显示出来
- 导出数据库BLOB图片
- 从数据库读取image字段到网页(BLOB型的)
- 插入图片到数据库(BLOB大字段保存对象)
- orcale中跨数据库写入BLOB数据
- 数据库中使用Blob处理二进制数据
- 读取数据库BLOB数据
- 通过转成Blob文件下载base64图片(兼容IE)
- java读取数据库blob型
- 关于Android工程的构建工具-不定时更新
- [一点笔记]java向多线程中传递参数的三种方法
- Android Studio项目中配置使用OpenCV Android SDK
- [ Java学习 ] 一道Java好题的详细题解 001
- Ubuntu14.04、16.04下搭建VPN服务
- delphi中更新表字段update BLOB型数据(image)/获取图片转成BLOB型存入数据库
- JavaScript学习——变量的作用域
- js 获取服务器时间和new Date()用法
- VxWorks6.9上以太网2层发包程序
- jQuery选择器大全
- [python每日一练]--0009:找出html里的链接
- <<运算符和进制
- 简化版stack
- 解决eclipse中logcat不显示log的问题