`
123003473
  • 浏览: 1073467 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JDBC读取Oracle LONG RAW类型字段

阅读更多
今天在项目中要向Oracle的LONG RAW形字段插入图片,以配合C/S的设计结构
项目中用Hibernate ORM,找了N久没有找到具体操作方法,终于花了2个多小时找到一个JDBC操作的例子,代码改造后为
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JdbcImgDAO {
    //数据库连接方法
public static Connection getConnection(){
String  url="jdbc:oracle:thin:@192.168.0.100:1521:testdb";  
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");   
conn=DriverManager.getConnection(url,"user","pwd");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}    
return conn;
}

    //插入图片到案例库,id为主键,s为上传图片(路径+图片名)
public static void updateImg(String id, String s){
Connection conn = getConnection();
String  sql="update table t set t.img=? where id=?";  
File  filename=new  File(s);
        //将文件的长度读出,并转换成Long型   
long  l1=filename.length(); 
int  l2=(int)l1; 
try {
            //以流的格式赋值
FileInputStream  fis=new  FileInputStream(filename); 
PreparedStatement  ps  =conn.prepareStatement(sql);   
ps.setBinaryStream(1,fis,l2);
            //ps.setBinaryStream(1,fis,fis.available());
ps.setString(2,id);  
ps.executeUpdate();     
ps.close(); 
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}



显示图片页
img.jsp

<%@ page contentType="text ml; charset=gbk"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*, javax.sql.*"%>
<%@ page import="java.util.*"%>
<%
String id = request.getParameter("id");
String URL="jdbc:oracle:thin:@192.168.0.100:1521:testdb";
String user="user";
String password="pwd";
Connection con = DriverManager.getConnection(URL,user,password);
InputStream in = null;
ResultSet rs = null;
OutputStream out = response.getOutputStream();
try{
Statement stmt = con.createStatement();
String sql = "select t.img from table t where id="+id;
rs = stmt.executeQuery(sql);
while(rs.next()) {
in = rs.getBinaryStream("img");
int len = 0;
byte[] byte = new byte[1024];
//response.setContentType("image/jpeg");
while ((len = in.read(byte)) != -1) {
  out.write(byte,0,len);
  }
  out.close();
   in.close();
   }
}catch(Exception e){
   e.printStackTrace();
  }finally{
   rs.close();
   con.close();
}
%>
显示信息页面
<img src="img.jsp">
分享到:
评论

相关推荐

    oracle LongRaw 转 Blob 源码

    Oracle数据库中,LongRaw和Blob是两种不同的数据类型,它们分别用于存储大对象(LOB)数据。LongRaw类型是Oracle的原始数据类型,用于存储二...如果你正在迁移旧系统,可能需要考虑将LongRaw字段逐步迁移到Blob字段。

    javafx-oracle-file-extractor:从 Oracle Long Raw 数据库字段中提取文件的 JavaFX 桌面工具

    该项目演示了一个 JavaFX 工具,该工具提取记录在 Oracle Long Raw 数据字段中的文件。 结构 模型:包含保存有关最终用户进行的连接和查询的信息的域类 控制器:这一层与视图(fxml)通信并与之绑定方法和属性 View...

    图片存入Oracle中,用clob和blob两种方式

    下面将详细介绍这两种数据类型以及如何在Oracle中使用它们存储和读取图片。 1. **CLOB数据类型**: `CLOB`数据类型用于存储大量的字符数据,最大可达到4GB。虽然主要用于存储文本,但在本例中,由于图片可以被转换...

    使用JDBC存取ORACLE数据库中的图片数据.pdf

    Oracle数据库是一个流行的关系型数据库系统,它提供了LONG RAW和BLOB类型来存储非结构化的数据,如图片。 在Oracle中,LONG RAW类型用于存储原始二进制数据,而BLOB(Binary Large Object)用于存储可变长度的二...

    load blob clob

    "AnySQL_net » Blog Archive » 如何将BLOB的内容转到LONG RAW中.html"这篇文章可能会探讨如何在Oracle中将Blob数据转换为LONG RAW类型,LONG RAW是Oracle另一种存储大对象的方式,但只适用于二进制数据。...

    从oracle数据库中存取图片

    3. **content**: 类型为`LONG RAW`,用于存储图片的实际二进制数据。 ```sql CREATE TABLE images ( name VARCHAR2(10), changdu NUMBER(10), content LONG RAW ); ``` #### 二、使用Java保存图片至Oracle...

    图片存入数据库 图片 数据库

    在IT领域,存储图像等非结构化数据在数据库中是一项常见的需求。本示例展示了如何使用JSP(Java...同时,对于Oracle数据库,`LONG RAW`类型在Oracle 12c及以后的版本中已被弃用,推荐使用BLOB类型来存储二进制大对象。

Global site tag (gtag.js) - Google Analytics