1、Blob类型的数据即为图片。
2、tinyBlob最大支持4KB,Blob最大支持64KB,MediumBlob最大支持16MB,LongBlob最大支持4GB。
public class BlobTest {
@Test
public void insertBlob() throws Exception{
Connection connection = JDBCUtils.getConnection();
String sql="insert into test set id=?,name=?,date=?,image=?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setObject(1,null);
preparedStatement.setObject(2,"AC");
preparedStatement.setObject(3,"1997-06-10");
FileInputStream fileInputStream = new FileInputStream(new File("test.jpg"));
preparedStatement.setObject(4,fileInputStream);
preparedStatement.executeUpdate();
JDBCUtils.closeResource(connection,preparedStatement);
}
@Test
public void queryBlob() {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
InputStream inputStream= null;
FileOutputStream fileOutputStream= null;
try {
connection = JDBCUtils.getConnection();
String sql="select id id,name name,date date,image image from test where id=?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setObject(1,1);
resultSet = preparedStatement.executeQuery();
if (resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
Date date = resultSet.getDate("date");
System.out.println("id="+id+" name="+name+" date="+date);
Blob image = resultSet.getBlob("image");
inputStream = image.getBinaryStream();
fileOutputStream = new FileOutputStream("test1.jpg");
byte[] data = new byte[1024];
int len;
while ((len=inputStream.read(data))!=-1){
fileOutputStream.write(data,0,len);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fileOutputStream!=null){
fileOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (inputStream!=null){
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
JDBCUtils.closeResource(connection,preparedStatement,resultSet);
}
}
}