Java BLOB 数据的插入与读取 操作

package com.lw.database;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * CREATE:
 *         CREATE TABLE IDCard ( id char(18),pic BLOB);
 * @author liuwei
 * Time: 2015年5月25日 下午3:22:26
 */
public class LOBTest {

    protected static final String DEFAULT_URL = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8";
    protected static final String DRIVER_NAME = "com.mysql.jdbc.Driver";

    private Connection connection = null;

    public LOBTest() throws ClassNotFoundException, SQLException {
        Class.forName(DRIVER_NAME);
        connection = DriverManager.getConnection(DEFAULT_URL, "user", "password");
    }

    public void insert(String id,String path) throws SQLException, IOException {
        PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO IDCard VALUES (?,?)");
        preparedStatement.setString(1, id);
        FileInputStream fileInputStream = new FileInputStream(path);
        preparedStatement.setBlob(2, fileInputStream,fileInputStream.available());
        preparedStatement.execute();
    }

    public void get(String id) throws SQLException, IOException {
        PreparedStatement preparedStatement = connection.prepareStatement("SELECT pic FROM IDCard WHERE id = ?");
        preparedStatement.setString(1, id);
        ResultSet results = preparedStatement.executeQuery();
        while(results.next()) {
            FileOutputStream outputStream = new FileOutputStream("/Users/liuwei/temp.png");
            InputStream inputStream = results.getBinaryStream(1);
            int num = -1;
            while((num=inputStream.read())!=-1) {
                outputStream.write(num);
            }
            outputStream.flush();
            inputStream.close();
            outputStream.close();
        }
    }

    public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException {
        LOBTest test = new LOBTest();
        test.insert("78907656784323", "/Users/liuwei/Documents/bt_next_nor.png");
        test.get("78907656784323");
    }
}

注意:

  MySQL的四种BLOB类型

    类型  大小(单位:字节)

     TinyBlob  最大 255B

       Blob  最大 65K

       MediumBlob  最大 16M

     LongBlob  最大 4G

插入图像的时候,注意下图像大小,图像超过该类型所能容纳的最大字节的时候,会报错

时间: 2024-10-12 19:22:57

Java BLOB 数据的插入与读取 操作的相关文章

jsp 配置MySQL服务器 以及数据的插入和读取

不多说,直接上代码.百度上面也是一大堆,大家多问百度就行. 在利用JDBC访问数据库过程中,主要涉及三种资源:对数据库的连接的连接对象Connection,SQL语句对象 Statement,访问结果集ResultSet 或 RowSet. package ShopCar; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLExcepti

Sql server 大数据量插入速度慢或丢失数据解决办法

问题描述:我的设备每秒2000条数据插入数据库,2个设备总共4000条,当在程序里面直接用insert语句插入时,两个设备同时插入大概总共能插入约2800条左右,数据丢失约1200条左右,找了好多解决方法,整理了两种效果比较明显的解决办法: 第一种:使用Sql Server函数: 1.将数据组合成字串,使用函数将数据插入内存表,后将内存表数据复制到要插入的表. 2.组合成的字符换格式:'111|222|333|456,7894,7458|0|1|2014-01-01 12:15:16;1111|

求mybatis 对BLOB数据的操作以及base64格式的处理

原文:求mybatis 对BLOB数据的操作以及base64格式的处理 源代码下载地址:http://www.zuidaima.com/share/1550463715314688.htm 寻求一个从前台将图片转成base64格式,base64与BLOB的转换以及基于mybatis将BLOB数据插入数据库的范例.跪求! package com.zuidaima.mybatis; import java.io.ByteArrayOutputStream; import java.io.File;

Java数据存入文件和读取文件

在Java程序开发过程中我们发现并不能够让程序多次运行时获得上一次关闭程序前的运行结果--我们没有将运行的结果加以保存.这个时候我们就要找到Java操作读取数据的方法(以操作文件为例):Java中的输入/输出模型,I/O模型又称为I/O流.(以下简称I/O流). 流按方向可以分为输入(input)和输出(output)2种.输入和输出是相对的,这里我们是站在程序的角度来看的,将程序的数据写到文件就是输出,从文件中读取数据就是输入. 按类型(大小)可以分为字节型(byte)和字符型(byte)2种

在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。

作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇<AppendChunk and GetChunk Methods Example (VC++)>,原文地址是http://msdn.microsoft.com/en-us/library/ms807920.aspx.还有www.vckbase.com上有一篇文章<使用ADO实现BLOB数据的存取 -- ADO开发实践之二>,原文地址是http://www.vck

Java JSON数据创建和读取

Java  json数据创建 package com.JavaTest; import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class CreatJson { public static void main(String[] args) { JsonObject object = new JsonObject(); object.addProperty("cat", "it&

java PriorityBlockingQueue 基础的优先级队列,可阻塞的读取操作.

package org.rui.thread.newc; import java.util.ArrayList; import java.util.List; import java.util.Queue; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.PriorityB

当向后台插入或读取JSON数据遇见回车时

今天在项目中发现,当插入或读取JSON数据时遇见回车符,返回JSON数据格式时会报错(firebug里体现为乱码),百度了一下发现JSON不支持字符串里存在回车! 解决办法: 在向接口插入带json格式的数据之前,将回车等特殊符合替换成json接受的符号: 在向接口请求读取json格式的数据时,将回车等特殊符合替换成json接受的符号: 发送到后台 myPostStr.replace(/[\r\n]/g,"|"); //将myStr字符串里的回车和换行符替换成"|"

Java 实现Excel的简单读取操作

JAVA实现Excel表单的简单读取操作 实现Excel表单的简单读取操作,首先要导入相关的jar包: 如图所示: 此处贴上代码: public static List<List<String>> readExcel(String path){ List<List<String>> list=new ArrayList<List<String>>(); try { Workbook wb; InputStream is=null; t