Oracle中的Bloc字段的处理较其他字段来说,会有一些特殊性。现就对在java和pl/sql下,Blob字段的处理和大家做一些交流。
下面,简单介绍一下Blob在以下两种环境中的写入处理,
u java环境
u PL/SQL环境
一、java环境
1、 Blob的插入操作
1) 插入一空的Blob。
2) 更新该纪录的Blob。
例子:
比如表结构如下:
CREATE TABLE Student (
Name VARCHAR2(30),
Age Int,
Picture Blob);
i.插入一空的Blob。
String command=”INSERT INTO Student VALUES(?,?,?)”;
Connection conn=null;
PreparedStatement ps=null;
try
{
conn=…;
ps=conn. prepareStatement(command);
ps.setString(1,”ZhangSan”);
ps.setInt(2,20);
ps.setBlob(3, BLOB.empty_lob());
ps.executeUpdate();
…
ii.更新该纪录
…
byte[] data=null;
Connection conn=null;
Try
{
data=… //图片信息
conn=。。
ByteArrayInputStream in=new ByteArrayInputStream(data);
updateBlob(in, conn, “Student”,”Picture”,”Name”,”zhangsan”);
…
public static void updateBlob( InputStream instream,
Connection conn,
String table,
String blobColumn,
String keyColumn,
String keyValue)
throws SQLException, IOException
{
Statement stmt = null;
OracleResultSet rs = null;
BLOB blob = null;
boolean oldAutoCommit = conn.getAutoCommit();
StringBuffer sqlBuffer = new StringBuffer();
try {
conn.setAutoCommit(false);
sqlBuffer.append(“select ”);
sqlBuffer.append(blobColumn);
sqlBuffer.append(“ from ”);
sqlBuffer.append(table);
sqlBuffer.append(“ where ”);
sqlBuffer.append(keyColumn);
sqlBuffer.append(“=‘”);
sqlBuffer.append(keyValue);
//注意这里的”for update”
sqlBuffer.append(“’ for update ”);
stmt = conn.createStatement();
rs = (OracleResultSet) stmt.executeQuery(sqlBuffer.toString());
if (!rs.next())
{
rs.close();
stmt.close();
throw new IllegalArgumentException(
“no record found for keyValue: ‘” + keyValue + “’”);
}
blob = rs.getBLOB(1);
OutputStream outstream = blob.getBinaryOutputStream();
int bufferSize = blob.getChunkSize();
byte[] buffer = new byte[bufferSize];
int bytesRead = -1;
while ((bytesRead = instream.read(buffer)) != -1)
{
outstream.write(buffer, 0, bytesRead);
}
instream.close();
outstream.close();
rs.close();
stmt.close();
}
catch (SQLException e)
{
throw e;
}
catch (IOException e)
{
throw e;
}
finally {
conn.setAutoCommit(oldAutoCommit);
}
}
二、PL/SQL下
(例子表结构如一所示)
i.插入一空的Blob。
…
declare
bufferBlob BLOB;
data RAW(…)
…
INSERT INTO Student VALUES(‘zhangsan’, 20 , empty_blob() );
…
ii.更新该纪录的Blob。
…
SELECT Picture INTO bufferBlob FROM Student WHERE Name=’zhangsan’ FOR UPDATE;
DBMS_LOB.OPEN(bufferBlob , dbms_lob.lob_readwrite);
dbms_lob.write(bufferBlob , utl_raw.length(data) , data);
分享到:
相关推荐
oracle中对blob字段的处理方法,包括增加,删除,修改,更新等操作。
该程序可将ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段,方便快捷。
java中读取ORACLE中BLOB字段存储的图片
oracle查询blob字段照片(jpeg) 像素大小sql
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
oracle中blob 字段类型的应用oracle中blob 字段类型的应用oracle中blob 字段类型的应用oracle中blob 字段类型的应用oracle中blob 字段类型的应用oracle中blob 字段类型的应用oracle中blob 字段类型的应用
Oracle blob字段上传下载 Oracle blob字段上传下载Oracle blob字段上传下载 Oracle blob字段上传下载
* 在ORACLE数据库中,坐标点被存储在BLOB字段中。 * 使用JSP技术可以读取BLOB字段中的坐标点,然后将其传递到JAVA类中显示图形。 知识点4:图形的显示 * 在图形的正中还显示了编号,充分展示了JSP结合JAVA应用的...
此文档是对于oracle数据库中blob类型字段二进制大对象的读取和解析
有关Oracle对blob字段的操作读取方法,里面有详细的例子
Python如何操作Oracle的Blob字段,
java对oracle数据库中blob字段的处理
C#访问oracle数据库类 1、执行非查询命令 2、执行查询命令 3、带blob字段读写
jsp实现向oracle中blob字段上传附件
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
很多朋友在操作oracle数据库的clob,blob字段时不知道怎么插入和使用,这里提供读写范例。
基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案
指定文件夹下的所有文件上传至oracle的blob字段,java实现
从oracle中的BLOB类型字段中取出照片,转存到mysql数据库中。思路是现将oracle中的照片存储在本地文件夹,在将本地图片上传到mysql中。
oracle_BLOB字段上传附件步骤.doc,oracle_BLOB字段上传附件步骤.doc