java blob
package net.qysoft;
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.SQLException;
/**
* java 中对Blob数据的操作数据库的创建代码:
* (1)db2 => create table blobTest ( id int not null generated always as identity, image blob )
*添加用户java,密码java
* (2) db2=>! net
* user java java /add java分配权限
*(3)db2 => grant select,insert,update,delete on
* table weihuachao.blobTest to user java
*
*
* @author weihuachao
* 以下代码在microsoft 2003 系统,DB2 9.0中测试成功.
*
*/
//类的定义开始------------------------------------------------------------
public class Test {
public static void main(String[] args) throws Exception {
Test test = new Test();
Connection conn = test.createConnection();
// Blob对象的插入的方法:
try {
// 创建插入语句.
java.sql.PreparedStatement preparedStatement = conn
.prepareStatement("insert into weihuachao.blobTest(image)values(?)");
//创建文件对象:
File file=new File("c:/a.jpg");
// 创建流对象:
java.io.BufferedInputStream imageInput = new java.io.BufferedInputStream(
new java.io.FileInputStream(file));
//参数赋值:
preparedStatement.setBinaryStream(1, imageInput,(int) file.length());
//执行语句
preparedStatement.executeUpdate();
//------------------------------------------------------------------
//Blob的读取工作:
java.sql.Statement st=conn.createStatement();
java.sql.ResultSet rs=st.executeQuery("select image from weihuachao.blobTest");
while(rs.next())
{
//读取Blob对象
Blob blob= (Blob) rs.getBlob(1);
//Blob对象转化为InputStream流
java.io.InputStream inputStream =blob.getBinaryStream();
//要写入的文件
File fileOutput = new File("c:/backa.jpg");
//文件的写入流的定义
FileOutputStream fo = new FileOutputStream(fileOutput);
int c;
//读取流并写入到文件中
while ((c = inputStream.read()) != -1)
fo.write(c);
//流的关闭:
fo.close();
}
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}catch(java.io.FileNotFoundException ex)
{
ex.printStackTrace();
}catch(java.io.IOException ex)
{
ex.printStackTrace();
}
finally
{
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
/**
* 定义数据库连接的方法
*
* @return
*/
private Connection createConnection() {
Connection conn = null;
try {
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
conn = java.sql.DriverManager.getConnection("jdbc:db2:sample",
"java", "java");
} catch (SQLException ex1) {
ex1.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return conn;
}
}//结束.
总结: JAVA 对DB2中的BLOB对象的操作,主要是使用流的技术实现.对BLOB的实现主要步骤有:
(1)定义要写入的文件 File file=new File("c:/a.jpg");
(2)定义文件的写入流
java.io.BufferedInputStream imageInput = new java.io.BufferedInputStream(
new java.io.FileInputStream(file));
(3)使用函数写入:
preparedStatement.setBinaryStream(1, imageInput,(int) file.length());
(4)执行SQL语句:
对BLOB的读取采取的步骤有:
(1)读取Blob的对象: Blob blob= (Blob) rs.getBlob(1);
(2)把Blob的对象转化为流:
java.io.InputStream inputStream =blob.getBinaryStream();
(3)定义要写入的文件
File fileOutput = new File("c:/backa.jpg");
(4)文件的写入流的定义
FileOutputStream fo = new FileOutputStream(fileOutput);
(5)写入文件(流的写入技术,就不多讲了)
int c;
while ((c = inputStream.read()) != -1)
{
fo.write(c);
}
//END
java blob的更多相关文章
- Java BLOB 数据的插入与读取 操作
package com.lw.database; import java.io.FileInputStream; import java.io.FileOutputStream; import jav ...
- java blob 文件上传下载
1.文件上传 pojo中为byte[] 类型,数据库中对应为blob类型. 主要代码: FileInputStream fis = null; fis = new FileInputStream(ne ...
- Java Blob类型和String类型相互转换
1.String 转 Blob: String content = "Hello World!"; Blob blob = Hibernate.createBlob(content ...
- 7#Java基本语句语法
Java基本语句语法https://github.com/DuGuQiuBai/Java/blob/master/day03/day03%E6%80%BB%E7%BB%93.txt 1:位运算符(了解 ...
- 3#Java案例
以下内容引用Github地址https://github.com/DuGuQiuBai/Java/blob/master/day01/code/02_%E5%B8%A6%E6%B3%A8%E9%87% ...
- Java连载3-编译与运行阶段详解&JRE,JDK,JVM关系
·一. 1.JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html ...
- Java连载5-标识符、关键字和字面值
一.标识符 1.标识符定义:在java源程序中凡是可以自己命名的单词 2.标识符可以标识什么元素? (1)类名(2)方法名(3)变量名(4)接口名(5)常量名 等等 3.标识符的命名要求 (1)一个合 ...
- Java连载6-变量的要求
一.数据类型的作用 (1)不同的数据有不同的类型,不同的数据类型底层会分配不同的大小的空间 (2)数据类型是指程序在运行阶段应该分配多大的内存空间 二.变量要求 变量中存储的具体的“数据”必须和变量的 ...
- Java连载14-补码简介&浮点型整数
一.补码简介 1.计算机中的符号数有三种表示方式,即为:原码.反码.补码.三种表示方法均有符号位和数值位,符号位都是0表示正数,符号位都是1表示负数. 2.计算机中的数字的存储方式:在计算机系统中,数 ...
随机推荐
- 用户文件夹在Finder中消失的问题
这个问题最早有人报告说.在升级了10.9.3的机器上.用户文件夹(/Users)会在Finder中消失.可是非常多人没有这个问题.经过多人的重复查证,最后锁定在iTunes 11.2更新上.假设用户打 ...
- 【转】python中文转换url编码
今天要处理百度贴吧的东西.想要做一个关键词的list,每次需要时,直接添加 到list里面就可以了.但是添加到list里面是中文的情况(比如‘丽江’),url的地址编码却是'%E4%B8%BD%E6% ...
- vim使用指北 ---- Multiple Windows in Vim
多窗口打开多个文件 vim -o file1 file2 ... ---- 默认上下分割窗口 vim -0n file1 file2 ... ---- vim默认会上下等分n个窗口 分割窗口 :[v] ...
- 微信小程序 - 滑动显示地点信息(map)
演示效果如下: 资源如下 marker,png index.wxml <view class="map-container"> <map id="map ...
- Unity3D在WebPlayer模式下的异常上报探索
原地址:http://www.cnblogs.com/hisiqi/archive/2013/07/21/3203527.html 我们知道,Unity3D在WebPlayer的发布模式下是沙箱环境中 ...
- EXTJS4自学手册——图形行为(rotate,scale)
一.旋转图像: { xtype: 'button', text: '旋转的字', handler: function (btn) { Ext.create('Ext.window.Window', { ...
- Selenium2 Python 自己主动化測试实战学习笔记(五)
7.1 自己主动化測试用例 无论是功能測试.性能測试和自己主动化測试时都须要编写測试用例,測试用例的好坏能准确的体现了測试人员的经验.能力以及对项目的深度理解. 7.1.1 手工測试用例与自己主动化測 ...
- oci学习
http://www.cnblogs.com/ychellboy/archive/2010/04/16/1713884.html oci官方文档 Call Interface Programmer's ...
- margin: 0px auto; center 行类 块级
<html> <head> <title> biaoti </title> </head> <body style="bor ...
- 解决window10系统电脑插入耳机之后没有声音的问题
其实办法也是从百度百科上查到的 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 可能是因为自己某个不小心的操作更改了设置 1. 首先要点开设置按钮,在搜索栏输入控制面板 (当然知道控制面板在哪里的小伙伴就不用 ...