1. JDBC简介
JDBC(Java Database Connectivity)是Java语言中用于执行SQL语句的API,它为执行SQL命令提供了一种标准的方法。
使用JDBC,可以将SQL命令发送到任何支持SQL的数据库中,同时从数据库中检索和操作数据。JDBC可用于访问任何类型的关系数据库,如Oracle、MySQL、Microsoft SQL Server等。
在使用JDBC时,应当了解JDBC支持哪些数据类型,并了解它们的区别和用法。
2. JDBC支持的数据类型
JDBC支持以下几种数据类型:
2.1 字符串类型
字符串类型是JDBC中支持的最常用的数据类型。字符串数据存储在数据库表中的VARCHAR、CHAR和LONGVARCHAR列中,以及Java程序中的String类型中。
在执行SQL语句时,应该将文本值用单引号括起来,如:
SELECT * FROM user WHERE name = 'Tom';
UPDATE user SET name = 'Jack' WHERE id = 1;
注意,如果字符串中包含单引号,可以在单引号前加上反斜杠转义,如:
SELECT * FROM user WHERE name = 'Tom\'s book';
2.2 整型
JDBC中支持的整型包括:TINYINT、SMALLINT、INTEGER和BIGINT。
TINYINT表示一个小整数,范围为-128到127;SMALLINT表示一个小整数,范围为-32768到32767;INTEGER表示一个整数,范围为-2147483648到2147483647;BIGINT表示一个大整数,范围为-9223372036854775808到9223372036854775807。
在执行SQL语句时,整型值可以直接使用,例如:
INSERT INTO user(id, age) VALUES (1, 18);
SELECT * FROM user WHERE age > 20;
2.3 小数
JDBC中支持的小数有两种:DECIMAL和DOUBLE。
DECIMAL用于存储固定精度的数字,例如货币金额,它支持指定列的小数位数。DOUBLE用于存储双精度浮点数,它不支持指定列的小数位数。
在执行SQL语句时,小数值可以直接使用,例如:
INSERT INTO product(name, price) VALUES ('apple', 3.14);
SELECT * FROM product WHERE price > 5.0;
2.4 时间与日期
JDBC中支持的时间和日期类型有:DATE、TIME和TIMESTAMP。
DATE表示日期,格式为'yyyy-mm-dd',例如'2021-07-01';TIME表示时间,格式为'hh:mm:ss',例如'20:15:30';TIMESTAMP表示日期和时间,格式为'yyyy-mm-dd hh:mm:ss',例如'2021-07-01 20:15:30'。
在执行SQL语句时,时间和日期值应该使用单引号括起来,例如:
INSERT INTO log(time, message) VALUES ('2021-07-01 20:15:30', 'Login success');
SELECT * FROM log WHERE time > '2021-07-01 00:00:00';
2.5 字节数组
JDBC中支持的字节数组类型是BLOB(Binary Large Object),用于存储二进制大对象,例如图像、音频和视频文件等。
在执行SQL语句时,字节数组值必须使用PreparedStatement的setBinaryStream方法设置。例如:
byte[] data = ...;
PreparedStatement ps = conn.prepareStatement("INSERT INTO media(name, content) VALUES (?, ?)");
ps.setString(1, "picture");
ps.setBinaryStream(2, new ByteArrayInputStream(data), data.length);
ps.executeUpdate();
2.6 布尔型
JDBC中支持的布尔型是BOOLEAN,用于表示逻辑值。BOOLEAN的取值为TRUE或FALSE。
在执行SQL语句时,布尔值可以直接使用,例如:
UPDATE user SET active = TRUE WHERE id = 1;
SELECT * FROM user WHERE active = FALSE;
2.7 NULL值
在JDBC中,NULL表示缺失的值或未知的值。如果数据库表中的某个列允许为NULL,那么该列可以不填写值或者填写NULL值。
在执行SQL语句时,NULL值应该使用NULL关键字,例如:
INSERT INTO user(name, age) VALUES ('Jerry', NULL);
UPDATE user SET age = NULL WHERE age > 20;
3. 总结
JDBC支持的数据类型包括字符串类型、整型、小数、时间日期、字节数组、布尔型和NULL值。使用JDBC时,应该根据实际情况选择相应的数据类型,同时注意SQL语句中数据类型的正确使用。