JAVA-JDBC: (3)操作日期类型和CLOB、BLOB类型

activemq_CVE-2015-5254_漏洞复现_源码分析 ActiveMQ-CVE-2015-5254 阅读详情

1. JDBC操作oracle日期类型:

1.1 oracle数据库日期格式中常见的两个函数:

to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错。即按照第二个参数的格式解释第一个参数。

to_char(日期,"转换格式" ) 即把给定的日期按照“转换格式”转换。

例如:

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;
select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh24:mi:ss') from dual 

注释:转换的格式:

表示year的:

  • y 表示年的最后一位
  • yy 表示年的最后2位
  • yyy 表示年的最后3位
  • yyyy 用4位数表示年

表示month的:

  • mm 用2位数字表示月;
  • mon 用简写形式 比如11月或者nov ;
  • month 用全称 比如11月或者november

表示day的:

  • dd 表示当月第几天;
  • ddd表示当年第几天;
  • dy 当周第几天 简写 比如星期五或者fri;
  • day当周第几天 全写 比如星期五或者friday。

表示hour的:

  • hh 2位数表示小时 12进制;
  • hh24 2位数表示小时 24小时

表示minute的:

  • mi 2位数表示分钟

表示second的:

  • ss 2位数表示秒 60进制

表示季度的:

  • q 一位数 表示季度 (1-4)

另外还有ww 用来表示当年第几周 w用来表示当月第几周。

24小时制下的时间范围:00:00:00-23:59:59

12小时制下的时间范围:1:00:00-12:59:59

1.2 注意

我们在应用层用到的日期类型是 java.util包中,而在jdbc中的数据类型是java.sql包中,所以我们在处理时要做相应的转换。


2. JDBC操作 大型文本 Clob 和大型字节 Blob

2.1.1 向数据库中 添加Clob数据
ps.setCharacterStream(int parameterIndex,
                        Reader reader)
                        throws SQLException
ps.setClob(int parameterIndex,
             Clob x)
             throws SQLException
ps.setClob(int parameterIndex,
             Reader reader)
             throws SQLException
2.1.2 从数据库中读取 Clob数据
InputStream is = rs.getAsciiStream(String columnLabel)
                           throws SQLException
Reader reader = rs.getCharacterStream(String columnLabel)
                          throws SQLException
Clob clob = rs.getClob(String columnLabel)
             throws SQLException
2.2.1 向数据库中添加 Blob数据
ps.setAsciiStream(int parameterIndex,
                    InputStream x)
                    throws SQLException
ps.setBinaryStream(int parameterIndex,
                     InputStream x,
                     int length)
                     throws SQLException
ps.setBlob(int parameterIndex,
             Blob x)
             throws SQLException
ps.setBlob(int parameterIndex,
             InputStream inputStream)
             throws SQLException
2.1.2 从数据库中读取 Clob数据
InputStream is = rs.getAsciiStream(String columnLabel)
                           throws SQLException
InputStream ips = rs.getBinaryStream(String columnLabel)
                          throws SQLException
Blob blob = rs.getBlob(String columnLabel)
             throws SQLException

3. 简单示例代码:

package jdbc.dateclobblob;

import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

import oracle.sql.BLOB;

public class JDBCDateBlobClob {


    /**
     * 向数据库中插入日期类型数据
     * @throws SQLException 
     * @throws IOException 
     */
    public static void createDCB(int id, String name,Date date,Reader reader,InputStream ins) throws SQLException, IOException{
        Connection conn = null;
        PreparedStatement ps = null;
        int resultNum;
        String sql;
        //我们在应用层一般是针对的Util包中的时期类型、而数据库中的日期类型是java.sql中的日期类型;
        try{
            conn = JDBCUtils.getConnection();
            sql = "insert into dateclobblob values(?,?,?,?,?)";
            ps = conn.prepareStatement(sql);
            ps.setInt(1, id);
            ps.setString(2, name);

            //由于db中使用的是java.sql中的Date,所以要转化。
            ps.setDate(3,new java.sql.Date(date.getTime()));

            //clob是大型的文本,所以这里可以用
            //ps.setAsciiStream(int, x);文本中都是Ascii码中的字符 或
            //ps.setCharacterStream(int,x);
            ps.setCharacterStream(4, reader);

            //blob是大型的二进制(小于4G)
            ps.setBinaryStream(5, ins);

            resultNum = ps.executeUpdate();
            System.out.println("resultNum = "+resultNum);
        }finally{
            reader.close();
            JDBCUtils.free(null, ps, conn);
        }
    }

    public static void readDCB(int id) throws SQLException, IOException{
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;

        Date date= null;
        Reader reader = null;
        InputStream ips = null;

        File paperFile = new File("src/otherFile/clob.txt");
        File photoFile = new File("src/otherFile/photo.jpg");

        Writer writer = new BufferedWriter(new FileWriter(paperFile));
        char[] cbuf = new char[1024];
        int num;
        OutputStream ops = new BufferedOutputStream(new FileOutputStream(photoFile));
        byte[] obuf = new byte[1024];
        int oNum;

        String sql;
        //我们在应用层一般是针对的Util包中的时期类型、而数据库中的日期类型是java.sql中的日期类型;
        try{
            conn = JDBCUtils.getConnection();
            sql = "select name, birthday, paper, photo from dateclobblob where id = ?";
            ps = conn.prepareStatement(sql);
            ps.setInt(1,id);

            rs = ps.executeQuery();
            while(rs.next()){
                date = new Date(rs.getDate("birthday").getTime());
                System.out.println("date is :"+date);

                //处理clob;
                reader = rs.getCharacterStream("paper");
                //Clob clob = rs.getClob("paper");
                //reader = clob.getCharacterStream();

                //处理blob
                ips = rs.getBinaryStream("photo");
                //Blob blob = rs.getBlob("photo");
                //ips = blob.getBinaryStream();

                while((num = reader.read(cbuf))!=-1){
                    writer.write(cbuf, 0, num);
                    writer.flush();
                }

                while((oNum = ips.read(obuf))!=-1){
                    ops.write(obuf, 0, oNum);
                    ops.flush();
                }
            }
        }finally{
            reader.close();
            writer.close();

            ops.close();
            ips.close();
            JDBCUtils.free(rs, ps, conn);
        }
    }
    public static void main(String[] args) throws SQLException, IOException {
        int id =3;
        String name = "lisi";
        Date date = new Date();
        Reader reader = new BufferedReader(new FileReader(new File("src/jdbc/two/JDBCCRUD.java")));
        InputStream ins = new BufferedInputStream(new FileInputStream(new File("src/otherFile/a3.jpg")));
        createDCB(id,name,date,reader,ins);

        readDCB(2);
    }

}
低功耗模式下的看门狗使用 最近用国产芯片AT32在做一个低功耗的项目,为了实现低功耗模式下的定时唤醒,我选择的是使用相对比较简单的看门狗来做,下面就分享一下使用过程~ 为了最大限度的降低功耗,我用的是待机模式,先看看几种低功耗模式以及唤醒的区别: 而看门狗AT32提供了两种,分别是独立看门狗(IWDG)和窗口看门狗(WWDG),其区别大概有以下几点: 1、独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效;窗口看门狗由从 APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常 阅读详情

相关推荐

基于Codex/Claude Code的学术技能包:13个Skill实现科研全流程自动化

写论文最头疼的是什么?是面对海量文献无从下手,还是实验数据一团乱麻,或者是好不容易有了结果,却卡在写作和格式调整上?如果你也经历过从选题到投稿的完整科研周期,就会明白每个环节都可能消耗大量时间精力。今天要分享的这套工具链,正是为了解决这些痛点而生——基于 Codex 和 Claude Code 平台的学术技能包(Academic Skills),它通过 13 个精心设计的 Skill,将一篇论文从 0 到 1 的全流程自动化、标准化,让你能更专注于研究本身。 这套技能包并非单一工具,而是一个覆盖文献阅读、数

weixin_33979203的博客 541

JDBC中日期时间的处理

1.数据库中的日期时间类型与Java类中日期时间的对应 日期类型用java.sql.Date 时间类型用java.sql.Time 日期/时间类型用java.sql.Timestamp 范例:在oracle数据库中通过, select sysday from dual 获取当前时间,在通过ResultSet获取查询结果时,用:getTimestamp(),可以把年月日时分秒都取出...

SWK1663093964的博客 1109

用74LS160和74LS194搭个复古流水灯:从Multisim仿真到面包板实战(附完整电路图)

本文详细介绍了如何使用74LS160和74LS194芯片搭建复古流水灯电路,从Multisim仿真到面包板实战的全过程。通过解析核心器件特性、提供完整材料清单、仿真验证电路逻辑,以及实际搭建中的布局规划和调试技巧,帮助电子爱好者掌握这一经典数字电路设计项目。

weixin_28736355的博客 388

JDBC中的日期类型

Java中用类java.util.Date对日期/时间做了封装,此类提供了对年、月、日、分、秒、毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等。 java.util.Date中采用一个long型的数来保存日期/时间,它表示从格林威治时间1970年1月1日00点00分00秒至今的毫秒数。 JDBC中,在这个类的基础之上扩展了3个类:java.sql.Date,j...

bobozai86的博客 674

Pinocchio 安装教程|机器人学的必备库

安装pinocchio,不要安装pip3 install pinocchio!

darcsdn 1660

什么是plm系统?-数字化转型网

当今世界,产品研发能力是企业在激烈的市场竞争中保持战略优势的核心竞争力之一。如何有效地缩短产品研发周期、改善产品服务的设计迭代流程、有效降低产品的研发成本,也是企业面临的主要问题之一。PLM(Product Lifecycle Management,产品生命周期管理)在优化产品研发的全管理流程、增强企业产品的市场竞争力方面具有关键的作用。

cxo17757154043的博客 882

Jmeter的JDBC Request中,关于Oracle日期to_char/to_date的处理

仅支持如下写法: select * from T_E003_SEND_FEE where to_char(DT_SUMDATE,'yyyy-MM-dd') = '2019-05-05' 不支持,否则会报错: select * from T_E003_SEND_FEE where DT_SUMDATE = to_char(2019-05-05','yyyy-MM-dd')

猎摘互联网软件测试业界技术文章专用博客 471

YOLO26改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力YOLO26精度提升

RFAConv:创新空间注意力和标准卷积运算感受野空间特征是针对卷积核设计的,根据卷积核大小动态生成。以3×3卷积核为例,它由非重叠滑动窗口组成,每个窗口代表一个感受野滑块。

Limiiiing的博客 193

jdbc 日期时间相关的类型

jdbc 日期时间相关的类型     1、sql.Date   sql包中的日期类Date是util包中Date类的子类,实际上也是util.Date类的子集。它只处理年月日,而忽略小时和分秒,用以代表SQL的DATE信息。   Date类的构造方法为:   public Date(int year, int mouth, int day) 其中参数格式同util.Dat...

weixin_33695082的博客 277

分享一份小度在家1C系列NV2101刷机保姆级教程,轻松解锁第三方应用!(内含详细教程、刷机工具和救砖等工具)

分享一份小度在家1C系列NV2101刷机保姆级教程,轻松解锁第三方应用!(内含详细教程、刷机工具和救砖等工具)

XiaoqiangClub的博客 7129

5、Raspberry Pi CPU架构与多线程编程详解

本文详细介绍了Raspberry Pi的CPU架构(包括ARMv6Z、ARMv7-A和ARMv8-A),通过/proc/cpuinfo解析硬件信息,并深入探讨了多线程编程的核心技术。内容涵盖pthread库的使用,如线程创建、属性设置、等待与分离、线程同步机制(互斥锁),以及实际应用场景如多媒体处理和网络服务。同时强调了线程安全、死锁预防和资源管理等关键注意事项,帮助开发者在Raspberry Pi上构建高效稳定的多线程应用。

sre5engineer的博客 93

JDBC学习(四)时间类型

在Java代码中,java.sql包原则上不能出现在DAO以外的地方。 数据库和java中的时间类型的对应关系 DATE->java.sql.Date TIME->java.sql.Time TIMESTAMP->java.sql.Timestamp java.sql包下给出三个与数据库相关的日期时间类型,分别是: Date:表示日期,只有年月日,没有时分秒。会...

SICAUliuy的博客 665

基于YOLO26的实时目标追踪实战:从训练到视频追踪(附完整可视化代码)

核心组合:YOLO26(高精度检测)+ ByteTrack(稳定追踪)是实时目标追踪的最优工业组合,Ultralytics内置集成无需额外开发;训练优化:追踪场景需优先提升检测框精度(增加box损失权重),保证ID稳定性;可视化核心:为每个ID分配唯一颜色、绘制运动轨迹、显示FPS,是落地场景的必备功能;性能调优:轻量化模型+降分辨率+OpenVINO导出,可在边缘设备(如研华工控机)实现实时追踪。这套代码可直接复用到智慧园区、停车场、工业产线等场景,仅需修改park.yaml中的类别和。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 571

菜鸟学JDBC(三)

上一篇(http://blog.youkuaiyun.com/rowandjj/article/details/8918291)我们写了一个工具类,封装了一些比较频繁的操作,如注册驱动,建立连接,释放资源等。另外我们还简单介绍了一下Statement和preparedStatement的区别。 这次呢,我们学习简单的增删改查以及对不同类型数据的处理。 请看增删改查的例子: package biogDem

RowandJJ 2624

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

07-hibernate中的Java类型映射

Java类型映射

zmt0104的博客 254

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JDBC常见操作

目录 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 记录Java对mysql数据库进行常见操作。 1、对表中数据的增删改查。 2、批量插入数据。 3、对数据库日期类型的插入与查询 4、clob、blob的操作。 一、对表中数据的增删改查。 首先准备好user表创建如下: creat table user( id int, name va.

weixin_48288351的博客 629

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JDBC日期类型问题与JDDC处理MySQL大数据

一、JDBC查询与添加Date类型的数据 基本上的数据操作很方便,但是仍然还是有些数据类型比较的复杂,比如日期类型、大文本数据、二进制的数据,这些方法都有其特殊性,所以操作起来会比较的复杂.。 1、添加与获取日期类型的数据。 1、首先是先建立我们的数据库工具类,这个方法之后就不写了。   package com.luther.Date; import java.sql.*; pub...

weixin_40684476的博客 573

数据库decimal对应java什么类型_数据库类型和java类型对应关系 | 学步园

类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述VARCHAR L+N VARCHAR java.lang.String 12CHAR N CHAR java.lang.String 1 字符型BLOB L+N BLOB java.lang.byte[] -4 二进制型TEXT 65535 VARCHAR java.lang.String -1 text文本...

weixin_32183107的博客 3975

JDBC 获取表中列名以及列的类型

有时候我们在做数据迁移的时候会遇到这种需求,将一张含有二进制字段的表中的数据完整的迁移到另一张表中 (注意: 将之前的BOLB类型改为COLB类型 ) 考虑这种情况 : 1.先创建一张新的表 2.将类型改掉 3.复制表中的数据到新表中 可是 如果老的表中含有日期字段 在使用程序添加值的时候会出现 *列在此处不允许的错误* 那么这种情况 需要转换表中日期类型 在insert语句中使...

aozhi7907的博客 1048

实测最全:SpringBoot3 + 达梦 DM9 无效的列类型、驱动适配失败终极解决方案

SpringBoot3 + 达梦 DM9 的适配问题,本质上是JDBC 规范版本不兼容和数据库类型映射差异导致的。使用正确版本的官方驱动配置经过生产验证的连接池参数启用 Hibernate 内置的官方方言添加全局 CLOB 和 BLOB 类型处理器正确处理特殊字段和分页功能就能解决 99% 的驱动适配和列类型错误。

雨辰AI的博客 760

Java 时间和日期类型的 Hibernate 映射及二进制映射及大文本的映射

一.ava 时间和日期类型的 Hibernate 映射 在 Java 中, 代表时间和日期的类型包括: java.util.Date 和 java.util.Calendar. 此外, 在 JDBC API 中还提供了 3 个扩展了 java.util.Date 类的子类: java.sql.Date, java.sql.Time 和 java.sql.Timestamp, 这三个类分别和标准

CSC_Cockroach的博客 954

java存取oracle中的COLB类型数据

一、如何去处理Clob、BLOB的大类型   CLOB可用于存放大文本数据,最多可存储4GB数据,在应用开发中比较常见.java提供的sql.Clob类与之对应.它提供两个方法来读取Clob的数据:   getCharacterStream() 方法返回按unicode编码的输入流(java.io.Reader对象)   getAsciiStream() 方法返回按ASCII编码的输入流(j

Ethan_Fu的专栏 2851

JDBC(四)、jdbc日期、文本、二进制问题

java.sql.Types jdbc日期问题 java.sql包下的时间 他们都是java.util.Date的子类 Date:表示日期,只有年月日,没有时分秒。会丢失时间; Time:表示时间,有年月日时分秒; Timestamp:表示时间戳,有年月日时分秒,以及毫秒。 java.util.Date java.util.Date – 年月日时分秒 java.util.Calendar –...

希望能解决大家的问题,也欢迎老哥们来骚扰技术交流业务中的问题 139

Hibernate内置数据类型与java数据类型的对应关系

Hibernate的内置映射类型通常使用和java类型相同的名字,它能够把java基本类型、java时间和日期类型、java大对象类型及JDK中常用的java类映射到相应的标准SQL类型。   1、java基本数据类型对应的Hibernate映射类型  2、java时间和日期类型对应的Hibernate映射类型 在java中,代表时间和日期的类型包括:java.util.Date和ja...

Me 291

hibermysql 映射 mysql restrict_Java和mysql的数据类型对应

[ Java数据类型 Hibernate数据类型 标准SQL数据类型(PS:对于不同的DB可能有所差异) byte、java.lang.Byte byte TINYINT short、java.lang.Short short SMALLINT类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述VARCHAR L+N VARCHAR java.la...

weixin_42128558的博客 121

JDBC编程(一)-2

【实体类】 由于Java语言是面向对象编程的,而我们所使用的数据库面向关系的关系型数据库,因此在Java程序就会出现面向关系的数据库处理代码,从而违反Java语言面向对象的宗旨。为了解决这类问题,提出一个采用实体类来封装数据库中存储的数据记录以及它们之间的关系,从而解决Java语言与数据库操作的不统一性。 实体类与表对应(即User类对应表t_user),实体类中的属性与表中的字段对应 表中...

树洞树洞-单纯记录 843
上一篇: JAVA-JDBC: (2) 数据库的粗略的CRUD及SQL注入问题
下一篇: JAVA-JDBC: (4) DAO设计思想及骨架搭建
Coder-Qian
博客等级 码龄11年 63粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值