JDBC进行处理大文件和批处理
package cn.itcast.demo4; import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import javax.sql.rowset.serial.SerialBlob; import org.apache.commons.io.IOUtils;
import org.junit.Test; import cn.itcast.demo3.JdbcUtils; /**
* 大数据
* @author Administrator
*
*/
public class Demo4 { /**
* 将mp3保存到数据库中
*/
@Test
public void fun1() throws Exception{
/*
*得到Connection
*给出sql模板,创建pstmt
*设置sql模板中的参数
*调用pstmt中的executeUpdate()执行
*/
Connection con=JdbcUtils.getConnection();
String sql="INSERT INTO tab_bin VALUES(?,?,?)";
PreparedStatement pstmt=con.prepareCall(sql); pstmt.setInt(1, 1);
pstmt.setString(2, "陈粒-奇妙能力歌.mp3");
/**
* 需要得到Blob
* 我们有文件,目标是Blob
* 先将文件变成byte[]
* 再使用byte[]创建Blob
*/ byte[] bytes=IOUtils.toByteArray(new FileInputStream("E:\\KuGou\\陈粒 - 奇妙能力歌.mp3"));
Blob blob=new SerialBlob(bytes);
pstmt.setBlob(3, blob); pstmt.executeUpdate(); } @Test
public void fun2() throws Exception{
Connection conn=JdbcUtils.getConnection(); String sql="SELECT * FROM tab_bin";
PreparedStatement pstmt=conn.prepareStatement(sql); ResultSet rs=pstmt.executeQuery(); if(rs.next()){
Blob blob=rs.getBlob("resource");
InputStream in=blob.getBinaryStream();
OutputStream out=new FileOutputStream("e:/"+rs.getString("bname"));
IOUtils.copy(in, out);
}
}
}
JDBC进行批处理:
package cn.itcast.demo5; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException; import org.junit.Test; import cn.itcast.demo3.JdbcUtils; /**
* 批处理
* @author Administrator
*
*/
public class Demo5 { /**
* pstmt对象内部有集合
* 1、用循环疯狂向pstmt中添加sql参数,它自己有模板,使用一组参数和模板可以匹配出一条sql语句
* 2、调用它的执行批方法,完成向数据库发送!
*/
@Test
public void fun5() throws SQLException{
Connection conn=JdbcUtils.getConnection();
String sql="INSERT INTO t_stu VALUES (?,?,?,?)";
PreparedStatement pstmt=conn.prepareStatement(sql); for(int i=0;i<1000;i++){
pstmt.setInt(1, i+1);
pstmt.setString(2, "stu_"+i);
pstmt.setInt(3, i);
pstmt.setString(4, i%2==0?"男":"女"); pstmt.addBatch();
} long start=System.currentTimeMillis();
pstmt.executeBatch();
long end=System.currentTimeMillis();
System.out.println(end - start );
}
}
JDBC进行处理大文件和批处理的更多相关文章
- jdbc mysql crud dao模型 sql注入漏洞 jdbc 操作大文件
day17总结 今日内容 l JDBC 1.1 上次课内容总结 SQL语句: 1.外键约束:foreign key * 维护多个表关系! * 用来保证数据完整性! 2.三种关系: * 一对多: * 一 ...
- 利用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处理MySQL大数据
一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...
- JavaWeb(三十五)——使用JDBC处理Oracle大数据
一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...
- javaweb(三十四)——使用JDBC处理MySQL大数据
一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...
- Mysql学习总结(13)——使用JDBC处理MySQL大数据
一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...
- 前端js怎么实现大文件G级的断点续传(分块上传)和分段下载
需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...
随机推荐
- KVM虚拟化虚拟机支持虚拟化
一.开启的时候需要关闭所有虚拟机: 首先检查 KVM host(宿主机/母机)上的kvm_intel模块是否打开了嵌套虚拟机功能(默认是开启的): 1.modinfo kvm_intel | grep ...
- python之路 模块,序列化,迭代器,生成器
一.模块 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用python标准库的方法. 类似于函数式编程和面向过 ...
- hi3515 rtc驱动(ds1307/1339)驱动和示例
将驱动放入/extdrv中编译 部分驱动如下: #include <linux/module.h> #include <linux/miscdevice.h>#include ...
- P4309 [TJOI2013]最长上升子序列
题目 P4309 [TJOI2013]最长上升子序列 做法 最长上升序列的求法肯定是烂大街了 水题是肯定的,确定出序列的位置然后套个树状数组就好了(强制在线的话改成线段树维护前缀最值也行) 所以说这题 ...
- Linux的压缩命令(tar,gzip,zip)
打包和压缩.打包是指将一大堆文件或目录变成一个总的文件:压缩则是将一个大的文件通过一些压缩算法变成一个小文件. 这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你 ...
- start、run、join
首先得了解什么是主线程,当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread).主线程的重要性体现在两方面:1. 它是产生其他子线程的线程:2. 通常它必须最后完 ...
- php数组函数-array_keys()
array_keys()函数返回包含数组中所有键名的一个新数组 如果提供了第二个参数,则返回键值为该值得键名 如果strict参数指定为true,则php会使用全等(===)来严格检查键值的 数据类型 ...
- win7 与 Ubuntu 16.04 文件传送
win7 与 Ubuntu 16.04 文件传送 环境:主机系统为win7,虚拟机为vmware12, 虚拟系统为ubuntu 16.04 方案一: 通过虚拟机vmware的共享文件夹实现. 方案二: ...
- [Python] 弗洛伊德(Floyd)算法求图的直径并记录路径
相关概念 对于一个图G=(V, E),求图中两点u, v间最短路径长度,称为图的最短路径问题.最短路径中最长的称为图的直径. 其中,求图中确定的某两点的最短路径算法,称为单源最短路径算法.求图中任意两 ...
- java.lang.NullPointerException报错的几种情况
java.lang.NullPointerException报错的几种情况: 1.字符串变量未初始化: 2.接口类型的对象没有用具体的类初始化,比如: List stuList :这种情况就会报空指针 ...