一、大文本存取:

我们有一本约10M的小说,现存入数据库:

代码如下:以junit测试的方式给出

  1. package com.dzq.lob;
  2.  
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.Reader;
  7. import java.io.Writer;
  8. import java.sql.Connection;
  9. import java.sql.PreparedStatement;
  10. import java.sql.ResultSet;
  11.  
  12. import org.junit.Test;
  13.  
  14. import com.dzq.util.JDBCUtils;
  15.  
  16. public class TextDemo1 {
  17. @Test
  18. public void addText(){
  19. Connection conn=null;
  20. PreparedStatement ps=null;
  21. ResultSet rs=null;
  22. String sql="insert into textdemo values (null,?,?)";
  23. try{
  24. conn=JDBCUtils.getConn();
  25. ps=conn.prepareStatement(sql);
  26. ps.setString(1, "钢铁是怎样炼成的.txt");
  27. File file=new File("1.txt");
  28. ps.setCharacterStream(2, new FileReader(file),(int)file.length());
  29. ps.executeUpdate();
  30. }catch(Exception e){
  31. e.printStackTrace();
  32. }finally{
  33. JDBCUtils.close(rs, ps, conn);
  34. }
  35. }
  36.  
  37. @Test
  38. public void findText(){
  39.  
  40. Connection conn=null;
  41. PreparedStatement ps=null;
  42. ResultSet rs=null;
  43. String sql="select * from textdemo where id=?";
  44. try{
  45. conn=JDBCUtils.getConn();
  46. ps=conn.prepareStatement(sql);
  47. ps.setInt(1, 5);
  48. rs=ps.executeQuery();
  49. while (rs.next()) {
  50. String filename=rs.getString("name");
  51. Reader reader=rs.getCharacterStream("content");
  52. Writer writer=new FileWriter(filename);
  53.  
  54. char []cs=new char[1024];
  55. int i=0;
  56. while ((i=reader.read(cs))!=-1) {
  57. writer.write(cs,0,i);
  58. }
  59. reader.close();
  60. writer.close();
  61. }
  62. }catch(Exception e){
  63. e.printStackTrace();
  64. }finally{
  65. JDBCUtils.close(rs, ps, conn);
  66. }
  67. }
  68. }

二、大二进制存取:

我们有一个mp3文件,现存入数据库

代码如下:

  1. package com.dzq.lob;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.InputStream;
  7. import java.io.OutputStream;
  8. import java.sql.Connection;
  9. import java.sql.PreparedStatement;
  10. import java.sql.ResultSet;
  11.  
  12. import org.junit.Test;
  13.  
  14. import com.dzq.util.JDBCUtils;
  15.  
  16. public class BlobDemo1 {
  17. @Test
  18. public void addBlob(){
  19. Connection conn=null;
  20. PreparedStatement ps=null;
  21. ResultSet rs=null;
  22. String sql="insert into blobdemo values (null,?,?)";
  23. try{
  24. conn=JDBCUtils.getConn();
  25. ps=conn.prepareStatement(sql);
  26. ps.setString(1, "洛天依.mp3");
  27. File file=new File("1.mp3");
  28. ps.setBinaryStream(2, new FileInputStream(file),(int)file.length());
  29. ps.executeUpdate();
  30. }catch(Exception e){
  31. e.printStackTrace();
  32. }finally{
  33. JDBCUtils.close(rs, ps, conn);
  34. }
  35.  
  36. }
  37. @Test
  38. public void findBlob(){
  39. Connection conn=null;
  40. PreparedStatement ps=null;
  41. ResultSet rs=null;
  42. String sql="select * from blobdemo";
  43. try{
  44. conn=JDBCUtils.getConn();
  45. ps=conn.prepareStatement(sql);
  46. rs=ps.executeQuery();
  47. while (rs.next()) {
  48. String filename=rs.getString("name");
  49. InputStream in=rs.getBinaryStream("content");
  50. OutputStream out=new FileOutputStream(filename);
  51.  
  52. byte []bs=new byte[1024];
  53. int i=0;
  54. while ((i=in.read(bs))!=-1) {
  55. out.write(bs,0,i);
  56. }
  57. in.close();
  58. out.close();
  59. }
  60. }catch(Exception e){
  61. e.printStackTrace();
  62. }finally{
  63. JDBCUtils.close(rs, ps, conn);
  64. }
  65. }
  66. }

三、其中出现的问题见链接:

使劲点我啊

20160408javaweb之JDBC 大二进制和大文件存取的更多相关文章

  1. Hibernate 中 联合主键映射 组合关系映射 大对象映射(或者说文本大对象,二进制数据大对象)

    Clob:文本大对象,最长4G Blob:二进制数据大对象,最长4G util: public class HibUtil { private static SessionFactory sessio ...

  2. 使用JDBC处理MySQL大文本和大数据

    LOB,Large Objects,是一种用于存储大对象的数据类型,一般LOB又分为BLOB与CLOB.BLOB通常用于存储二进制数据,比如图片.音频.视频等.CLOB通常用于存储大文本,比如小说. ...

  3. JDBC读写MySQL的大字段数据

    JDBC读写MySQL的大字段数据   不管你是新手还是老手,大字段数据的操作常常令你感到很头痛.因为大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式 来处理的.而非一般的字段 ...

  4. BLOB:大数据,大对象,在数据库中用来存储超长文本的数据,例如图片等

    将一张图片存储在mysql中,并读取出来(BLOB数据:插入BLOB类型的数据必须使用PreparedStatement,因为插入BLOB类型的数据无法使用字符串拼写): -------------- ...

  5. Atitit图像识别的常用特征大总结attilax大总结

    Atitit图像识别的常用特征大总结attilax大总结 1.1. 常用的图像特征有颜色特征.纹理特征.形状特征.空间关系特征. 1 1.2. HOG特征:方向梯度直方图(Histogram of O ...

  6. .git文件过大!删除大文件

    在我们日常使用Git的时候,一般比较小的项目,我们可能不会注意到.git 这个文件. 其实, .git文件主要用来记录每次提交的变动,当我们的项目越来越大的时候,我们发现 .git文件越来越大. 很大 ...

  7. Python使用heapq实现小顶堆(TopK大)、大顶堆(BtmK小)

    Python使用heapq实现小顶堆(TopK大).大顶堆(BtmK小) | 四号程序员 Python使用heapq实现小顶堆(TopK大).大顶堆(BtmK小) 4 Replies 需1求:给出N长 ...

  8. 首席技术官应该考虑的网络安全问题 IT大咖说 - 大咖干货,不再错过

    首席技术官应该考虑的网络安全问题 IT大咖说 - 大咖干货,不再错过   http://www.itdks.com/dakalive/detail/5523

  9. 算法分析(2)——大O和大Θ

    当一个软件遇到了性能瓶颈时,首要的改进是软件功能重构,适当删除可能拖垮系统的业务需求.客户对“实时”相当感兴趣,然而又有几个使用者能够真正清楚什么地方应该是实时的?这一点同样体现在其它行业,生厂商想要 ...

随机推荐

  1. js模块,类,继承,命名空间,私有属性等相关概念梳理

    js确切的说是一种基于对象的语言,和纯面向对象的语言(比如as)稍微有点区别,js中没有类的概念.虽然有继承但是基于原型的继承.随着前段越来越受重视,jser们利用js的一些特性他们制造出了和纯面向对 ...

  2. STL find() ,还是挺重要的

    template<class InputIterator, class T> InputIterator find (InputIterator first, InputIterator ...

  3. MongoDB之四( 索引操作)

    我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们 又会花费50%的时间在R上面,因为Read操作对用户来说是非常敏感的,处理不好就会被人唾弃,呵呵. 从算法上来说有 ...

  4. FZU 2237 中位数 主席树 树上k大

    #include <cstdio> #include <cstring> #include <queue> #include <set> #includ ...

  5. POJ 1847 Tram dij

    分析:d[i]表示到i点,最少的操作数 #include<cstdio> #include<cstring> #include<queue> #include< ...

  6. [CCC 1996 01]Deficient, Perfect, and Abundant

    CCC加拿大高中生信息学奥赛 其余来源 CODEVS[3312]——CCC 1996 01 Deficient, Perfect, and Abundant ——http://codevs.cn/pr ...

  7. 【HTML】Beginner6:Link

    1.Link HTML wich basically means a system of linked text     link to another HTML file or any file a ...

  8. bzoj 1924 [Sdoi2010]所驼门王的宝藏(构图,SCC,DP)

    Description Input 第一行给出三个正整数 N, R, C. 以下 N 行,每行给出一扇传送门的信息,包含三个正整数xi, yi, Ti,表示该传送门设在位于第 xi行第yi列的藏宝宫室 ...

  9. JavaWeb国际化

    软件的国际化: 软件在不同的地方,适应不同的风格: 中国: 显示中文,以及服务符合中国习惯的文本字符串! 美国: 显示英文,以及服务符合他国习惯的文本字符串! 这种软件,就叫国际化的软件! 如何做到国 ...

  10. 适合高级Java程序员看的12本书

    1.Thinking in Java 2.Head First Java 3.Java in a Nutshell 4.The elements of Java style 5.Effective J ...