/**
* @author Kevin 2018-1-16
*
* Blob(二进制大对象)对象的存储 jdbc实现。
*
*/
public class BlobObjectDemo {
public static void main(String[] args) throws IOException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
Connection conn = null;
Statement state = null;
ResultSet rs = null;
try {
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "demo", "demo");
state = conn.createStatement();
String id = UUID.randomUUID().toString().replace("-", "");
String insertSql = "insert into test_blob values('"+id+"',empty_blob())";
state.execute(insertSql);
File f = new File("D:\\壁纸\\12 (1).jpg");
FileInputStream in = new FileInputStream(f);
String sql = "select * from test_blob where id='"+id+"' for update";
rs = state.executeQuery(sql);
while(rs.next()){
Blob b = rs.getBlob(2);
OutputStream out = b.setBinaryStream(0);
byte[] bytes = new byte[in.available()];
int len = 0;
while((len = in.read(bytes)) != -1){
out.write(bytes, 0, len);
}
}
} catch (SQLException e) {
System.err.println("出错回滚");
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
} finally{
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Blob存储实践
最新推荐文章于 2022-05-19 21:22:10 发布