一、时间(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&lt;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)的更多相关文章

  1. JavaEE JDBC 读写LOB大对象

    JDBC 读写LOB大对象 @author ixenos LOB 除了数字.字符串和日期之外,许多数据库还可以存储大对象,例如图片或其他数据, 在SQL中,二进制(字节型)大对象称为BLOB,字符型大 ...

  2. JDBC:数据库操作:处理大对象CLOB数据

    目标: 了解大对象处理基本原理, 掌握CLOB数据的读,写操作. 可以使用CLOB类处理大文本数据. 大对象处理主要指CLOB和BLOB两种类型字段.可以大量存储文字. 要想在程序中处理这样的大数据操 ...

  3. JDBC 复习3 存取Oracle大数据 clob blob

    1 目录结构记得导包咯 mysql oracle 2 代码,DBUtil工具类见前面的随笔博文 package dbex.mysql; import java.io.BufferedReader; i ...

  4. 内置对象Clob对从数据库表中取的字符大对象CLOB类型的列值进行读取操作

    package readclobDemo.bao; import java.io.IOException; import java.io.Reader; import java.sql.Clob; i ...

  5. 处理大数据对象clob数据和blob数据

    直接上下代码: package com.learn.jdbc.chap06; import java.io.File; import java.io.FileInputStream; import j ...

  6. Spring 让 LOB 数据操作变得简单易行,LOB 代表大对象数据,包括 BLOB 和 CLOB 两种类型

    转自:https://www.ibm.com/developerworks/cn/java/j-lo-spring-lob/index.html 概述 LOB 代表大对象数据,包括 BLOB 和 CL ...

  7. oracle对大对象类型操作:blob,clob,nclob

     1.基本介绍 Oracle和plsql都支持lob(large object) 类型,用来存储大数量数据,如图像文件,声音文件等.Oracle 9i realse2支持存储最大为4g的数据,or ...

  8. 使用 hibernate 存取大对象数据类型(clob和blob)

    数据库表如下: book表 id 该表的主键.number类型. photo 代表图书的图片,blob类型. description 图书的描述,clob类型. 使用 hibernate3 往 boo ...

  9. oracle存储大文本clob、blob

    oracle存储大文本clob.blob 1 package cn.itcast.web.oracle.util; 2 3 import java.sql.Connection; 4 import j ...

随机推荐

  1. rabbitmq和kafka怎么选?【转】

    MQ框架非常之多,今天简单说一下有代表性的两个MQ(rabbitmq和kafka).经常会有人问rabbitmq和kafka到底哪个好呢?其实没有好与不好之分,只有哪个更合适,首先要根据自己项目的业务 ...

  2. LAMP网站架构解释

    对于大流量.大并发量的网站系统架构来说,除了硬件上使用高 性能的服务器.负载均衡.CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS).高性能的网页服务器(Web Serv ...

  3. LeetCode解题报告—— Best Time to Buy and Sell Stock

    Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of a gi ...

  4. jmeter------线程组(默认)

    Jmeter中的采样器必须要基于线程组. 一.添加线程组 在测试计划上右键,然后选择,如下图: 二.线程组界面 三.线程组界面配置说明 1.名称:线程组自定义名称: 2.注释:添加的一些备注说明信息, ...

  5. IEEEXtreme 10.0 - Counting Molecules

    这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Counting Molecules 题目来源 第10届IEEE极限编程大赛 https://www.hac ...

  6. 【LOJ】 #2008. 「SCOI2015」小凸想跑步

    题解 一道想法很简单的计算几何(由于我半平面交总是写不对,我理所当然的怀疑半平面交错了,事实上是我直线建错了) 首先我们对于两个凸包上的点设为\((x_0,y_0)\)和\((x_1,y_1)\)(逆 ...

  7. poj2078 Matrix(DFS)

    题目链接 http://poj.org/problem?id=2078 题意 输入一个n×n的矩阵,可以对矩阵的每行进行任意次的循环右移操作,行的每一次右移后,计算矩阵中每一列的和的最大值,输出这些最 ...

  8. CodeForces 803F Coprime Subsequences

    $dp$. 记$dp[i]$表示$gcd$为$i$的倍数的子序列的方案数.然后倒着推一遍减去倍数的方案数就可以得到想要的答案了. #include <iostream> #include ...

  9. 洛谷P3459 [POI2007]MEG-Megalopolis [树链剖分]

    题目传送门 MEG 题目描述 Byteotia has been eventually touched by globalisation, and so has Byteasar the Postma ...

  10. Python类总结-描述符__get__(),__set__(),__delete__()

    1 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),set(),delete()中的一个,这也被称为描述符协议 get():调用一个属性时,触发 set():为一 ...