This section describes how to retrieve BLOB values with the ResultSet.getBytes() method.
The simplest way to retrieve the character string value from a BLOB column is to use the getBytes() method on the ResultSet object.
Here is short example program:
/**
* MySqlBlobGetBytes.java
* Copyright (c) 2007 by Dr. Herong Yang. All rights reserved.
*/
import java.io.*;
import java.sql.*;
public class MySqlBlobGetBytes {
public static void main(String [] args) {
Connection con = null;
try {
com.mysql.jdbc.jdbc2.optional.MysqlDataSource ds
= new com.mysql.jdbc.jdbc2.optional.MysqlDataSource();
ds.setServerName("localhost");
ds.setPortNumber(3306);
ds.setDatabaseName("HerongDB");
ds.setUser("Herong");
ds.setPassword("TopSecret");
con = ds.getConnection();
// Retrieving BLOB value with getBytes()
Statement sta = con.createStatement();
ResultSet res = sta.executeQuery("SELECT * FROM Image");
int i = 0;
while (res.next() && i<3) {
i++;
System.out.println("Record ID: "+res.getInt("ID"));
System.out.println(" Subject = "+res.getString("Subject"));
byte[] body = res.getBytes("Body");
String bodyHex = bytesToHex(body, 32);
System.out.println(" Body in HEX = "+bodyHex+"...");
}
res.close();
sta.close();
con.close();
} catch (Exception e) {
System.err.println("Exception: "+e.getMessage());
e.printStackTrace();
}
}
public static String bytesToHex(byte[] bytes, int max) {
StringBuffer buffer = new StringBuffer();
for (int i=0; i<bytes.length && i<max; i++) {
buffer.append(Integer.toHexString(bytes[i] & 0xFF));
}
return buffer.toString().toUpperCase();
}
}
bytesToHex() method is used to convert a byte array to a Hex string.
The output of the program confirms that CLOB values can be retrieved with getBytes() method on the ResultSet object:
C:\>java -cp .;\local\lib\mysql-connector-java-5.0.7-bin.jar
MySqlBlobGetBytes
Record ID: 4
Subject = Test on INSERT statement
Body in HEX = C9CBBBCCCEB9C8CABCCCCEB9C9CBBB...
Record ID: 10
Subject = Test of the setBytes() method
Body in HEX = C9CBBBCCCEB9C8CABCCCCEB9C9CBBB...
Record ID: 15
Subject = Test of setBinaryStream() methods
Body in HEX = CAFEBABE000320B5A03B0487049A02048804AA0204BA...