`
keepwork
  • 浏览: 332767 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle--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"> 

  开发者博客www.developsearch.com

分享到:
评论

相关推荐

    dm8-oracle-jdbc16-wrapper.jar

    dm8-oracle-jdbc16-wrapper.jar

    oracle-jdbc6

    oracle-jdbc6oracle-jdbc6oracle-jdbc6oracle-jdbc6oracle-jdbc6oracle-jdbc6oracle-jdbc6

    oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm

    oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm oracle linux 客户端 jdbc部分

    oracle-instantclient11.2 rpm包

    oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm oracle-instantclient11.2-tools-11.2...

    flink-connector-jdbc-2.12-1.12.2.jar

    flink-connector-jdbc_2.12-1.12.2 支持Oracle

    oracle LongRaw 转 Blob

    在Oracle数据库中,LongRaw和Blob都是用于存储大对象(LOB)的数据类型,但它们有各自的特点和适用场景。在某些情况下,可能需要将LongRaw字段转换为Blob字段,这通常是因为Blob提供更好的管理和处理大型二进制数据...

    mysql-oracle-sql-jdbc驱动

    本资源"mysql-oracle-sql-jdbc驱动"提供了这三种主流数据库的JDBC驱动,为开发者提供了极大的便利。 首先,我们来了解一下MySQL。MySQL是一款开源、免费的SQL数据库,因其高效、稳定和易于管理而受到全球开发者的...

    oracle-jdbc-12.2.0.1.zip

    Oracle JDBC驱动主要有四种类型: Thin、 Thick、JDBC-ODBC Bridge和Universal Driver,其中 Thin 驱动是最常用的一种,因为它是一种轻量级的纯Java实现,无需在客户端安装Oracle数据库客户端软件。 ojdbc8-资源....

    oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

    oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm --补充JDBC下的XA、国际标准、行集操作; oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm --包含头文件和示例文件,为开发Oracle应用程序的即时...

    jdbc-Oracle -oracle连JDBC

    jdbc-Oracle .java格式 ORACLE数据库的加载格式 等等

    Flink JDBC Connector 支持Oracle

    Flink JDBC Connector 支持Oracle , Flink 1.13.6 支持Oracle 11.2.0.4

    Oracle-jdbc-jar包

    在Oracle-jdbc的JAR包中,包含了如`ojdbc6.jar`或`ojdbc8.jar`等不同版本,适用于不同的Java和Oracle数据库兼容性需求。 在Web开发中,JDBC驱动程序扮演着关键角色,尤其是在使用Java Servlets、JavaServer Pages ...

    jdbc-oracle-thinjdbc-oracle-thin

    其中,Oracle 提供了两种主要类型的 JDBC 驱动:JDBC-Oracle-Thin 和 OCI(Oracle Call Interface)驱动。本文主要关注的是 JDBC-Oracle-Thin 驱动。 ##### 1.1 JDBC-Oracle-Thin 的定义 JDBC-Oracle-Thin 驱动是...

    pdi-ce-stable-JDBC

    标题 "pdi-ce-stable-JDBC" 暗示了这是一个与Kettle(Pentaho Data Integration,简称PDI)相关的项目,特别是涉及到使用JDBC(Java Database Connectivity)连接Oracle数据库。Kettle是一款开源的数据集成工具,...

    oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm sqlplus安装包集合

    oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm --补充JDBC下的XA、国际标准、行集操作; oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm --包含头文件和示例文件,为开发Oracle应用程序的即时...

    logstash-output-jdbc

    标题"**logstash-output-jdbc**"指的是Logstash的一个输出插件,专门用于将数据从Logstash导出到关系型数据库,如MySQL,通过使用JDBC(Java Database Connectivity)接口。这个插件使得Logstash能够与各种数据库...

    oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

    oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm --补充JDBC下的XA、国际标准、行集操作; oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm --包含头文件和示例文件,为开发Oracle应用程序的即时...

    mssqlserve-mysql-oracle-jdbcconnector

    sqlserver的jdbc-odbc驱动,mysql的jdbc驱动,Oracle的jdbc驱动,比较全的,三个比较常用数据库的驱动,呵呵,有需要的自己下。以后还会更新一些其他方面的驱动,希望对大家有帮助,只是顺路上传一下。

    gt-jdbc-2.6.5.jar_oracle_jdbc_Geotools_

    标题中的“gt-jdbc-2.6.5.jar”是一个Java数据库连接(JDBC)驱动程序,用于连接Oracle数据库,并且是Geotools项目的一部分。Geotools是一个开源的Java库,专门用于处理地理空间数据,它提供了丰富的API来操作和展示...

Global site tag (gtag.js) - Google Analytics