使用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 {