飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

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  使用事务控制向数据库的写入操作

湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。