Java大数据

大数据(像数据库中插入图片)

import java.sql.SQLException; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent;

public class TestPIC {

protected Shell shell;
private Text text;

/**
 * Launch the application.
 * @param args
 */
public static void main(String[] args) {
    try {
        TestPIC window = new TestPIC();
        window.open();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

/**
 * Open the window.
 */
public void open() {
    Display display = Display.getDefault();
    createContents();
    shell.open();
    shell.layout();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
}

/**
 * Create contents of the window.
 */
protected void createContents() {
    shell = new Shell();
    shell.setSize(450, 300);
    shell.setText("SWT Application");

    Label label = new Label(shell, SWT.NONE);
    label.setBounds(20, 95, 61, 17);
    label.setText("头像");

    text = new Text(shell, SWT.BORDER);
    text.setBounds(113, 95, 192, 23);

    Button button = new Button(shell, SWT.NONE);
    button.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog dialog = new FileDialog(shell,SWT.OPEN);   
            String basepath=System.getProperty("user.home");//设置 初始路径
            dialog.setFilterPath(basepath);
            dialog.setFilterExtensions(new String[]{"*.jpg","*.jpeg","*.png"});  //它使用指定的扩展名集合进行过滤
            String fileName = dialog.open();

            if(fileName==null||"".equals(fileName)){
                return;
            }
            text.setText(fileName);




        }
    });
    button.setBounds(344, 91, 80, 27);
    button.setText("浏览");

    Button button_1 = new Button(shell, SWT.NONE);
    button_1.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            String picpath=text.getText().trim();

            PicBiz pb=new PicBiz();

            try {
                pb.savePic(picpath);
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    });
    button_1.setBounds(168, 156, 80, 27);
    button_1.setText("保存");

}

} import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.UUID;

import com.yc.dao.dbhelper;

public class PicBiz { public void savePic(String picpath) throws SQLException { String picid=UUID.randomUUID().toString(); dbhelper db= new dbhelper(); String sql=”insert into pic values(?,empty_blob())”;

    String sql2="select pic from pic where picid=? for update";//for update 锁定这一行数据
            Connection con=null;
    try {
        con=db.getCon();
        con.setAutoCommit(false);//关闭隐式提交

        PreparedStatement pstmt=con.prepareStatement(sql);//创建语句对象 ,发给数据库执行

        pstmt.setString(1, picid);//设置参数
        pstmt.execute();//数据库执行语句

         pstmt=con.prepareStatement(sql2);

        pstmt.setString(1, picid);
        pstmt.execute();

        ResultSet rs=pstmt.executeQuery(); //得到数据库中语句执行的结果集

        if(rs!=null&&rs.next()){
            OutputStream oos=null;//像数据库表中输出图片
            InputStream iis=null;//从本地读文件

            oracle.sql.BLOB b= (oracle.sql.BLOB) rs.getBlob(1);//取出图片所在位置
            iis=new BufferedInputStream(new FileInputStream(new File (picpath)));//通过输入流读取图片数据
            oos=b.getBinaryOutputStream();//从结果集中取出输入流 用于向数据库写数据


            byte[] bs=new byte[1024];
            int length=-1;
            while(( length=iis.read(bs,0,bs.length))!=-1){
                oos.write(bs,0,length);
                oos.flush();
            }
            con.commit();


        }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        con.rollback();
    } finally{
        con.setAutoCommit(true);
    }
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Hadoop学习之网络爬虫+分词+倒排索引实现搜索引擎案例

    本项目实现的是:自己写一个网络爬虫,对搜狐(或者csdn)爬取新闻(博客)标题,然后把这些新闻标题和它的链接地址上传到hdfs多个文件上,一个文件对应一个标题和...

    汤高
  • 适配器模式

    思想: 写一个抽象类继承HttpServlet,在这个类中加入通用功能。 以后所有的servlet类都继承自这个 类。 以达到扩展Servlet...

    汤高
  • 干货--JMS(java消息服务)整合Spring项目案例

    Sprng-jms消息服务小项目 所需的包: spring的基础包 spring-jms-xx包 spring-messag...

    汤高
  • xml与数据库中数据的导入导出

    这是我一个晚上做出来的,因为要去做其他的项目,所以只实现了对特定数据库的xml操作,不过我觉得这是学习xml挺不错的参考代码和文档

    用户1208223
  • Java实现数据库和数据表的二级联动

    实现的效果是获取Mysql的所有数据库,然后点击数据库名就可以实现获取该数据库里的所有表。

    用户1208223
  • 使用多线程模拟Ddos攻击

    分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或...

    王念博客
  • spring cloud 学习(10) - 利用springfox集成swagger

    对绝大多数程序员而言,写接口文档是一件痛苦的事情,相对文档,他们更愿意写代码。最理想的情况就是:代码即文档!服务开发完成后,部署上去文档就自动生成,没错,这就是...

    菩提树下的杨过
  • 第78节:Java中的网络编程(上)

    网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节.

    达达前端
  • Java之网络编程笔记

      IP地址:用于标记一台计算机的身份证。 IP地址由网络地址(确定网络)和主机地址(网络中的主机)组成。

    shirayner
  • 学习记录——Java读取pptx

    https://time.geekbang.org/course/detail/181-118098

    润森

扫码关注云+社区

领取腾讯云代金券