JDBC学习笔记(五)
Thinkersky[Email:yanghuangming@rongji.com]
◆ 爸爸今天打了我两次,第一次是因为看见了我手里两分的成绩单,第二次是因为成绩单是他小时候的。
◆ 悲剧好比是我不小心切掉了自己的小手指;喜剧好比是你不小心掉进了下水道。
◆ 下面,我将公布
◆ 我不明白,你为什么放着值钱的东西不偷,却偏偏去偷那些不值钱的东西呢?
小偷:够啦!就为这个,老婆都数落我一个多月啦。
恩,这是今天抽空在公司论坛上看到的几条搞笑短信,拿出来与大家一起分享。
今天比较忙,学的东西相对比较少,只是稍微复习了一下JAVA与SQL之间数据类型的转化。想必大家都知道,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 上一页 下一页






