JDBC之Java与SQL之间数据类型的联系

Kettle处理Sap Hana有关字段类型LONGBLOB问题 在使用kettle处理sap Hana内存数据库的时候,遇到一个字段Bug问题。使用VPN连接Hana之后,选择ACDOCA表,该表总共有424个字段。 选择预览(P),先查看数据: 报了一个错误,导致预览不了数据,原因是:Cannot convert SQL type VARBINARY to Java typy java sql.Blob。 说的是不能把SQL的二进制类型(VARBINARY)转换成Java类型的Blob。 可能原因是我们把sap Hana的ngdbc-2.4.76.jar包拷贝到k 阅读详情
原文链接: http://dev.youkuaiyun.com/develop/article/35/article/35/35077.shtm

大家都知道,Java和SQL各自有一套自己定义的数据类型(jsp的数据类型实际上就是Java的数据类型),我们要在Jsp 程序和数据库管理系统之间正确的交换数据,必然要将二者的数据类型进行转换。先让我们来看两个表:

表SQL到Java数据类型影射表

SQL 数据类型

    JAVA数据类型

CHAR

String

VARCHAR

String

LONGVARCHAR

String

NUMERIC

java.math.BigDecimal

DECIMAL

java.math.BigDecimal

BIT

Boolean

TINYINT

Byte

SMALLINT

Short

INTEGER

Int

BIGINT

Long

REAL

Float

FLOAT

Double

DOUBLE

Double

BINARY

byte[]

VARBINARY

byte[]

LONGVARBINARY

byte[]

DATE

java.sql.Date

TIME

java.sql.Time

TIMESTAMP

java.sql.Timestamp




Java到SQL数据类型影射表

JAVA数据类型

SQL 数据类型

String

VARCHAR or LONGVARCHAR

java.math.BigDecimal

NUMERIC

Boolean

BIT

Byte

TINYINT

Short

SMALLINT

Int

INTEGER

Long

BIGINT

Float

REAL

Double

DOUBLE

byte[]

VARBINARY or LONGVARBINARY

java.sql.Date

DATE

java.sql.Time

TIME

java.sql.Timestamp

TIMESTAMP

 

这里,大伙要注意了,并不是所有的数据类型在各种数据库管理系统中都被支持。下面,就几种常用的数据类型之间的转化进行说明:

(1)      CHAR, VARCHAR, 和 LONGVARCHAR

 

在SQL语言中,有三种分别表示不同长度的字符类型CHAR, VARCHAR, 和 LONGVARCHAR,在Java/Jsp中并没有相应的三种不同的数据类型与之一一对应,JDBC的处理方法是将其与String或者char[]对应起来。在实际编程中不必对着三种SQL数据类型进行区分,全部将他们转化为Sting或者char[]就可以了。而且通常使用应用的非常普遍的String类型。我们还可以利用String类提供的方法将一个String对象转化为char[],或者用char[]为参数构造一个Stirng对象。

对于定长度的SQL数据类型CHAR(n),当从数据库管理系统中获得的结果集提取该类型的数据时,JDBC会为其构造一个长度为n的String对象来代表他,如果实际的字符个数不足’n’,系统会自动为String对象补上空格。当向数据库管理系统写入的数据类型应该是CHAR(n)时,JDBC也会将该String对象的末尾补上相应数量的空格。

一般情况下,CHAR, VARCHAR, LONGVARCHAR和String之间可以无差错的进行转换。但非常值得注意的是LONGVARCHAR,这种SQL的数据类型有时在数据库中代表的数据可能有几兆字节的大小,超过了String对象的承受范围。JDBC解决的办法是用Java的Input Stream来接受这种类型的数据[以后我们回涉及到]。Input Stream不仅支持ASCII,而且支持Unicode,我们可以根据需要进行选择。

 

(2)      DECIMAL 和 NUMERIC

 

SQL的DECIMAL 和 NUMERIC通常用来表示需要一定精度的定点数。在Java的简单数据类型中,没有一种类型与之相对应。但从JDK1.1开始,Sun公司在java.math.*包中加入了一个新的类BigDecimal,该类的对象可以与DECIMAL 、NUMERIC进行转换。

另外,当从数据库管理系统中读取数据时,还可以用getString()方法来获取DECIMAL 和 NUMERIC。

 

(3)      BINARY, VARBINARY, 和 LONGVARBINARY

 

在编程时无须精确区分这三种SQL数据类型,JDBC将他们统一影射为byte[]。其中LONGVARBINARY和LONGVARCHAR相似,可以代表几兆字节的数据,超出数组的承受范围。解决的办法依然是用Input Stream来接受数据。

 

(4)      BIT

 

代表一个二进制位的BIT类型被JDBC影射为boolean型。

 

(5)      TINYINT, SMALLINT, INTEGER, 和 BIGINT

 

SQL语言的TINYINT, SMALLINT, INTEGER, 和 BIGINT分别代表8位、16位、32位、64位的数据。他们分别被影射为Java的byte, short, int, 和 long

 

(6)      REAL, FLOAT, 和 DOUBLE

 

SQL定义了REAL, FLOAT,  DOUBLE来支持浮点数。JDBC将REAL影射到Java的float,将FLOAT,DOUBLE影射到java的double。

 

(7)      DATE, TIME, 和 TIMESTAMP

 

SQL定义了三种和日期相关的数据类型。 DATE代表年、月、日,TIME代表时、分、秒,TIMESTAMP结合了DATE和TIME的全部信息,而且增加了更加精确的时间计量单位。

在java的标准类库中,java.util.*包中的Date类用来表示日期和时间。但是该类和SQL中的DATE, TIME, 和 TIMESTAMP直接影射关系并不清晰。并且,该类也不支持TIMESTAMP的精确时间计量单位。因此,Sun公司在java.sql.*中为java.util.Date增加了三个子类:java.sql.Date,java.sql.Time ,java.sql.Timestamp,分别与SQL中的三个日期数据类型相对应。

 

总之,关于SQL与JAVA之见数据类型的转化,还有很多细节方面的东西,这里就不一一介绍了,有需要的朋友自己可以去查一下相关文档。这里给大家介绍一个我常去的网站:

http://java.sun.com/docs/books/tutorial/jdbc。


 

YARN | 让你彻底搞明白YARN资源分配 让你彻底搞明白YARN资源分配 本篇要解决的问题是: Container是以什么形式运行的?是单独的JVM进程吗? YARN的vcore和本机的CPU核数关系? 每个Container能够使用的物理内存和虚拟内存是多少? 一个NodeManager可以分配多少个Container? 一个Container可以分配的最小内存是多少?最大内存内存是多少?以及最小、最大的VCore是多少? 当将Spark程序部署在YARN上, AM与Driver的关系是什么? Spark on YARN,一个Co 阅读详情

相关推荐

YARN的架构、各角色职责、YARN的优点、资源管理、内存管理、CPU管理

YARN的架构 YARN: YARN的最基本思想是将JobTracker的两个主要职责:资源管理和Job调度管理分别交给两个角色负责。一个是全局的ResourceManager,一个是每个应用一个的ApplicationMaster。ResourceManager以及每个节点一个的NodeManager构成了新的通用系统,实现以分布式方式管理应用。 YARN的架构图 各角色职责: Resouce...

lv_hulk的博客 4475

sql数据库字段类型,java数据类型的对应关系

java.sql.Types,数据库字段类型,java数据类型的对应关系

skyang在路上 680

YARN基本架构原理详解

目录一、概念理解二、YARN的架构(1)ResourceManager(2)ApplicationMaster(3)NodeManager三、Yarn基本流程四、一个job运行处理的整体流程五、Yarn调度器Scheduler六、YARN的HA架构 一、概念理解 Apache Hadoop YARN(Yet Another Resource Negotiator,另一种资源协调者)是一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统

蔡政洁的博客 6807

mybatis返回mysql的聚合函数时,Java的接收方式。

有时候我们需要直接使用mysql的聚合函数进行数据统计,并返回我们所需要的数据到Java后台。 SQL语句如下 mybatis中的的语句如下 Java接收 以上个人经验,希望对您有所帮助。 ...

qq_34940644的博客 3829

Hadoop_YARN资源管理系统源码解析

目录 一、YARN产生的背景(MRv1的局限性) 二、YARN源代码结构 三、YARN基本架构 四、YARN各模块详细分析 五、MRAppMaster-MapReduce On YARN实现 六、YarnChild-MR引擎启动入口 七、总结   一、YARN产生的背景(MRv1的局限性) YARN 是在 MRv1 基础上演化而来的,它克服了 MRv1 中的各种局限性。在正式介...

走自己的路 2615

【spark】整合Yarn报错、无法查看log

1.修改hadoop的yarn-site.xml vim /export/servers/hadoop/etc/hadoop/yarn-site.xml <property> <name>yarn.resourcemanager.hostname</name> ...

依旧的博客 4526

Java数据库连接(JDBC)

因为数据库种类非常多,java语言需要连接不同的数据库,自己需要去实现连接步骤,但是这样做比较麻烦,所以java语言只是定义一套关于数据库连接操作接口。学完数据库和java se部分,刚好来看一下JDBC,JDBC其实就是java所提供的用来执行SQL语句的Java API。Int executeUpdate(String sql) 用于执行ddl语句和dml(增,删,改)语句 返回 操作的行数。Int executeUpdate() 用于执行ddl语句和dml(增,删,改)语句 返回操作的行数。

qq_55674489的博客 1990

资源管理与调度系统YARN(YARN基本架构及原理)

文章目录why YARNMRv1 局限性YARN设计动机YARN 设计思想YARN 基本架构 hadoop 2.0引入了数据操作系统YARN,YARN能够将资源按需分配给各个应用程序,大大提高了资源利用率,其次,YARN将短作业和长作业混合部署到一个集群中,并提供了容错、自愿隔离及负载均衡等方面的支持,大大简化了作业和服务的部署和管理成本。 why YARN MRv1 局限性 可靠性差:MRv1...

诗蕊的专栏 2330

kettle同步数据 (SAP hana到 Mysql)

安装kettle Kettle 运行需要jdk 环境,安装kellte之前确保环境中已有jdk环境。 如果需要安装jdk 可以参考: https://www.cnblogs.com/yybrhr/p/9811352.html kettle 下载完以后直接翻译解压即可。 Kettle的基础使用 实现过程 建立数据连接; 建立转换关系(异构数据库之间数据的字段对应关系,支持字段名称不一致); a...

白桦栎的博客 3688

理解Hadoop YARN架构

1. 介绍YARN(Yet Another Resource Negotiator)是一个通用的资源管理平台,可为各类计算框架提供资源的管理和调度。 其核心出发点是为了分离资源管理与作业调度/监控,实现分离的做法是拥有一个全局的资源管理器(ResourceManager,RM),以及每个应用程序对应一个的应用管理器(ApplicationMaster,AM),应用程序由一个作业(Job)或者Job

Spring , Hadoop, Spark , BI , ML 1万+

深入探索YARN集群:NodeManager内存配置与管理全攻略

YARN集群通过ResourceManager(RM)和NodeManager的协同工作,实现了对集群资源的有效管理和调度。每个NodeManager负责管理其所在节点的资源,并执行由ResourceManager分配的任务。

2401_85743969的博客 1848

【YARN】yarn 集群管理之memory、cpu 相关配置

目录yarn 管理内存相关配置yarn 管理vcores相关配置 yarn 管理内存相关配置 properties value 描述 description yarn.nodemanager.resource.memory-mb -1 可分配给containers的物理内存量(以MB为单位)。 如果设置为-1并且yarn.nodemanager.resource.detect-ha...

人生所向,皆是美好 1587

Yarn详解

1. Yarn架构1.1 简介1.1.1 架构YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等几个组件构成。YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResourceManager负责对各个NodeManager

梓纾的专栏 1万+

HADOOP之YARN详解

第一代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成。其中,HDFS由一个NameNode和多个DataNode组成,MapReduce由一个JobTracker和多个TaskTracker组成。对应Hadoop版本为Hadoop 1.x, 和0.21.x, 0.22.x。为克服Hadoop 1.0中的HDFS和MapReduce存在的各种问题而提出的,针对Hadoop 1.0中的MapReduce在扩展性和多框架支持方面的不足,提出了全新的资源管理框架YARM。

freellf的专栏 2159

总结:Yarn资源管理

Yarn的资源分配计算逻辑

w2009211777的专栏 1427

Yarn是什么?搭建Yarn环境

Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。 YARN的基本思想是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离,主要方法是创建一...

qq_39022311的博客 998

【YARN】hadoop yarn集群中如何管理cpu资源

介绍 当用yarn进行资源管理时,yarn平台开发人员主要关注两个方面: 资源分配(Resource allocation):具有所需资源和资源的最佳节点上分配应用的containers。 强制和资源隔离使用(Enforcement and isolation of Resource usage):在任何节点上,不要让container超出其承诺的/保留的资源。 将CPU作为一类资源 将CPU...

人生所向,皆是美好 899

通过编写一个YARN Application 来了解Hadoop YARN

YARN是Hadoop中的一个cluster资源管理系统。 MapReduce 就是泡在YARN 之上的,其关系如下图, MapReduce 通过YARN 在cluster内申请内存和cpu资源,YARN执行MapReduce Task.   最近学习了YARN, 从部署的角度YARN支持三种调度器:FIFO, Capacity 和 Fair。 从开发应用程序的角度,实现一个YA

trumanz的博客 5153
上一篇: 关于List/Map/类集的一些摘要
下一篇: JDBC之通过DatabaseMetaData对象了解数据库的信息
dacula
博客等级 码龄24年 6粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值