Java -- JDBC mysql读写大数据,文本 和 二进制文件
1. 往mysql中读写字符文本
public class Demo1 {
	/* 创建数据库
	 create database LOBTest;
	 use LOBTest;
	 create table testclob
	 (
	 	id int primary key auto_increment,
	 	resume text
	 );
	 */
	@Test
	public void add() {
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		try
		{
			conn = JdbcUtils.getConnection();
			String sql = "insert into testclob(resume) values(?)";
			st = conn.prepareStatement(sql);
			String path = Demo1.class.getClassLoader().getResource("db.properties").getPath();
			File file = new File(path);
			FileReader fr = new FileReader(file);
			st.setCharacterStream(1, fr, file.length());
			int num = st.executeUpdate();
			if(num > 0)
				System.out.println("插入成功!!");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			JdbcUtils.release(conn, st, rs);
		}
	}
	@Test
	public void read()
	{
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		try
		{
			conn = JdbcUtils.getConnection();
			String sql = "select resume from testclob where id = ?";
			st = conn.prepareStatement(sql);
			st.setInt(1, 2);
			rs = st.executeQuery();
			if(rs.next())
			{
				Reader reader = rs.getCharacterStream("resume");
				FileWriter fw = new FileWriter("write.txt");
				char[] buffer = new char[1024];
				int len = 0;
				while( (len=reader.read(buffer)) > 0)
				{
					fw.write(buffer, 0, len);
				}
				fw.close();
				reader.close();
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			JdbcUtils.release(conn, st, rs);
		}
	}
}
2. 往mysql中读写二进制文件
public class Demo2 {
	/*
	 create table testblob
	 (
	 	id int primary key auto_increment,
	 	image blob
	 );
	 */
	@Test
	public void add()
	{
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		try
		{
			conn = JdbcUtils.getConnection();
			String sql = "insert into testblob(image) values(?)";
			st = conn.prepareStatement(sql);
			String path = Demo1.class.getClassLoader().getResource("1.JPG").getPath();
			File file = new File(path);
			FileInputStream sf = new FileInputStream(file);
			st.setBinaryStream(1, sf, file.length());
			int num  = st.executeUpdate();
			if(num > 0)
				System.out.println("插入成功!!");
			sf.close();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			JdbcUtils.release(conn, st, rs);
		}
	}
	@Test
	public void read()
	{
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		try
		{
			conn = JdbcUtils.getConnection();
			String sql = "select image from testblob where id = ?";
			st = conn.prepareStatement(sql);
			st.setInt(1, 1);
			rs = st.executeQuery();
			if(rs.next())
			{
				InputStream is = rs.getBinaryStream("image");
				byte[] buffer = new byte[1024];
				int len = 0;
				FileOutputStream fos = new  FileOutputStream("1_back.JPG");
				while( (len=is.read(buffer))>0 )
				{
					fos.write(buffer, 0, len);
				}
				fos.close();
				is.close();
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			JdbcUtils.release(conn, st, rs);
		}
	}
}												
											Java -- JDBC mysql读写大数据,文本 和 二进制文件的更多相关文章
- 使用JDBC处理Oracle大数据
		一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ... 
- 利用jdbc处理oracle大数据---大文件和二进制文件
		一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ... 
- JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据
		一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ... 
- JavaWeb(三十五)——使用JDBC处理Oracle大数据
		一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ... 
- java 跨数据库导入大数据
		java 跨数据库导入大数据 /** * java程序跨服务器跨数据库批量导入导出百万级数据 * @param args * @throws Exception */ public static vo ... 
- C#大数据文本高效去重
		C#大数据文本高效去重 转载请注明出处 http://www.cnblogs.com/Huerye/ TextReader reader = File.OpenText(@"C:\Users ... 
- mysql处理大数据量的查询速度究竟有多快和能优化到什么程度
		mysql处理大数据量的查询速度究竟有多快和能优化到什么程度 深圳-ftx(1433725026) 18:10:49 mysql有没有排名函数啊 横瓜(601069289) 18:13:06 无 ... 
- 黑马基础阶段测试题:创建一个存储字符串的集合list,向list中添加以下字符串:”C++”、”Java”、” Python”、”大数据与云计算”。遍历集合,将长度小于5的字符串从集合中删除,删除成功后,打印集合中的所有元素
		package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; ... 
- mysql的大数据量的查询
		mysql的大数据量查询分页应该用where 条件进行分页,limit 100000,100,mysql先查询100100数据量,查询完以后,将 这些100000数据量屏蔽去掉,用100的量,但是如果 ... 
随机推荐
- 回溯法——n后问题
			问题描述: 在n*n的棋盘上放置彼此不受攻击的n个皇后.按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子.n后问题等价于在n*n格的棋盘上放置n个皇后,任何2个皇后不放在同一行 ... 
- C++ 基础知识回顾(string基础、智能指针、迭代器、容器类)
			[1] string基础 [1.1] string 的构造 #include <iostream> #include <string> int main() { using n ... 
- Sql注入基础一
			凡是带入数据库查询的都有可能是注入. 整个数据包 Sql注入原理? 网站数据传输中,接受变量传递的值未进行过滤,导致直接带入数据库查询执行的操作问题. Sql注入对于渗透的作用? 获取数据(网 ... 
- 【转】@javax.ws.rs Webservice注解
			用于webservice. 1.路径 @javax.ws.rs.Path 标识要请求的资源类或资源方法的uri路径. 例,@Path("animal"),表示下一层路径是anima ... 
- vue禁止复制的方式
			普通网页禁止复制的功能这里不再叙述,自行学习 https://blog.csdn.net/qq_32963841/article/details/84656752 这里简单写一下vue中怎么禁止使用复 ... 
- 洛谷 P2261 [CQOI2007]余数求和
			洛谷 一看就知道是一个数学题.嘿嘿- 讲讲各种分的做法吧. 30分做法:不知道,这大概是这题的难点吧! 60分做法: 一是直接暴力,看下代码吧- #include <bits/stdc++.h& ... 
- Axis 调用.net WebServic接口出现:验证消息的安全性时错误发生
			解决方法:call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP12_CONSTANTS); 參考:http://www.blogjav ... 
- CSRF(Cross Site Request Forgery, 跨站请求伪造)
			一.CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患, ... 
- python基础知识——包
			包是一种通过使用“模块名”来组织python模块的名称空间的方式. 无论是import形式还是from...import形式,凡是在导入语句中(不是在使用时)遇到带点的,就需要意识到——这是包. 包是 ... 
- Python基础(10)_内置函数、匿名函数、递归
			一.内置函数 1.数学运算类 abs:求数值的绝对值 divmod:返回两个数值的商和余数,可用于计算页面数 >>> divmod(5,2) (2, 1) max:返回可迭代对象中的 ... 
