日期:2014-05-17  浏览次数:20720 次

如何给oracle的blob类型插值
我的表结构:Create Table Songs
 (
  Id varchar2(20),
  Name varchar2(20),
  Singer varchar2(20),
  Alblumn varchar2(20),
  PubDate Date,
  Lyrics BLOB default Empty_Blob(), 
  MP3 BLOB default Empty_Blob(),
  CategoryId varchar2(20)
 )


------解决方案--------------------
1、先插入其它字段,BLOB字段初始化的时候,先初始化一个EMPTY_BLOB(),相当于一个BLOB对象的空壳,内部啥也没有,但是是一个对象。

2、SELECT <BLOB字段> FROM <表名称> WHERE <关键字>=<插入关键值> FOR UPDATE;--FOR UPDATE是必须的。

3、如果在程序中就直接得到一个BLOB对象的引用(相当于指针),如果过程中,上述修改为SELECT INTO到一个BLOB类型的变量中,其实也是BLOB对象的指针,然后对这个BLOB进行编辑,过程中对其进行编辑使用DBMS_LOB包来完成编辑工作,程序中将前端提交的内容(可能是图片或者上传文件直接可以转为byte[]数组、可能是文本字符串需要根据相应字符集转义为byte[]数组),通过java.sql.Blob接口对应的驱动实现类内部的setBytes(....)方法来完成写入。

4、不论是程序还是过程,使用UPDATE <表名称> WHERE <关键字>=<插入关键值>; COMMIT;即可完成编辑过程