JDBC中鲜为人知的中级应用

2024-01-08 06:48

本文主要是介绍JDBC中鲜为人知的中级应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在没有进入JDBC的高级应用前,我先来介绍一下一些"鲜为人知"的中级应用,说它是中
级应用,因为对JDBC有所了解的人都应该知道,说它"鲜为人知",我却没有在任何人的代
码中或我所见过的任何讲JDBC的书中有提到过,非常奇怪,这本来是JDBC规范啊.
    select * from table where datetimecol < now();这在mysql中可以正确运行.
    可是在另的数据库呢?
    select * from table where datatimecol < TO_DATE('yyyyMMMdd');
    这在oracle中可以,在mysql中可以吗?是什么让这些SQL语句不能通用?是数据库
专用涵数,那么我们要在改变数据库后除了个性Driver还要改代码吗?
    有没有通用的数据库涵数?有,只是我没见过几个人用过..................

    到目前为止,JDBC其实都实现了 SQL-2 ENTRY Level,而SQL-2 Transitional Level
也基本实现(我没有用过没有实现的).只有实现上面的规范,JDBC就实现以下"通用"功能.它
会把这些通用的语义,标题,存储过程,涵数转化为数据库对应的功能,所以你只要掌握这些通
用语法在JDBC中应用,就不要再为特定数据库编写特定代码:

    转义:{keyword parameter}

    还记得oracle中插入?吗?
    insert into table values ('aaa?aaa');什么?当然参数?不得不这样
    insert into table values ('aaa' | '?' | 'aaa');把?专门作为一个字符再和其
它字符连结.用通用转义:
    insert into table values ('aaa/?aaa') {escape /};
    
    存储过程(这个例是有人用过)
    {call procedure_Name[args]}
    对于有返回值的存储过程
    {? = call procedure_Name[args]}

    时间和日期:
    日期:{d 'yyyy-mm-dd'}
    在任何数据库中,都会把你给定的yyyy-mm-dd转化为该数据的日期形式

    insert into table values ('axman',{d '2003-07-28'});
    在oracle中会转换成:Jul 28,2003

    时间{t 'hh:mm:ss'},时间戳:{ts 'yyyy-mm-dd hh:mm:ss.f...'}

    标量涵数:
    {fn function([args])}
    这个可要记住了,再也不要调用数据库特定涵数了,只要
    insert into table values('axman',{fn CONCAT('1970-07-','11')});就可以在所有
实现SQL-2 Transitional Level的JDBC的数据库中运行,这些涵数要主包括:
    数学涵数,字符串涵数,日期涵数,系统涵数,转换涵数,因为涵数大多,我没法一个个列
出来,请你用上面刚学习的DatabaseMetadata类调用getNumericFunctions(),getStringFunctions()
getSystemFunctions(),getTimeDateFunctions 

这篇关于JDBC中鲜为人知的中级应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/582600

相关文章

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

C#中的Converter的具体应用

《C#中的Converter的具体应用》C#中的Converter提供了一种灵活的类型转换机制,本文详细介绍了Converter的基本概念、使用场景,具有一定的参考价值,感兴趣的可以了解一下... 目录Converter的基本概念1. Converter委托2. 使用场景布尔型转换示例示例1:简单的字符串到

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应