Oracle JDBC存入图片Blog

创建测试表

create table test_img(
  id    integer primary key,
  name  varchar2(32),
  image blob
);

存储图片

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 oracle.sql.BLOB;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        PreparedStatement pst = null;
        ResultSet rs = null;
        Connection conn = ConnectionManager.getConnection();
        String sql = "insert into test_img(id,name,image) values(?,?,?)";
        try {
            pst = conn.prepareStatement(sql);
            pst.setInt(1, 1);
            pst.setString(2, "test");
            pst.setBlob(3, BLOB.empty_lob());  //插入空对象empty_blob()
            int ii = pst.executeUpdate();

            OutputStream os = null;
            String q_sql = "select image from test_img where id = ? for update"; // 锁定数据行进行更新
            pst = conn.prepareStatement(q_sql);
            pst.setInt(1, 1);
            rs = pst.executeQuery();
            if (rs.next()) {
                oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("image");
                os = blob.getBinaryOutputStream();
                InputStream is = new FileInputStream("D:\\image.jpg");
                int i = 0;
                while ((i = is.read()) != -1) {
                    os.write(i);
                }
            }
            os.flush();
            os.close();
            ConnectionManager.closeAll(rs, pst, conn); // 关闭资源

        } catch (SQLException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

JDBC辅助类

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConnectionManager {
    public static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
    public static final String URL = "jdbc:oracle:thin:@localhost:1521/orcl";
    public static final String USERNAME = "test";
    public static final String PASSWORD = "test";
    /**
     * 通过静态代码块 注册数据库驱动
     */
    static{
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获得Connection
     *
     * @return
     */
    public static Connection getConnection() {
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        }catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    /**
     * 关闭ResultSet
     * @param rs
     */
    public static void closeResultSet(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 关闭Statement
     * @param st
     */
    public static void closeStatement(Statement st) {
        if (st != null) {
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 关闭Connection
     * @param conn
     */
    public static void closeConnection(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 关闭全部
     * @param rs
     * @param sta
     * @param conn
     */
    public static void closeAll(ResultSet rs,Statement sta,Connection conn){
        closeConnection(conn);
        closeStatement(sta);
        closeResultSet(rs);
    }

}

效果如图:

时间: 2024-10-01 05:07:24

Oracle JDBC存入图片Blog的相关文章

Oracle JDBC存入图片Blob

创建测试表 create table test_img( id integer primary key, name varchar2(32), image blob ); 存储图片 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; impo

registered the JBDC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. (转)

最近项目中遇见一问题,在开发环境没有问题的代码,到了生产环境就会报如下错误: 严重: A web application registered the JBDC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregiste

转: Maven 仓库中添加Oracle JDBC驱动(11g)

1.由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库,此文档用的是Oracle 11g.通过Oracle的安装目录获得,位置在:E:\app\zhaoheng\product\11.2.0\dbhome_1\jdbc\lib下: 此使用的是ojdbc6.jar 2.知道自己安装的Oracle是什么版本的 可以在SQL窗口中输入:select * from v$instance

【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理

篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblogs.com/baiboy/p/wpf1.html 篇三:批量处理后的txt文件入库处理:http://www.cnblogs.com/baiboy/p/wpf2.html 篇四:关于OneNote入库处理以及审核:http://www.cnblogs.com/baiboy/p/wpf3.html [

【转载】MySQL存入图片+Qt读入读出数据库中的图片

/* Time: 2017.01.02 -- 2017.01.04 * Author: WJ * Function:连接数据库,从数据库中读取图片并显示(已成功) */ [参考链接] MySQL存入图片+Qt读入读出数据库中的图片 - lpdpzc的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/lpdpzc/article/details/41915835 [主要代码] void MainWindow::on_ShowImage_clicked() { QS

【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核

篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblogs.com/baiboy/p/wpf1.html 篇三:批量处理后的txt文件入库处理:http://www.cnblogs.com/baiboy/p/wpf2.html 篇四:关于OneNote入库处理以及审核:http://www.cnblogs.com/baiboy/p/wpf3.html [

Oracle JDBC通过占位符可以查询可变长字段,不可查询固定长度字段

这个问题在半年前,花了我两天的时间才解决,现在刚好想起来,顺便记录一下以防忘了. 通过jdbc,预编译的sql,无法查询到固定长度的字段. 用例子说话: 创建一个表,只有一个字段,长度为固定的char类型.并插入一条数据. create table tblchar ( name char(20) ); 在Java代码中使用预编译的SQL查询,无法查询到结果.而使用拼接的SQL,可以正常查询. 1 public static void main(String[] args) { 2 try { 3

C#从SQL server数据库中读取l图片和存入图片

原文:C#从SQL server数据库中读取l图片和存入图片 本实例主要介绍如何将图片存入数据库.将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类.BinaryReader把图片读成字节的形式,赋给一个字节数组,然后用ADO.SqlCommand对象的ExecuteNonQuery()方法来把数据保存到数据库中.主要代码如下: private void button1_Click(object sender, EventArgs e)

Oracle Jdbc demo

两种方式: thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracle客户端,只要求classpath中包含jdbc驱动的jar包就行.thin就是纯粹用Java写的ORACLE数据库访问接口. oci 是一种胖客户端的连接方式,即采用这种连接方式需要安装oracle客户端.oci是Oracle Call Interface的首字母缩写,是ORACLE公司提供了访问接口,就是使用Java来调用本机的Oracle客户端,然后再访问数据库,优点是速度 快,但是需要安装和配置数据库.