java对Blob读写(记录)
时间:2021-12-15 作者:匿名
未遇到问题,先记录,防止以后找不到资源
package 域名er; import 域名eredInputStream; import 域名eredOutputStream; import 域名OutputStream; import 域名; import 域名InputStream; import 域名OutputStream; import 域名tStream; import 域名; import 域名ection; import 域名erManager; import 域名aredStatement; import 域名ltSet; import 域名erties; public class BlobTest { public static Connection conn; public static Connection getConn() throws Exception { FileInputStream fis = new FileInputStream(new File("域名erties")); Properties prop = new Properties(); 域名(fis); String driver = 域名roperty("域名er"); String url = 域名roperty("域名"); String username = 域名roperty("域名name"); String password = 域名roperty("域名word"); 域名ame(driver); return 域名onnection(url, username, password); } public static void main(String[] args) throws Exception { conn = getConn(); readBlob(); writeBlob(); 域名e(); } /** * 从数据库中读大对象出来 * 保存在本地 */ public static void readBlob() { try { String readSql = "select * from emp where empno = ?"; PreparedStatement ps = 域名areStatement(readSql); 域名nt(1, 7369); ResultSet rs = 域名uteQuery(); while (域名()) { Blob image = 域名lob("image"); DataOutputStream dos = // 在FileOutputStream中指定文件输出路径 new DataOutputStream(new FileOutputStream(7369 + "域名")); InputStream fis = 域名inaryStream(); int out; byte[] outByte = new byte [100]; // 将blob对象输入流写入本地输出流中 while ((out = 域名(outByte)) != -1) { 域名e(outByte); } 域名e(); 域名h(); 域名e(); } 域名e(); 域名e(); } catch (Exception e) { 域名tStackTrace(); } } /** * 将大对象文件保存进数据库中 */ public static void writeBlob() { try { BufferedInputStream fis = new BufferedInputStream(new FileInputStream(new File("D:\\域名"))); // 如果是新插入字段,则将大对象对应字段插入为empty_clob(); // 如果是修改,则可以先update 该行数据,将大对象对应字段设置为empty_clob(); String writeSql = "select * from emp where empno = ? for update"; PreparedStatement ps = 域名areStatement(writeSql); 域名nt(1, 7499); 域名utoCommit(false); ResultSet rs = 域名uteQuery(); while (域名()) { 域名 image = (域名)域名lob("image"); BufferedOutputStream bos = new BufferedOutputStream(域名inaryOutputStream()); int c; // 将实际文件中的内容以二进制的形式来输出到blob对象对应的输出流中 while ((c = 域名()) != -1) { 域名e(c); } 域名e(); 域名e(); } 域名it(); 域名e(); 域名e(); } catch (Exception e) { 域名tStackTrace(); } } }
从数据库中读blob对象出来相对比较容易
从本地向数据库写blob对象相对难一些,主要注意两点:
1 要处理的blob字段必须先设置为empt_clob()
2 使用事务控制向数据库的写入操作