栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java从Oracle中插入和读取图片

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java从Oracle中插入和读取图片

        下面以SWT效果来展示。

        测试照片如下: 路径为: D:test1.png

        一、插入图片

        通过java的io流类读取图片资源,存储在字节数组中,直接写入到数据库类型为Blob的属性即可。

        代码示例: 

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class test {
	public static void main(String []args) throws Exception {
		File file = new File("D:\test\1.png");
		InputStream in  = new FileInputStream(file);
		
		byte [] bt = new byte[(int)file.length()];
		int i = in.read(bt);  //将图片存入字节数组bt中
		try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        int result = -1;
        try(        Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","a");

                    PreparedStatement pstmt = con.prepareStatement("insert into test_img values (?)");
        ){
        	pstmt.setObject(1, bt);

            result = pstmt.executeUpdate();

        }catch(Exception e){
            e.printStackTrace();
        }
        if(result>=0) {
        	System.out.println("插入成功");
        }
		in.close();
	}
}

        Oracle查询效果:插入是成功的 

       二、读取图片

        从数据库中读取的数据用Blob接受,让后在将他转换成字节流,在将字节流读入到字节数组中

        

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class test2 {
	
	public static void main(String[]args) {
		Display display = Display.getDefault();
		Shell shell = new Shell();
		shell.setSize(300, 300);
		
		try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
      
		byte [] bt = null;	
        try(Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","a");

            PreparedStatement pstmt = con.prepareStatement("select * from test_img ");
        ){
           ResultSet rs = pstmt.executeQuery();
           if(rs.next()){  //只读取一行
        	 Blob  image  = (Blob) rs.getObject("IMAGE");  //将从数据库中读入的数据存入Blob中
        	 InputStream in = image.getBinaryStream() ;    //将Blob转换成字节流
        	 bt = new byte[(int)image.length()];      // 将字节流读入
             int i =0 ;
             while((i = in.read(bt))!=-1) {
            	 
             }

           }

        }catch(Exception e){
            e.printStackTrace();
        }
		
		

		Label showimage = new Label(shell, SWT.NONE);  

		ByteArrayInputStream in = new ByteArrayInputStream(bt); //将字节数组转换成流
		Image image =new Image(Display.getDefault(),in);        
		showimage.setImage(image);
		showimage.setBounds(0, 0, 200, 211);

		
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
		display.dispose();
	
	}
	
}

               页面效果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/681809.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号