sql和java数据类型映射

sql和java数据类型映射


2024年4月22日发(作者:)

Sql和java数据类型映射

概述

由于SQL数据类型和Java数据类型是不同的,因此需要某种机制在使用Java类型的应

用程序和使用SQL类型的数据库之间来读写数据。

为此,JDBC提供了getXXX和setXXX方法集、方法registerOutParameter和类Types。

本章汇集了影响各种类和接口的数据类型的有关信息,并列出所有的对应关系表(这些表显

示了SQL类型和Java类型之间的映射关系)以便于参考。

8.2将SQL数据类型映射为Java类型

不幸的是,不同数据库产品所支持的SQL类型之间有很大的不同。即使不同的数据库以相

同的语义支持SQL类型,它们也可能用不同的名称。例如,绝大多数的主流数据库都支持

一种表示大型二进制值的SQL类型,但Oracle把这种类型叫做LONGRAW,Sybase把

它叫做IMAGE,Informix却把它叫做BYTE,而DB2又把它叫做LONGVARCHARFOR

BITDATA。

幸运的是,JDBC程序员通常并不需要自己去关心目标数据库所用的实际SQL类型的名

称。大多数时候,JDBC程序员将根据一些现有的数据库表来进行编程。他们无须关心用于

创建这些表的确切SQL类型的名称。

JDBC在类中定义了一系列的常规SQL类型标识符。这些类型可用于表示

那些最为常用的SQL类型。在用JDBCAPI编程时,程序员通常可以使用这些JDBC类

型来引用一般的SQL类型,而无须关心目标数据库所用的确切SQL类型的名称。在下一

节中将对这些JDBC类型进行仔细说明。

程序员用到SQL类型名称的主要地方是在用SQL的CREATETABLE语句创建新的数

据库表时。这种情况下,程序员必须注意应该使用目标数据库所支持的SQL类型名称。如

果需要知道各种SQL类型在某个特定的数据库中的行为的确切定义,我们建议查阅一下数

据库文档。

如果想要编写一种可在各种数据库上创建表的可移植JDBC程序,用户主要有两个选择。

第一个选择是:限制自己只使用那些被广为接受的SQL类型名称(例如INTEGER、

NUMERIC或VARCHAR)。这些类型有可能能适应所有的数据库。第二个选择是:用

eInfo方法来找出给定的数据库实际上支持哪些SQL类

型,然后选择与给定JDBC类型相匹配的特定于数据库的SQL类型名。

JDBC定义了一个从JDBC数据库类型到Java类型的标准映射。例如,JDBC的

INTEGER类型通常映射为Java的int类型。这可支持简单的接口,将JDBC值读写为简

单的Java类型。

Java类型不必与JDBC类型完全形同;它们只须能够用足够的类型信息来代表JDBC类

型,从而能正确地存储和取出参数和从SQL语句恢复结果就可以了。例如,JavaString对

象可能并不能精确地与任何JDBCCHAR类型匹配,但它却可给出足够的类型信息来成功

地表示CHAR、VARCHAR或LONGVARCHAR类型。

8.3JDBC类型

本节描述各种JDBC数据类型及其与标准SQL类型和Java类型的关联方式。

8.3.1CHAR、VARCHAR和LONGVARCHAR

JDBC类型CHAR、VARCHAR和LONGVARCHAR密切相关。CHAR表示固定长度的

小字符串,VARCHAR表示长度可变的小字符串,而LONGVARCHAR表示长度可变的大

字符串。

与JDBCCHAR对应的是SQLCHAR类型,其定义由SQL-92给出,且所有主要的数据

库都支持它。它接受用于指定字符串最大长度的参数,例如CHAR(12)即定义了一个长度

为12个字符的字符串。所有主要的数据库都支持长度达254个字符的CHAR。

与JDBCVARCHAR对应的是SQLVARCHAR类型,其定义由SQL-92给出,且所有的

主要数据库都支持它。它接受用于指定字符串最大长度的参数,例如VARCHAR(12)即定

义了一个最大长度为12个字符的字符串。所有主要数据库都至少支持长度达254个字符

的VARCHAR。当把字符串的值赋给VARCHAR变量时,数据库就记住该字符串的长度,

使用SELECT时,它可以返回准确的原始字符串。


发布者:admin,转转请注明出处:http://www.yc00.com/web/1713794704a2319966.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信