JDBC支持哪些数据类型?

JDBC支持哪些数据类型?

Java Database Connectivity(JDBC)是Java编程语言中的一种应用程序接口(API),用于在Java的应用程序和各种类型的数据库之间建立连接,并且能够执行SQL查询和更新语句。在JDBC中,支持的数据类型是非常重要的,因此在本文中我们将讨论JDBC支持的数据类型。

阅读更多:MySQL 教程

JDBC支持的基本数据类型

JDBC支持Java的基本数据类型作为传递参数或返回值。以下是JDBC支持的基本数据类型列表:

类型 描述
BYTE 8位有符号整数
SHORT 16位有符号整数
INT 32位有符号整数
LONG 64位有符号整数
FLOAT 32位IEEE浮点数
DOUBLE 64位IEEE浮点数
BOOLEAN true/false值
CHAR 字符,使用Unicode编码,占2个字节
VARCHAR 可变长度的字符串

以下是代码示例:

PreparedStatement ps = conn.prepareStatement("INSERT INTO student(name, age, isMale) VALUES (?, ?, ?)");
ps.setString(1, "张三");
ps.setInt(2, 25);
ps.setBoolean(3, true);

JDBC支持的其他数据类型

除了基本数据类型,JDBC还支持其他数据类型,例如日期、时间、二进制数据和大型对象(LOB)。以下是完整的JDBC数据类型:

类型 描述
DATE 年月日。
TIME 时分秒。
TIMESTAMP 年月日时分秒。
BINARY 固定长度的二进制数据。最多占255个字节。
VARBINARY 可变长度的二进制数据。最多占65535个字节。
LONGVARBINARY 长度可变的二进制数据。最多占2^31-1个字节。
BLOB 可变长度的二进制数据,最多占2^31-1个字节。
CLOB 字符数据,最多占2^31-1个字符。

以下是代码示例:

PreparedStatement ps = conn.prepareStatement("INSERT INTO student(name, photo) VALUES (?, ?)");
ps.setString(1, "张三");
File photo = new File("D:\\photo.jpg");
try (InputStream is = new FileInputStream(photo)) {
    ps.setBinaryStream(2, is, photo.length());
}

数据类型转换

当JDBC试图将Java数据类型映射到SQL数据类型时,它将尝试自动转换。如果失败,则可能会出现运行时错误。以下是JDBC自动转换规则的一些示例:

JDBC类型 Java类型 SQL类型
BIGINT Long(long) BIGINT
BINARY byte[] BINARY
BIT Boolean BIT
CHAR String CHAR
CLOB Clob CLOB
DATE Date DATE
DECIMAL BigDecimal DECIMAL
DOUBLE Double(double) DOUBLE
FLOAT Float(float) FLOAT
INTEGER Integer(int) INTEGER
LONGVARBINARY byte[] BLOB
LONGVARCHAR String CLOB
NCHAR String NCHAR
NUMERIC BigDecimal NUMERIC
NVARCHAR String NVARCHAR
REAL Float(float) REAL
SMALLINT Short(short) SMALLINT
TIME Time TIME
TIMESTAMP Timestamp TIMESTAMP
TINYINT Byte TINYINT
VARBINARY byte[] VARBINARY
VARCHAR String VARCHAR

不同数据库的数据类型

不同的数据库支持不同的数据类型,因此JDBC驱动程序必须能够将JDBC数据类型转换为适当的数据库数据类型。以下是一些流行数据库支持的数据类型:

MySQL支持的数据类型

数据类型 描述
INT 整数,最大允许10位数字。
BIGINT 长整数,最大允许19位数字。
DECIMAL 十进制数,一般用于存储货币。例如:DECIMAL(5,2) 允许存储 5 位数字,并保留 2 位小数。
FLOAT 单精度浮点数,数字范围比DECIMAL大。
DOUBLE 双精度浮点数,比FLOAT有更高的精度。
DATE 日期,格式为YYYY-MM-DD。
TIME 时间,格式为HH:MM:SS。
TIMESTAMP 日期时间,格式为YYYY-MM-DD HH:MM:SS。
YEAR 年份,格式为YYYY。
CHAR 字符串,固定长度。例如CHAR(10)将允许存储不多于10个字符的字符串。
VARCHAR 字符串,可变长度。例如VARCHAR(255)允许存储最多255个字符的字符串。
BINARY 二进制数据,存储与输入的精确字节数相同的长度。
VARBINARY 变长二进制数据。与VARCHAR类似,但存储的是二进制字符串。
TINYBLOB 非常小的BLOB。最多可存储255个字符。
BLOB 二进制大对象,与VARCHAR类似,但存储的是二进制数据。
MEDIUMBLOB 大型二进制对象,最多可存储16MB的数据。
LONGBLOB 极大型二进制文件,最多可存储4GB的数据。
TINYTEXT 文本数据类型,最多可存储255个字符。
TEXT 文本数据类型,最多可存储65,535个字符。
MEDIUMTEXT 文本数据类型,最多可存储16MB的数据。
LONGTEXT 文本数据类型,最多可存储4GB的数据。

Oracle支持的数据类型

数据类型 描述
CHAR 字符串,固定长度。最大可存储2,000个字符。
VARCHAR2 字符串,变长。最多可存储4,000个字符。
NUMBER 数字,可存储2^126-1个数字。
BINARY_FLOAT 4字节浮点数。
BINARY_DOUBLE 8字节浮点数。
DATE 日期和时间。
TIMESTAMP 带有时区的日期和时间。
INTERVAL YEAR TO MONTH 特定时间间隔,由数量(年份和月份)组成。
INTERVAL DAY TO SECOND 特定时间间隔,由数量(日、小时、分钟、秒和小数秒)组成。
BLOB 二进制大型对象。最多可存储4GB的数据。
CLOB 大型字符对象。最多可存储4GB的数据。
NCLOB National Character Large Object。

SQL Server支持的数据类型

数据类型 描述
BIT 0或1。
TINYINT 非负整数,最大允许值为2^7-1。
SMALLINT 整数,最大允许值为2^15-1。
INT 整数,最大允许值为2^31-1。
BIGINT 长整数,最大允许值为2^63-1。
FLOAT(n) 浮点数,n表示精度。
REAL 单精度浮点数。
NUMERIC(p,s) 高精度十进制数,p表示精度,s表示小数位数。
DECIMAL(p,s) 高精度十进制数,p表示精度,s表示小数位数。
SMALLDATETIME 仅支持年份介于1900年和2079年之间的日期和时间。
DATETIME 支持年份介于1753年和9999年之间的日期和时间。
CHAR(n) 字符串,固定长度。最大可存储8,000个字符。
VARCHAR(n) 字符串,可变长度。最多可存储8,000个字符。
DATE 日期。
TIME 时间。
DATETIME2 高精度日期和时间。
DATETIMEOFFSET 带有时区偏移的日期和时间。
BINARY(n) 二进制数据,固定长度。最大可存储8,000个字节。
VARBINARY(n) 变长二进制数据。最多可存储8,000个字节。
IMAGE 二进制大型对象。最多可存储2^31-1个字节。
TEXT 大型字符对象。最多可存储2^31-1个字符。

PostgreSQL支持的数据类型

数据类型 描述
SMALLINT 16位整数,仅支持-32768到32767范围内的值。
INTEGER 32位整数,仅支持-2147483648到2147483647范围内的值。
BIGINT 64位整数, -9223372036854775808 到 9223372036854775807。
NUMERIC(p,s) 用于高精度计算的十进制数。可容纳p个数字,其中s位小数。
REAL 4字节精度浮点数。
DOUBLE PRECISION 8字节精度浮点数。
SMALLSERIAL 与SMALLINT相同,但自增长。
SERIAL 与INTEGER相同,但自增长。
BIGSERIAL 与BIGINT相同,但自增长。
TIMESTAMP 时间戳。
TIMESTAMPTZ 与TIMESTAMP相同,但具有时区。
DATE 日期。
TIME 时间。
TIMETZ 与TIME相同,但具有时区。
INTERVAL 时间段。
CHAR(n) 字符串,固定长度。最多可存储n个字符。
VARCHAR(n) 可变长度的字符串。最多可存储n个字符。
TEXT 长度可变字符串。
BYTEA 二进制数据。

结论

在JDBC中,支持的数据类型是非常重要的。JDBC支持Java的基本数据类型,例如BYTE、SHORT、INT、LONG、FLOAT、DOUBLE、BOOLEAN、CHAR和VARCHAR。除了基本数据类型,JDBC还支持其他数据类型,例如日期、时间、二进制数据和大型对象(LOB)。不同的数据库支持不同的数据类型,JDBC驱动程序必须能够将JDBC数据类型转换为适当的数据库数据类型。在选择数据库和JDBC驱动程序时,了解其支持的数据类型非常重要,以便正确地处理数据并避免错误。同时,您可能需要使用JDBC API中的ResultSetMetaData类和DatabaseMetaData类来获取关于数据库中列和数据类型的详细信息。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程