2018.7.30 Oracle的Bolog数据库类型读取和存储

package com.lanqiao.shopping.test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
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 com.lanqiao.shopping.utils.DBHelper;

public class Test {
    static PreparedStatement pstmt = null;
    static ResultSet rs = null;
    /*
     * 创建图片的表myPicture
     *     create  table myPicture(id number(4) primary key,img blob);
     */

    //将图片写进数据库
    public static void writeImgToBolb(){
        Connection conn = DBHelper.getConn();
        String sql = "insert into myPicture(id,img) values(?,?)";

        try {
            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1,3);//id

            //将图片转为输入流
            File file = new File("D:\\Eclipse\\ImagesSave\\one.jpg");
            InputStream in = new FileInputStream(file);

            /*
            String a = "sss";
            System.out.println(a.length());//字符串是length方法
            int[] i = new int[5];//数组是length属性
            System.out.println(i.length);*/

            //将输入流写入到myPicture表
            pstmt.setBinaryStream(2, in,(int)file.length());

            int result = pstmt.executeUpdate();
            System.out.println("111");
            if(result>0){
                System.out.println("图片写入成功");
            }else{
                System.out.println("图片写入失败");
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            DBHelper.closeConn(null, pstmt, conn);
        }

    }

    //从数据库读取图片
    public static void readImgToBlob(){
        Connection conn = DBHelper.getConn();
        String sql = "select * from myPicture where id=?";
        try {
            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, 1);//id =1
            rs = pstmt.executeQuery();
            if(rs.next()){
                //将图片从数据库中读取出来,类型为InputStream
                InputStream imgIn = rs.getBinaryStream("img");

                //通过IO流,将图片写到项目中(硬盘)
                InputStream in = new BufferedInputStream(imgIn);

                //将图片的输出路径设置为src(相对路径),图片名为myPic.png
                OutputStream imgOut = new FileOutputStream("D:\\Eclipse\\ImagesSave\\myPic.jpg");
                OutputStream out = new BufferedOutputStream(imgOut);

                int len = -1;
                while((len=in.read())!=-1){
                    out.write(len);
                }

                imgOut.close();
                out.close();
                imgIn.close();
                in.close();
                System.out.println("照片读取成功");

            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            DBHelper.closeConn(rs, pstmt, conn);
        }

    }

    public static void main(String[] args) {
        //writeImgToBolb();
        readImgToBlob();
    }
}

原文地址:https://www.cnblogs.com/qichunlin/p/9350394.html

时间: 2024-10-09 21:28:42

2018.7.30 Oracle的Bolog数据库类型读取和存储的相关文章

Oracle数据库类型

字符类型char[(length)] 定长字符 最长2000字节varchar2[(length)] 可变长度的字符数据类型,最长4000字节NCHAR[(length)] 固定长度的字符数据类型,由国际字符语言(national language Support,NLS)字符集字符组成,最长2000字节LONG 可变长度的字符数据类型 最长2GBRAW 原始的二进制数据类型,最长2000字节long raw 原始的二进制数据类型,最长2GBrawid 数据库中一窜12字节地址,用于定位磁盘上某

Oracle数据库类型总结

RACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型.数字类型.日期类型.LOB类型.LONG RAW& RAW类型.ROWID & UROWID类型.一 字符串类型CHAR类型 CHAR(size [BYTE | CHAR]) CHAR类型,定长字符串,会用空格填充来达到其最大长度.非NULL的CHAR(12)总是包含12字节信息.CHAR字段最多可以存储2,000字节的信息.如果创建表时,不指定CHAR长度,则默认为1.另外你可以指

MySql数据库类型bit等与JAVA中的对应类型【布尔类型怎么存】

用char(1):可以表示字符或者数字,但是不能直接计算同列的值.存储消耗1个字节 用tinyint:只能表示数字,可以直接计算,存储消耗2个字节 用bit: 只能表示0或1,不能计算,存储消耗小于等于一个字节. 总结: 如果无扩展需求,仅仅表示2值逻辑的话, Bit 绝对是首选 如果有扩展需求,以后可能多余2个值,就用 tinyint char不考虑,写代码时要带单引号,超麻烦 转: MySql数据库类型bit等与JAVA中的对应类型 2018年12月04日 16:43:58 Ming3394

mybatis+oracle 完成插入数据库,并将主键返回的注意事项

mybatis+oracle 完成插入数据库,并将主键返回的注意事项一条插入语句就踩了不少的坑,首先我的建表语句是: create table t_openapi_batch_info( BATCH_NO VARCHAR2(200), UM_CODE VARCHAR2(50), BATCH_STATUS CHAR(1) DEFAULT '0', BATCH_TYPE CHAR(1), CREATED_DATE DATE, CREATED_BY VARCHAR(100), UPDATED_DATE

CentOS 7部署Oracle 12c企业版数据库

一.安装Oracle 12c 1.安装CentOS 7操作系统的注意事项 由于本次安装Oracle 12c软件是在CentOS 7系统上实现的,那么首先安装CentOS 7操作系统,安装要求如下: 防火墙的配置选项设置为禁用: SELinux设置为禁用: 默认安装设置为软件开发: 内核选择3.10.0-862.el7.x86_64及以上版本: 2.前置条件的准备 Oracle数据库是一个相对庞大的应用软件,对服务器的系统类型.内存和交换分区.硬盘空阿金.内核参数.软件环境.用户环境等都有相应的要

Winform开发框架中实现同时兼容多种数据库类型处理

在很多应用系统里面,虽然一般采用一种数据库运行,但是由于各种情况的需要,可能业务系统会部署在不同类型的数据库上,如果开发的系统能够很方便支持多种数据库的切换,那可以为我们减少很多烦恼,同时提高系统的适应性和强壮型.还有一种情况,由于业务数据库的不断膨胀或者方便数据库的切割隔离,有时候也会把不同的业务数据库进行分拆,如权限提供数据库,客户关系管理数据库,工作流程数据库,企业营运数据库等等,因此在一个系统里面,同时使用2个或者以上的数据库的情况也是有的. 在我较早期的一篇随笔<Winform开发框架

渗透测试之各种数据库类型特点的总结

背景介绍:从攻击者角度分析,如果要对一个完全未知(数据库类型.数据库.数据表.网站后台)的网站进行攻击,简单来说,我们要对一个陌生的网站进行盲注.那么实行注入可以从数据库入手,那么一个数据库可从从哪些方面入手呢?独特的数据表.独特的SQL语句的用法....... 那么接下来,我们来总结一下几个数据库的特点,欢迎各位大侠进行总结. 数据库类型介绍: 1.MSSQL 这些数据库时sqlserver自带的数据库,可以通过sql语句,对这些数据库进行一个简单的监测 select * from S_Use

Winform开发框架中实现多种数据库类型切换以及分拆数据库的支持 - 伍华聪

在很多应用系统里面,虽然一般采用一种数据库运行,但是由于各种情况的需要,可能业务系统会部署在不同类型的数据库上,如果开发的系统能够很方便支持多种数据库的切换,那可以为我们减少很多烦恼,同时提高系统的适应性和强壮型.还有一种情况,由于业务数据库的不断膨胀或者方便数据库的切割隔离,有时候也会把不同的业务数据库进行分拆,如权限提供数据库,客户关系管理数据库,工作流程数据库,企业营运数据库等等,因此在一个系统里面,同时使用2个或者以上的数据库的情况也是有的.针对这两种情况,本文介绍在我的Winform开

hibernate4中oracle,sqlserver,mysql数据库的sql方言配置(SQL Dialects)

hibernate4中oracle,mysql,sqlserver数据库的sql方言配置(SQL Dialects) 数据库类型 Hibernate sql方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect PostgreSQL 8.1 org.hibernate.dialect.Po