Reputation: 2763
I have create the BLOB object like this:
byte [] fileId = b.toByteArray();
Blob blob = new SerialBlob(fileId);
But it gives me an error.
Upvotes: 13
Views: 58723
Reputation: 136162
to create BLOB use Connection.createBlob
to write BLOB to DB use PreparedStatement.setBlob
to read BLOB from DB use ResultSet.getBlob
Assuming you have table t1
with BLOB column b1
:
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
Blob b1 = conn.createBlob();
b1.setBytes(1, new byte[10]); // first position is 1. Otherwise you get: Value of offset/position/start should be in the range [1, len] where len is length of Large Object[LOB]
PreparedStatement ps = conn.prepareStatement("update t1 set c1 = ?");
ps.setBlob(1, b1);
ps.executeUpdate();
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select c1 from t1");
Blob b2 = rs.getBlob(1);
Upvotes: 24