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进行处理大文件和批处理的更多相关文章

  1. jdbc mysql crud dao模型 sql注入漏洞 jdbc 操作大文件

    day17总结 今日内容 l JDBC 1.1 上次课内容总结 SQL语句: 1.外键约束:foreign key * 维护多个表关系! * 用来保证数据完整性! 2.三种关系: * 一对多: * 一 ...

  2. 利用jdbc处理oracle大数据---大文件和二进制文件

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  3. 使用JDBC处理Oracle大数据

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  4. JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  5. javaweb学习总结(三十四)——使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  6. JavaWeb(三十五)——使用JDBC处理Oracle大数据

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  7. javaweb(三十四)——使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  8. Mysql学习总结(13)——使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  9. 前端js怎么实现大文件G级的断点续传(分块上传)和分段下载

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

随机推荐

  1. EM算法(expectation maximization)

    EM算法简述 EM算法是一种迭代算法,主要用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计.EM算法的每次迭代由两步完成: E步,求期望 M步,求极大. EM算法的引入 如果概率模型的变 ...

  2. SUBMIT RM07DOCS【MB51】 获取返回清单,抓取标准报表数据

    *&---------------------------------------------------------------------* *& Report YT_SUBMIT ...

  3. java ReentrantLock可重入锁的使用场景

    摘要 从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些. 场景1:如果发现该操作已经在执行中则不再执行(有状态执行) a.用在定时任务时,如果任务执行时间可能超过下次 ...

  4. C#编写图书列表winform

    Book.cs文件 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  5. 剑指offer 面试31题

    面试31题: 题目:栈的压入.弹出元素 题:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...

  6. The Maximum Unreachable Node Set 【17南宁区域赛】 【二分匹配】

    题目链接 https://nanti.jisuanke.com/t/19979 题意 给出n个点 m 条边 求选出最大的点数使得这个点集之间 任意两点不可达 题目中给的边是有向边 思路 这道题 实际上 ...

  7. Confluent介绍

    Building a Scalable ETL Pipeline in 30 Minutes confluent介绍: LinkedIn有个三人小组出来创业了—正是当时开发出Apache Kafka实 ...

  8. 基于matlab的边缘提取方法的比较

    1.Matlab简述 Matlab是国际上最流行的科学与工程计算的软件工具,它起源于矩阵运算,已经发展成一种高度集成的计算机语言.有人称它为“第四代”计算机语言,它提供了强大的科学运算.灵活的程序设计 ...

  9. 为什么可以Ping通IP地址,但Ping不通域名?

    能否ping通IP地址,与能否解析域名是两回事不能ping通IP地址,说明对方禁止ICMP报文或对方没有开机等解析域名只是将域名翻译成IP地址,不论该IP地址是否能够正常访问 问题是ping域名的时候 ...

  10. mvn库

    http://maven.aliyun.com/nexus/content/groups/public/ http://mvnrepository.com/http://search.maven.or ...