问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问java如何往数据库里插入二进制数据;

发布网友 发布时间:2022-04-07 17:43

我来回答

2个回答

懂视网 时间:2022-04-07 22:04

        来两个Demo看看JDBC是怎么操作文本和二进制文件的。

        CLOB:

 

package com.wxisme.jdbcclob;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;


/**
 * 数据库中对文本对象的操作。
 * @author wxisme
 *
 */

public class CLOBTest {
	/**
	 * 标准时间对象转换成long
	 * @param date
	 * @return long
	 */
	public static long dateTolong(String date) {
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		long time = 0;
		try {
			time = format.parse(date).getTime();
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		return time;
	}
	/**
	 * 向数据库中插入一条带有Clob文本对象字段的记录
	 */
	public void test1() {
		Connection conn = null;
		PreparedStatement ps = null;
		
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		String c = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8";
		try {
			conn = DriverManager.getConnection(c, "root", "1234");
			String sql = "insert into student (name,pswd,time,stime,myImg) values(?,?,?,?,?)";
			ps = conn.prepareStatement(sql);
			
			java.sql.Date date = new java.sql.Date(dateTolong("2015-5-14 9:25:32"));
			Timestamp stime = new Timestamp(dateTolong("2015-5-14 9:25:32"));
			ps.setString(1, "张三");
			ps.setString(2, "123456");
			ps.setDate(3, date);
			ps.setTimestamp(4, stime);
			ps.setClob(5, new FileReader("e:" +File.separator + "a.txt"));
			ps.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		
		//从数据库中读取Clob文本对象并输出
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		Reader r = null;
		
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		String c = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8";
		try {
			conn = DriverManager.getConnection(c, "root", "1234");
			String sql = "select myImg from student where id=?";
			ps = conn.prepareStatement(sql);
			ps.setInt(1, 1);
			
			rs = ps.executeQuery();
			
			while(rs.next()) {
				Clob clob = rs.getClob("myImg");
				r = clob.getCharacterStream();
				int t = 0;
				while((t=r.read()) != -1) {
					System.out.println((char)t);
				}
				
			}
			
			
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				r.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
	}

}

 

 BLOB:

package com.wxisme.jdbcblob;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 * 数据库操作二进制文件 Blob类的使用
 * @author wxisme
 *
 */
public class BLOBTest {
	/**
	 * 向数据库中插入二进制
	 */
	public void test1() {
		Connection conn = null;
		PreparedStatement ps = null;
		
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		String c = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8";
		try {
			conn = DriverManager.getConnection(c, "root", "1234");
			String sql = "insert into student (img) values(?)";
			ps = conn.prepareStatement(sql);
			ps.setBlob(1, new FileInputStream("e:" + File.separator + "b.jpg"));
			
			ps.executeUpdate();
			
			
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}finally {
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args) {
		
		//从数据库中读取二进制文件并恢复
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		InputStream r = null;
		OutputStream os = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		String c = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8";
		try {
			conn = DriverManager.getConnection(c, "root", "1234");
			String sql = "select img from student where id=?";
			ps = conn.prepareStatement(sql);
			ps.setInt(1, 3);
			rs = ps.executeQuery();
			 
			os = new FileOutputStream(new File("e:/e.jpg"));
			while(rs.next()) {
				Blob blob = rs.getBlob("img");
				r = blob.getBinaryStream();
				int t = 0;
				while((t=r.read()) != -1) {
					os.write(t);
				}
				
			}
			
			
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				r.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
			try {
				os.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

 

JDBC处理文本和二进制文件

标签:

热心网友 时间:2022-04-07 19:12

用流读入图片,再用byte[]数组读取转换流中的图片数据转成二进制.接着用JDBC把二进制插入数据库存 oFileInputStream fis = null;// 处理硬盘的低端,输入流 o try { o fis = new FileInputStream( "图片路径" );// 低端流绑定硬盘上的文件 o o byte [] buffer = new byte[ 1024 ]; o while ( true ) {// 循环读取流里的数据 o int len = fis.read( buffer ); o if ( -1 == len ) {// 如果已经读到文件末尾 o break; o } o ........//JDBC插入代码只要把上面的buffer循环插入数据库存o } o } catch ( Exception e ) { o e.printStackTrace(); o } finally { o try { o fis.close(); o } catch ( Exception e ) { o e.printStackTrace(); o } o } o}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
上午去烧香,晚上梦见僵尸要吃我 ...电梯顶层的上方看到死人半个身子 我我掉头走后 被吓醒了 郁_百度知... 我两次梦见去逛商场然后电梯(上升的,带扶手的)塌了,丧尸出来,我和一群... 梦见在丧尸要咬我然后被我一脚踢进电梯它里半个身体出来了还想咬,然后... 香港hpv九价预约官网网址 电脑所有的电线有哪些电脑有哪些连接线 电脑电源那么多线起什么作用电脑电源连接线有多少个基本的都有什么作用... 显示器要接几根线 ...连接线是9芯的,谁知道是哪几条有用,哪几条没有用,各是什么颜色... mbr平板膜可以倒着放么 南沙群岛到底由多少个岛屿、沙洲和礁滩组成? 南沙群岛共多少个岛礁 你好,请问如果汽车出险,第三者责任险赔偿范围都有哪些?比如对开车 马克扎克伯格当年SAT是不是考了满分 TCL的电视,型号L32F2300B,能将手机上的视频投到电视也就是无线投屏吗,如果可以,怎样操作 马克扎克伯格失败之处禹成功之处 扎克伯格再怼苹果隐私政策,他的观点是什么? 扎克伯格什么来头,请回答 谁是马克·扎克伯格? 为什么有人认为马克扎克伯格人品极差 扎克伯格在电影社交网络中的两场官司真有其事吗? 股东因何起诉扎克伯格的? 马克·扎克伯格的人物评价 为什么扎克伯格被哈佛开除的最新相关信息 梦见老公接孩子放学卡着了还缝了巴 作为Facebook创始人的扎克伯格,为什么会被群嘲为机器人? 天快亮做了一个梦梦到我接我的儿女放学看到-条蛇然后蛇追着我跑,我们拼命的跑回家躲起来了! 新西游记 韩国综艺为什么不更新了 你怎么看韩综《新西游记》中的文化争议? 《新西游记》是韩国综艺节目吗? 在家做啤酒蛋卷时,怎么才能让蛋卷更入味? 蔬菜鸡蛋卷凉了会有腥味吗? 鸡蛋卷怎么加各种味道 蛋卷,哪里的好吃! 日式鸡蛋卷第二天还能吃吗 我之前在超市买了一包芝士片,还没吃完,放冷冻里面了,现在因为外出工作已经是快出一年了,还可以吃吗 鸡爪有几个脚趾 有人说真的五爪鸡,包括脚杆上那个爪,一共是6个爪对吗? 鸡有几只爪 鸡有五只脚,到底能不能吃? 为什么鸡只有4个脚指?而不是像人一样有5个? 吉士汀芝士片是要冷藏还是冷冻? 一只鸡脚上有五个爪子,两只脚上有十个鸡爪子,谁见过 鸡有几个趾头 请问一只鸡脚上又多少个爪子 鸡爪子有几个手指? 如何把QQ网名放小 8各字可以写上不大神们帮帮忙 qq网名的字怎么调小啊。。不知道怎么弄的头像看不到了,字变的超大。。。 怎样把QQ昵称字体变小 怎么把字体QQ网名的字缩小