一个简单的Blob存取例子

 

Code:
  1. import java.io.*;  
  2. import java.sql.*;  
  3.   
  4. /** 
  5.  * 测试操作blob数据 
  6.  */  
  7. public class BlobTest {  
  8.     Connection con = null;  
  9.     private static String filepath = "d:/test/smile.jpg";  
  10.     private static String fileoutpath = "d:/test/smilecopy.jpg";  
  11.     /** 
  12.      * 往数据库中添加BLOB数据 
  13.      */  
  14.     public void addBlob() {  
  15.         try {  
  16.   
  17.             // 创建一个PreparedStatement实例  
  18.             PreparedStatement pstmt = con  
  19.                     .prepareStatement("insert into blobtest values(1,?)");  
  20.             File file = new File(filepath);  
  21.             FileInputStream fis = new FileInputStream(file);  
  22.             // 把输入流设置为预处理语句的对象。  
  23.             pstmt.setBinaryStream(1, fis, (int) file.length());  
  24.             // 执行更新  
  25.             pstmt.executeUpdate();  
  26.             pstmt.close();  
  27.             fis.close();  
  28.   
  29.         } catch (Exception e) {  
  30.             e.printStackTrace();  
  31.         }  
  32.     }  
  33.   
  34.     /** 
  35.      * 创建一个表 
  36.      */  
  37.     public void createTable() {  
  38.         try {  
  39.             con.createStatement().execute(  
  40.                     "create table blobtest (id int ,pic blob,"  
  41.                             + "constraint pk_blobtest primary key(id));");  
  42.         } catch (Exception e) {  
  43.             e.printStackTrace();  
  44.         }  
  45.     }  
  46.   
  47.     /** 
  48.      * 从数据库中读取BLOB数据 
  49.      */  
  50.     public void getBlob() {  
  51.   
  52.         try {  
  53.             // 创建一个Statement实例  
  54.             Statement stmt = con.createStatement();  
  55.             ResultSet rst = stmt  
  56.                     .executeQuery("select * from blobtest where id=1");  
  57.             rst.next();  
  58.             // 获得blob数据和它的输入流,然后通过输入流把数据写到文件中。  
  59.             Blob blob = rst.getBlob("pic");  
  60.             FileOutputStream out = new FileOutputStream(new File(  
  61.                     fileoutpath));  
  62.             InputStream in = blob.getBinaryStream();  
  63.             int i;  
  64.             while ((i = in.read()) != -1)  
  65.                 out.write(i);  
  66.             // 关闭输入、输出流.  
  67.             in.close();  
  68.             out.close();  
  69.   
  70.         } catch (Exception e) {  
  71.             e.printStackTrace();  
  72.   
  73.         }  
  74.     }  
  75.   
  76.     public static void main(String[] args) throws Exception {  
  77.         Class.forName("com.mysql.jdbc.Driver").newInstance();  
  78.         BlobTest test = new BlobTest();  
  79.         test.con = java.sql.DriverManager.getConnection(  
  80.                 "jdbc:mysql://localhost:3306/test""root""123456");  
  81.         test.createTable();  
  82.         test.addBlob();  
  83.         test.getBlob();  
  84.     }  
  85. }  

MySQL有四种BLOB类型:

  ·tinyblob:仅255个字符

  ·blob:最大限制到65K字节

  ·mediumblob:限制到16M字节

  ·longblob:可达4GB

你可能感兴趣的:(数据库,mysql,jdbc,String,File,null)