一、时间类型

数据库类型与Java中类型的对应关系:

DATE->java.sql.Date:表示日期,只有年月日,没有时分秒,会丢失时间。

TIME->java.sql.Time:表示时间,只有时分秒,没有年月日,会丢失日期。

TIMESTAMP->java.sql.Timestamp:表示时间戳,有年月日时分秒,以及毫秒。

  • 领域对象(domain)中的所有属性不能出现java.sql包下的对象,即不能使用java.sql.Date
  • ResultSet#getDate()返回的是java.sql.Date()
  • PreparedStatement#setDate(int,Date),其中第二个参数也是java.sql.Date

时间类型的转换:

  • java.util.Date ->java.sql.Date、Time、Timestamp

    • 把util的Date转换成毫秒值
    • 使用毫秒值创建sql的Date、Time、Timestamp
  • java.sql.Date、Time、Timestamp->java.util.Date 
    • 这一不不需要处理了:因为java.sql.Date是java.util.Date的子类。  

java.util.Date date = new java.util.Date();

long l = date.getTime();

java.sql.Date sqlDate = new java.sql.Date(l);

二、大数据

所谓大数据,就是大的字节数据,或大的字符数据。标准SQL中提供了如下类型来保存大数据类型:

类型 长度
tinyblob 28-1B(256B)
blob 216-1B(64K)
mediumblob 224-1B(16M)
longblob 232-1B(4G)
tinyclob 28-1B(256B)
clob 216-1B(64K)
mediumclob 224-1B(16M)
longclob 232-1B(4G)

但是,在mysql中没有提供tinyclob、clob、mediumclob、longclob四种类型,而是使用如下四种类型来处理文本大数据:

类型 长度
tinytext 28-1B(256B)
text 216-1B(64K)
mediumtext 224-1B(16M)
longtext 232-1B(4G)

实例:

 1 package demo4;2 3 import demo3.JdbcUtils;4 import org.apache.commons.io.IOUtils;5 import org.junit.Test;6 import javax.sql.rowset.serial.SerialBlob;7 import java.io.*; 8 import java.sql.*; 9 10 public class Demo4 { 11 /** 12 * 把map3保存到数据库中、JdbcUtils为自建类 13 */ 14  @Test 15 public void fun1() { 16 Connection con = null; 17 PreparedStatement pstmt = null; 18  Blob blob; 19 try { 20 con = JdbcUtils.getConnection(); 21 String sql = "INSERT INTO tab_bin VALUES (?,?,?)"; 22 pstmt = con.prepareStatement(sql); 23 pstmt.setInt(1,1); 24 pstmt.setString(2,"薛之谦-一半.mp3"); 25 /** 26 * 需要得到Blob 27 * 1、我们有的是文件,目标是Blob 28 * 2、先把文件变成byte[] 29 * 3、再使用byte[]创建Blob 30 */ 31 byte[] bytes = IOUtils.toByteArray(new FileInputStream("/Users/Shared/薛之谦-一半.mp3")); 32 //使用byte[]创建Blob 33 blob = new SerialBlob(bytes); 34 //设置参数 35 pstmt.setBlob(3,blob); 36  pstmt.executeUpdate(); 37 } catch (SQLException e) { 38  e.printStackTrace(); 39 } catch (IOException e) { 40  e.printStackTrace(); 41 } finally { 42 try { 43 if (pstmt != null) pstmt.close(); 44 if (con != null) con.close(); 45 } catch (SQLException e) { 46  e.printStackTrace(); 47  } 48  } 49  } 50 /** 51 * 从数据库中读取map3 52 */ 53  @Test 54 public void fun2() { 55 Connection con = null; 56 PreparedStatement pstmt = null; 57 ResultSet rs = null; 58  Blob blob; 59 //1、得到连接 60 try { 61 con = JdbcUtils.getConnection(); 62 //2、给出select语句模板,创建pstmt 63 String sql = "SELECT * FROM tab_bin"; 64 pstmt = con.prepareStatement(sql); 65 //3、pstmt执行查询,得到ResultSet 66 rs = pstmt.executeQuery(); 67 //获取名为DATA列的数据 68 if (rs.next()) { 69 blob = rs.getBlob("DATA"); 70 //把Blob变成硬盘上的文件 71 /* 72 * 1、通过Blob得到输入流对象 73 * 2、自己创建输出流对象 74 * 3、把输入流的数据写到输出流中 75 * */ 76 InputStream in = blob.getBinaryStream(); 77 OutputStream out = new FileOutputStream("/Users/Mac/Downloads/薛之谦-一半2.mp3"); 78  IOUtils.copy(in, out); 79  } 80 } catch (SQLException e) { 81  e.printStackTrace(); 82 } catch (IOException e) { 83  e.printStackTrace(); 84 } finally { 85 try { 86 if (rs != null) rs.close(); 87 if (pstmt != null) pstmt.close(); 88 if (con != null) con.close(); 89 } catch (SQLException e) { 90  e.printStackTrace(); 91  } 92  } 93  } 94 }

当存储数据大于设定值时会报如下异常:

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4188642 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.

需要对mysql配置文件(Mac中 /etc/my.cnf)相应位置进行添加修改:

保存关闭,重启MySQL服务器即可解决。

转载于:https://www.cnblogs.com/gdwkong/p/7632912.html

JDBC入门(5)--- 时间类型、大数据相关推荐

  1. 视频教程-finereport从入门到实战视频教程-大数据

    finereport从入门到实战视频教程 阿里云大学,腾讯云特骋讲师,曾任光华电子大数据项目总监,精通数据采集,处理,可视化全流程技术,具有极强的数据思维及数据变现能力. 孟光焱 ¥128.00 立即 ...

  2. java从入门到精通_Java大数据:数据库开发从入门到精通

    在Java大数据开发任务当中,数据存储是非常关键的一环,涉及到分布式文件系统.分布式数据库,数据库是后端系统当中支持数据存储的重要组件.今天我们就来聊聊Java大数据,数据库开发从入门到精通,应该如何 ...

  3. mysql 数据库时间类型 datetime 数据在页面上显示一串数字, 用函数date_format( )转换格式 ;

    mysql 数据库时间类型 datetime 转换格式 数据库时间字段datetime可以使用date_format( )函数进行时间的转换. 数据库时间字段类型: 数据库查询结果: 没转换前页面显示 ...

  4. 大数据入门之什么是大数据?

    文章目录 1.什么是大数据? 字面意思: 专业解释: 再专业点: 2.大数据的特点-- 4V(Volume,Velocity,Variety)? 2.1Volume(大量) 2.2 Velocity( ...

  5. 大数据零基础入门学习必须知道大数据工程师证书汇总

    由于大数据的兴起与应用,数据科学家和数据分析师,以及具大数据技术工作能力的工程师和开发人员得到了青睐,并获得良好的回报.那么,行业人士如何获得这样的一份工作?那就是获取大数据认证. 数据和大数据分析正 ...

  6. 大数据框架之Hadoop:入门(一)大数据概论

    第1章 大数据概论 1.1大数据概念 大数据(Big Data):指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海 ...

  7. 从入门到放弃之大数据Hive

    开门见山,今天说说Hive!!! 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表, ...

  8. 大数据之-入门_Hadoop是什么---大数据之hadoop工作笔记0008

    hadoop 是基础架构,hive spark hbase都是基于hadoop才去实现的. 可以看到hadoop是一个生态圈,里面有hbase,bigtop, zookeeper,hama,solr, ...

  9. 从入门到高手:大数据领域就业和发展指南

    随着秋季校招落下帷幕,网上的各类招聘数据也已分布,大数据行业工程师以平均月薪11,600元领跑全国,成为"超高薪.高大上"的代名词.如果你学的是大数据相关专业,那么恭喜你,你的发展 ...

  10. Java向MySQL数据库插入时间类型Date数据时需要注意的问题

    MySQL默认的数据类型格式是:yyyy-MM-dd,如:2015-12-30 如下图: 因此我们在往MySQL数据库中插入数据时,需要先进行格式化.在java中,我们通常这样格式化日期: [java ...

最新文章

  1. SerialPort实现对串口COM的操作(有些纠结)
  2. 《食堂远程下单系统》需求规格说明书
  3. 必知必会的RocketMQ消息类型
  4. C:如何分解整数(从末位往前取以及从首位往后取)
  5. a*算法的时间复杂度_数据结构(1)——算法和时间复杂度
  6. 组态王能直接读取仪表数据吗_液晶多功能网络电力仪表PD800H
  7. linux常用命令和配置
  8. C++派生类的构造函数和析构函数
  9. python在电脑下载-Windows下下载及安装numpy、pandas及简单应用
  10. FreeSWITCH ODBC cdr
  11. 如何查找Steam好友代码(以及添加好友代码)
  12. SuperMap知识总结
  13. 不管计算机专业大学生还是职场老手,除了代码之外程序员必备的软技能有哪些?
  14. java/php/net/python驾校学员管理系统设计
  15. ORACLE 性能优化示例
  16. WeiXin miniApp Shortcuts
  17. linux 文件夹的作用是什么,Linux个文件夹的作用及含义
  18. PHP——函数夯实基础篇
  19. Apollo代码学习(六)—模型预测控制(MPC)
  20. ispm14:软考高项(信息系统项目管理师)重要考点

热门文章

  1. 用互联网模式打造智慧城市的“城市云”
  2. [Yii][RBAC]Yii中应用RBAC完全指南
  3. 在PS中读取敏感数据
  4. 2018.9.28 典型for循环特殊理解及其二维数组的理解
  5. cropper.js插件做图片上传裁剪图片大小
  6. 我的Python学习笔记(四):动态添加属性和方法
  7. 家庭路由器设置以及win10链接无线不显示登录密码 直接提示链接出错问题解决...
  8. 配置WindowsLiveWriter,写cnblogs博客
  9. 利用Word2010在博客园发布文章入门
  10. vue-cli 发布部署IIS