深入浅出JDBC-操作时间与大对象(Clob/Blob)
一、时间(Date、Time、Timestamp)
java.sql.Date/java.sql.Time/java.sql.Timestamp extends java.util.Date
public class TimeData {
PreparedStatement pStatement=null;
//操作日期类型的数据
public void insertDate(Connection connection,long time){
try {
String sql="insert into user(regTime)values(?)";
pStatement=connection.prepareStatement(sql);
//插入的时间为当前日期
pStatement.setDate(1,new Date(time));
pStatement.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
DBUtil.getInstance().close(pStatement);
DBUtil.getInstance().close(connection);
}
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">操作时间类型的数据</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> insertTimestamp(Connection connection,<span style="color: #0000ff;">long</span><span style="color: #000000;"> time){
</span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
String sql</span>="insert into user(loginTime)values(?)"<span style="color: #000000;">;
pStatement</span>=<span style="color: #000000;">connection.prepareStatement(sql);
java.sql.Timestamp timestamp</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> java.sql.Timestamp(time);
</span><span style="color: #008000;">//</span><span style="color: #008000;">插入的时间为当前时间</span>
pStatement.setTimestamp(1<span style="color: #000000;">,timestamp);
pStatement.executeUpdate();
}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e){
e.printStackTrace();
}</span><span style="color: #0000ff;">finally</span><span style="color: #000000;"> {
DBUtil.getInstance().close(pStatement);
DBUtil.getInstance().close(connection);
}
}
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
*批量添加某一区间的数据
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> connection
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> first 注册时间
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> seconed 登录时间
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> rowNum 添加的记录的条数
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> insertBatch(Connection connection,<span style="color: #0000ff;">long</span> first,<span style="color: #0000ff;">long</span> seconed,<span style="color: #0000ff;">int</span><span style="color: #000000;"> rowNum){
</span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
String sql</span>="insert into user(regTime,loginTime) values(?,?)"<span style="color: #000000;">;
pStatement</span>=<span style="color: #000000;">connection.prepareStatement(sql);
</span><span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> i=0;i<rowNum;i++<span style="color: #000000;">){
</span><span style="color: #0000ff;">long</span> regTime=<span style="color: #0000ff;">new</span> Random().nextInt(100000000)+<span style="color: #000000;">first;
</span><span style="color: #0000ff;">long</span> loginTime=seconed-<span style="color: #0000ff;">new</span> Random().nextInt(10000000<span style="color: #000000;">);
pStatement.setDate(</span>1,<span style="color: #0000ff;">new</span><span style="color: #000000;"> java.sql.Date(regTime));
pStatement.setTimestamp(</span>2,<span style="color: #0000ff;">new</span><span style="color: #000000;"> Timestamp(loginTime));
pStatement.executeUpdate();
}
}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e){
e.printStackTrace();
}</span><span style="color: #0000ff;">finally</span><span style="color: #000000;"> {
DBUtil.getInstance().close(pStatement);
DBUtil.getInstance().close(connection);
}
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">插入指定时间的数据</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">long</span><span style="color: #000000;"> StringToDate(String dateString){
</span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
SimpleDateFormat sdf</span>=<span style="color: #0000ff;">new</span> SimpleDateFormat("yyyy-MM-dd hh:mm:ss"<span style="color: #000000;">);
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> sdf.parse(dateString).getTime();
} </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (ParseException e) {
e.printStackTrace();
}
</span><span style="color: #0000ff;">return</span> 0<span style="color: #000000;">;
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">查询日期、时间</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> query(Connection connection){
Statement statement</span>=<span style="color: #0000ff;">null</span><span style="color: #000000;">;
ResultSet rs</span>=<span style="color: #0000ff;">null</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
statement</span>=<span style="color: #000000;">connection.createStatement();
String sql</span>="select regTime,loginTime from user"<span style="color: #000000;">;
statement.executeQuery(sql);
rs</span>=<span style="color: #000000;">statement.executeQuery(sql);
</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(rs.next()){
Date date</span>=rs.getDate("regTime"<span style="color: #000000;">);
Timestamp ts</span>=rs.getTimestamp("loginTime"<span style="color: #000000;">);
System.out.println(date</span>+"-----"+<span style="color: #000000;">ts);
}
} </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SQLException e) {
e.printStackTrace();
}
}
}
二、时间单元测试
public class TestTimeData {
Connection connection</span>=<span style="color: #000000;">DBUtil.getInstance().getConnection();
TimeData timeData</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> TimeData();
@Test
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> insertDate(){
timeData.insertDate(connection,System.currentTimeMillis());
}
@Test
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> insertTimestamp(){
timeData.insertTimestamp(connection,System.currentTimeMillis());
}
@Test
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> insertAppointedDate(){
</span><span style="color: #008000;">//</span><span style="color: #008000;">插入指定时间</span>
<span style="color: #0000ff;">long</span> t=timeData.StringToDate("2017-01-01 15:30:00"<span style="color: #000000;">);
timeData.insertDate(connection,t);
}
@Test
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> insertBatchDate(){
</span><span style="color: #008000;">//</span><span style="color: #008000;">批量插入某一时间段时间</span>
<span style="color: #0000ff;">long</span> start=timeData.StringToDate("2016-01-01 12:50:20"<span style="color: #000000;">);
</span><span style="color: #0000ff;">long</span> end=timeData.StringToDate("2017-12-30 02:00:00"<span style="color: #000000;">);
timeData.insertBatch(connection,start,end,</span>50<span style="color: #000000;">);
}
@Test
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> query(){
timeData.query(connection);
}
}
三、大数据对象(Clob、Blob)
public class BigData{
PreparedStatement pStatement=null;
/**
* 插入海量文字通过读取本地文件
* @param filePath 文件的物理路径
* @param connection
*/
public void insertClobByReadFile(Connection connection,String filePath ) {
try {
String sql="insert into user(resume)values(?)";
pStatement=connection.prepareStatement(sql);
pStatement.setClob(1,new FileReader(new File(filePath)));
pStatement.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
DBUtil.getInstance().close(pStatement);
DBUtil.getInstance().close(connection);
}
}
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
* 读取存储在数据库的海量文字文件
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> queryClob(Connection connection,<span style="color: #0000ff;">int</span><span style="color: #000000;"> id) {
ResultSet rs</span>=<span style="color: #0000ff;">null</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
String sql</span>="select resume from user where id=?"<span style="color: #000000;">;
pStatement</span>=<span style="color: #000000;">connection.prepareStatement(sql);
pStatement.setInt(</span>1<span style="color: #000000;">,id);
rs</span>=<span style="color: #000000;">pStatement.executeQuery();
</span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (rs.next()){
Clob clob</span>=rs.getClob("resume"<span style="color: #000000;">);
Reader r</span>=<span style="color: #000000;">clob.getCharacterStream();
</span><span style="color: #0000ff;">int</span> temp=0<span style="color: #000000;">;
</span><span style="color: #0000ff;">while</span>((temp=r.read())!=-1<span style="color: #000000;">){
System.out.print((</span><span style="color: #0000ff;">char</span><span style="color: #000000;">)temp);
}
}
}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e){
e.printStackTrace();
}</span><span style="color: #0000ff;">finally</span><span style="color: #000000;"> {
DBUtil.getInstance().close(rs);
DBUtil.getInstance().close(pStatement);
DBUtil.getInstance().close(connection);
}
}
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
* 存储图片文件
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> connection
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> imgPath 图片的物理路径
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> insertBlob(Connection connection,String imgPath) {
</span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
pStatement</span>=connection.prepareStatement("insert into user(headImg) values(?);"<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">获得图片的输入流</span>
pStatement.setBlob(1,<span style="color: #0000ff;">new</span> FileInputStream(<span style="color: #0000ff;">new</span><span style="color: #000000;"> File(imgPath)));
pStatement.execute();
}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e){
e.printStackTrace();
}</span><span style="color: #0000ff;">finally</span><span style="color: #000000;"> {
DBUtil.getInstance().close(pStatement);
DBUtil.getInstance().close(connection);
}
}
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
* 获取图片文件,并且输入到本地:F:/hello.jpg。
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> connection
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> id
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> queryBlob(Connection connection,<span style="color: #0000ff;">int</span><span style="color: #000000;"> id){
ResultSet rs;
</span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
String sql</span>="select headImg from user where id=?"<span style="color: #000000;">;
pStatement</span>=<span style="color: #000000;">connection.prepareStatement(sql);
pStatement.setInt(</span>1<span style="color: #000000;">,id);
rs</span>=<span style="color: #000000;">pStatement.executeQuery();
</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(rs.next()){
</span><span style="color: #008000;">//</span><span style="color: #008000;">获得文件的blob对象</span>
Blob blob=rs.getBlob("headImg"<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">获取文件的输入流</span>
InputStream is=<span style="color: #000000;">blob.getBinaryStream();
</span><span style="color: #008000;">//</span><span style="color: #008000;">建立输出流用于输入图片查看结果</span>
OutputStream os=<span style="color: #0000ff;">new</span> FileOutputStream(<span style="color: #0000ff;">new</span> File("F:/hello.txt"<span style="color: #000000;">));
</span><span style="color: #0000ff;">int</span> temp=0<span style="color: #000000;">;
</span><span style="color: #0000ff;">while</span>((temp=is.read())!=-1<span style="color: #000000;">){
os.write(temp);
}
os.flush();
os.close();
}
}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e){
e.printStackTrace();
}
}
}
大数据对象单元测试
public class TestBigData {
//获取数据库连接
Connection connection=DBUtil.getInstance().getConnection();
BigData bigData=new BigData();
@Test
public void insertClob(){
try {
String filePath="F:/testclob.txt";
bigData.insertClobByReadFile(connection,filePath);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> queryClob(){
</span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
bigData.queryClob(connection,</span>1<span style="color: #000000;">);
} </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e) {
e.printStackTrace();
}</span><span style="color: #0000ff;">finally</span><span style="color: #000000;"> {
DBUtil.getInstance().close(connection);
}
}
@Test
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> insertBlob(){
String imgPath</span>="F:/testclob.txt"<span style="color: #000000;">;
bigData.insertBlob(connection,imgPath);
}
@Test
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> queryBlob(){
bigData.queryBlob(connection,</span>15906<span style="color: #000000;">);
}
}
深入浅出JDBC-操作时间与大对象(Clob/Blob)的更多相关文章
- JavaEE JDBC 读写LOB大对象
JDBC 读写LOB大对象 @author ixenos LOB 除了数字.字符串和日期之外,许多数据库还可以存储大对象,例如图片或其他数据, 在SQL中,二进制(字节型)大对象称为BLOB,字符型大 ...
- JDBC:数据库操作:处理大对象CLOB数据
目标: 了解大对象处理基本原理, 掌握CLOB数据的读,写操作. 可以使用CLOB类处理大文本数据. 大对象处理主要指CLOB和BLOB两种类型字段.可以大量存储文字. 要想在程序中处理这样的大数据操 ...
- JDBC 复习3 存取Oracle大数据 clob blob
1 目录结构记得导包咯 mysql oracle 2 代码,DBUtil工具类见前面的随笔博文 package dbex.mysql; import java.io.BufferedReader; i ...
- 内置对象Clob对从数据库表中取的字符大对象CLOB类型的列值进行读取操作
package readclobDemo.bao; import java.io.IOException; import java.io.Reader; import java.sql.Clob; i ...
- 处理大数据对象clob数据和blob数据
直接上下代码: package com.learn.jdbc.chap06; import java.io.File; import java.io.FileInputStream; import j ...
- Spring 让 LOB 数据操作变得简单易行,LOB 代表大对象数据,包括 BLOB 和 CLOB 两种类型
转自:https://www.ibm.com/developerworks/cn/java/j-lo-spring-lob/index.html 概述 LOB 代表大对象数据,包括 BLOB 和 CL ...
- oracle对大对象类型操作:blob,clob,nclob
1.基本介绍 Oracle和plsql都支持lob(large object) 类型,用来存储大数量数据,如图像文件,声音文件等.Oracle 9i realse2支持存储最大为4g的数据,or ...
- 使用 hibernate 存取大对象数据类型(clob和blob)
数据库表如下: book表 id 该表的主键.number类型. photo 代表图书的图片,blob类型. description 图书的描述,clob类型. 使用 hibernate3 往 boo ...
- oracle存储大文本clob、blob
oracle存储大文本clob.blob 1 package cn.itcast.web.oracle.util; 2 3 import java.sql.Connection; 4 import j ...
随机推荐
- usb_submit_urb 解释的够够的
/** * usb_submit_urb - issue an asynchronous transfer request for an endpoint * @urb: pointer to the ...
- 94.Binary Tree Inorder Traversal---二叉树中序非递归遍历
题目链接 题目大意:中序遍历二叉树.先序见144,后序见145. 法一:DFS,没啥说的,就是模板DFS.代码如下(耗时1ms): public List<Integer> inorder ...
- angular项目中使用jquery的问题
1.使用npm命令往项目中添加jQuery. npm install jquery --save 2.在你想要用jQuery的组件中添加. import * as $ from "jquer ...
- angular项目中使用angular-material2
Step 1: Install Angular Material and Angular CDK npm install --save @angular/material @angular/cdk n ...
- 用OpenSSL命令行生成证书文件
用OpenSSL命令行生成证书文件 1.首先要生成服务器端的私钥(key文件): openssl genrsa -des3 -out server.key 1024 运行时会提示输入密码,此密码用于加 ...
- droupout
当训练样本比较少时,为了防止过拟合,可以丢掉一些节点的连接,让某些隐含层结点不工作(即停止更新权值),采用部分连接的方式. 参考:http://blog.csdn.net/on2way/article ...
- pandas 数据结构的基本功能
操作Series和DataFrame中的数据的常用方法: 导入python库: import numpy as np import pandas as pd 测试的数据结构: Series: > ...
- [loj2116]「HNOI2015」开店 动态点分治
4012: [HNOI2015]开店 Time Limit: 70 Sec Memory Limit: 512 MBSubmit: 2452 Solved: 1089[Submit][Status ...
- Lunix含Ubuntu使用总结
错误 鼠标闪烁解决 系统设置->显示—>未知显示器->关闭->应用->选择当前配置 提示sudo: unable to resolve host ,亦即无法解析主机. 原 ...
- 前端JS框架系列之requireJS基础学习
1 背景 伴随着项目功能的不断扩充,客户体验的不断完善,实现交互逻辑的JS代码变得越来越多.起初,为了管理JS代码,我们把JS从页面中解放出来独立成文件,接着又把相似的交互代码提取到公共的JS页面中. ...