日期:2014-05-16  浏览次数:20600 次

使用JDBC处理二进制数据
/*  
 
Database Programming with JDBC and Java, Second Edition  
By George Reese  
ISBN: 1-56592-616-1  
 
Publisher: O'Reilly  
 
*/  
  
  
import java.io.BufferedOutputStream;   
import java.io.File;   
import java.io.FileInputStream;   
import java.io.FileOutputStream;   
import java.sql.Blob;   
import java.sql.Connection;   
import java.sql.DriverManager;   
import java.sql.PreparedStatement;   
import java.sql.ResultSet;   
  
/**  
* Example 4.2.  
*/  
public class Blobs {   
  public static void main(String args[]) {   
    if (args.length != 1) {   
      System.err.println("Syntax: <java Blobs [driver] [url] "  
          + "[uid] [pass] [file]");   
      return;   
    }   
    try {   
      Class.forName(args[0]).newInstance();   
      Connection con = DriverManager.getConnection(args[1], args[2],   
          args[3]);   
      File f = new File(args[4]);   
      PreparedStatement stmt;   
  
      if (!f.exists()) {   
        // if the file does not exist   
        // retrieve it from the database and write it to the named file   
        ResultSet rs;   
  
        stmt = con.prepareStatement("SELECT blobData "  
            + "FROM BlobTest " + "WHERE fileName = ?");   
  
        stmt.setString(1, args[0]);   
        rs = stmt.executeQuery();   
        if (!rs.next()) {   
          System.out.println("No such file stored.");   
        } else {   
          Blob b = rs.getBlob(1);   
          BufferedOutputStream os;   
  
          os = new BufferedOutputStream(new FileOutputStream(f));   
          os.write(b.getBytes(0, (int) b.length()), 0, (int) b   
              .length());   
          os.flush();   
          os.close();   
        }   
      } else {