1:首先是创建表
2:Excle插入数据库
3:Excle从数据库下载并生成文件
4:数据库连接
package Excle; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class CreatTable { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Util util=new Util(); String sql1="drop table maexcle"; String sql2="create table maexcle(" + "filename varchar2(50),filesize number(20),filebody blob,primary key(filename))"; try { Statement stat=util.conn.createStatement(); // stat.executeUpdate(sql1); System.out.println(sql2); stat.execute(sql1);System.out.println("删除成功"); stat.execute(sql2);System.out.println("创建成功"); util.conn.commit(); /* ResultSet rs=stat.executeQuery("select * from maexcle"); while(rs.next()){ System.out.println(rs.toString()); }*/ } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
2:Excle插入数据库
package Excle; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.sql.Blob; import java.sql.PreparedStatement; import java.sql.ResultSet; import oracle.sql.BLOB; public class InsertExcle { public static void main(String[]args){ Util u=new Util(); byte[] data=null;//**将测试文件out.xls读入此字节数组 FileInputStream fis=null; FileOutputStream fos=null; OutputStream os=null; ResultSet rs=null;//**这里rs一定要用Oracle提供的 PreparedStatement ps=null;//**PreparedStatement用Oracle提供的 try{ File file=new File("D://out.xls"); fis=new FileInputStream(file); int flength=(int)file.length(); System.out.println("file length is:"+flength+"==========="); data=new byte[flength]; int itotal=0;int i=0; for(;itotal<flength;itotal++){ i=fis.read(data, itotal,flength-itotal); } fis.close(); System.out.println("read itotal :"+itotal+"==========="); String mysql="insert into maexcle(filename,filesize,filebody) values(?,?,EMPTY_BLOB())"; ps=u.conn.prepareStatement(mysql); ps.setString(1,"excle1"); ps.setInt(2, flength); ps.executeUpdate(); ps.clearParameters(); //插入其它数据后,定位BLOB字段=================== u.conn.setAutoCommit(false);// 如果不关闭会报-->"错误:读取违反顺序" mysql="select filebody from maexcle where filename=? for update"; ps=u.conn.prepareStatement(mysql); ps.setString(1, "excle1"); rs=ps.executeQuery(); if(rs.next()){ BLOB blob= (BLOB) rs.getBlob(1);//得到BLOB字段 os=blob.getBinaryOutputStream(); // data是传入的byte数组,定义:byte[] data os.write(data, 0, data.length); os.flush(); os.close(); u.conn.commit(); rs.close(); } System.out.println("insert into ok====================="); }catch(Exception e){ e.printStackTrace(); }finally{ try { fis.close(); fos.close(); rs.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
3:Excle从数据库下载并生成文件
package Excle; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.sql.PreparedStatement; import java.sql.ResultSet; import oracle.sql.BLOB; public class DownExcle { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Util u=new Util(); byte[] data=null;//**将测试文件test.doc读入此字节数组 FileInputStream fis=null; FileOutputStream fos=null; OutputStream os=null; ResultSet rs=null;//**这里rs一定要用Oracle提供的 PreparedStatement ps=null;//**PreparedStatement用Oracle提供的 try{ String mysql="select filebody,filesize from maexcle where filename=?"; ps=u.conn.prepareStatement(mysql); ps.setString(1,"excle1"); rs=ps.executeQuery(); int flength=0; if(rs.next()){ BLOB blob=(BLOB) rs.getBlob(1); System.out.println("blob length is "+blob.getLength()); data=blob.getBytes(1,rs.getInt(2));//从BLOB取出字节流数据 flength=data.length; System.out.println("data length is "+flength); u.conn.commit(); } rs.close(); //将blob取出的数据写入文件 fos=new FileOutputStream(new File("D:/testout.xls")); fos.write(data, 0,data.length ); System.out.println("文件下载成功---------》》"); }catch(Exception e){ e.printStackTrace(); }finally{ try { fos.close(); rs.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
4:数据库连接
package Excle; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Util { static Connection conn=null; public Util() { try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.90.204:1521:power","gdtmis","gdtmis"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* public static void main (String[]args){ Util u=new Util(); if(u.conn!=null){ System.out.println("连接上了"); } }*/ }
发表评论
-
查看mysql、sqlserver、oracle某个表的索引
2016-03-15 16:57 453mysql: show index from v3x_af ... -
显式事务、隐式事务、分布式隐式事务、分布式显式事务 定义以及事例
2016-03-15 15:29 1179一、事务定义: 显式事务:明确指定事务的开始,conn ... -
IntelliJ IDEA 12 与 Tomcat 集成并运行Web项目
2015-07-18 21:24 583下面分享下我在IDEA上直接把Web项目跑到Tomcat上的 ... -
Java之美[从菜鸟到高手演变]系列之博文阅读导航(转)
2015-07-18 19:22 585随着博文越来越多,为博客添加一个导航很有必要!本博客将相继开 ... -
Java之美[从菜鸟到高手演变]之设计模式(转)
2015-07-18 19:21 725设计模式(Design Patterns) ... -
Myeclipse项目注释设置(转)
2012-07-05 14:32 727. Window --> Java --> Co ... -
POI - Excel复制行
2012-06-18 17:02 12084//感谢老婆 的支持; /** * 复制行 * ... -
中如何使用log4j将日志信息写入数据库中(转)
2011-09-05 11:46 1422首先将log4j的jar包和Logging的jar包导入到你的 ... -
java如何导出带有联动下拉框的excel
2011-03-30 15:59 6880利用到jxl,poi也是一种用来处理excel的工具类!只不过 ... -
Eclipse调试常用技巧 - Java综合 - Java - JavaEye论坛 (转载)
2011-03-18 14:50 1035记得刚刚毕业的时候 ... -
Java中如何解析XML文件(转)
2011-03-14 17:23 1402xml文件:"student.xml" ... -
iBATIS教程之快速入门浅析(转)
2011-03-09 09:27 1005iBATIS教程要从iBATIS的概 ... -
几个实用的Servlet应用例子-入门、cookie、session及上传文件
2011-03-09 09:12 765Servlet可以被认为是服务端的applet,它被WEB服务 ...
相关推荐
Java对Oracle数据库中BLOB字段的处理涉及多个层面,包括读取、写入、更新以及跨数据库操作等。 ### Java处理Oracle BLOB字段的基本方法 #### 1. 读取BLOB字段 在Java中,读取Oracle数据库中的BLOB字段通常通过`...
数据库是存储和管理数据的核心工具,对于任何企业或组织来说,数据的安全性和可恢复性至关重要。本文将深入探讨“数据库的完整备份与恢复”以及如何使用`--hex-blob`选项来确保数据的准确无误。 首先,让我们理解...
### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...
MySQL Connector/J 8.0.22 是MySQL数据库与Java应用程序之间进行通信的重要桥梁,它是一个实现了JDBC(Java Database Connectivity)规范的驱动程序。在Java应用中,我们需要这个驱动来连接并操作MySQL数据库。本篇...
使用 JAVA 读取 ORACLE BLOB 字段实现上传下载 BLOB(Binary Large Objects)是一种二进制大对象类型,常用于存储大对象,例如图形、声音等。我们可以将 BLOB 区分为三种形式:声像数据、二进制数据和大文本数据。...
在Java编程中,Oracle数据库是常用的存储系统,尤其在处理大量结构化和非结构化数据时,例如多媒体文件(如MP3)。Oracle数据库支持BLOB(Binary Large Object)类型,用于存储大容量的二进制数据。本篇将详细介绍...
本篇将详细讲解如何在Oracle与MySQL之间进行BLOB类型的转换,特别是针对照片的处理。 首先,让我们了解BLOB类型。BLOB是一种可以存储大量二进制数据的对象,分为四种子类型:BLOB、CLOB、NCLOB和BFILE。在Oracle中...
20180828开发,提供了三种通过JDBC实现图片存储到BLOB的方式: ...2、com.ub:实现简单的插入及读取操作,读取后的... 然后将Base64字符串传参到Controller后进行解码处理后再存储到BLOB字段。 依赖Jar包: ojdbc6.jar
谷歌java格式 google-java-format是一个重新格式化 Java 源代码以符合 Google Java Style的程序。 使用格式化程序 从命令行 下载格式化程序 并运行它: java -jar /path/to/google-java-format-${GJF_VERSION?}-all...
本文详细介绍了如何在Oracle数据库中进行Blob字段的上传和下载操作。通过具体的Java示例代码,展示了整个过程的关键步骤和技术要点。这对于需要处理大量二进制数据的应用来说是非常有用的技巧。希望本文能够帮助...
oracle中对blob字段的处理方法,包括增加,删除,修改,更新等操作。
Oracle数据库在存储大对象...总之,批量导出Oracle数据库中的BLOB字段生成图片涉及到了数据库连接、SQL查询、BLOB数据处理和文件I/O等多个技术环节。掌握这些知识点对于管理和维护包含二进制数据的数据库系统至关重要。
### 在Oracle中存取BLOB对象实现文件的上传和下载 #### 核心知识点解析: **一、BLOB数据类型简介** BLOB(Binary Large Object)是数据库中的二进制大对象类型,主要用于存储大量二进制数据,如图像、音频、视频等...
指定文件夹下的所有文件上传至oracle的blob字段,java实现
使用 Java 进行文件上传至数据库 BLOB 字段 #### 知识点说明: 在Java Web开发中,经常需要处理用户上传的文件,比如图片、文档等。这些文件通常比较大,如果直接将文件的内容作为字符串保存在数据库中,可能会...
1.转换BLOB BLOB转为Byte字节流 BLOB转为Char字节流 BLOB转为二进制字符 BLOB转为十六进制字符 2.生成BLOB Byte字节流转为BLOB Char字节流转为BLOB 二进制字符转为BLOB 十六进制字符转为BLOB 3.二进制 8位...
对于CLOB和BLOB字段,Oracle JDBC驱动提供了`oracle.jdbc.driver.OracleClob`和`oracle.jdbc.driver.OracleBlob`类,它们实现了Java的标准接口`java.sql.Clob`和`java.sql.Blob`。这两个接口提供了读取和写入大数据...
本话题主要探讨了如何使用C#语言来实现Oracle数据库中的Blob类型字段进行文档的上传与下载操作。以下是对这一主题的详细解释。 首先,Oracle数据库中的Blob(Binary Large Object)类型用于存储大量的二进制数据,...
通过这种方式,你可以有效地管理和处理存储在Oracle数据库中的大量BLOB数据,使其能够以文件形式在本地系统上访问和使用。 总之,批量导出Oracle数据库中的BLOB字段是一项技术性较强的任务,涉及到数据库连接、SQL...
2. Oracle对`CLOB`和`BLOB`的处理: Oracle数据库提供了`CLOB`和`BLOB`数据类型,同样用于存储大量文本和二进制数据。与MySQL不同,Oracle支持分区和索引优化,使得大型数据的管理和检索更为高效。Oracle还提供了`...