SQL Datatypes and Java Datatypes
Support for different datatypes in
SQL2 is poor. Since Java is an
object-oriented language, however, datatype support is extremely
rich. Therefore a huge disconnect exists between what sits in the
database and the way you want it represented in your Java
application. The SQL concept of a variable width, single-byte
character array, for example, is the
VARCHAR
datatype.
Java actually has no concept of a variable width, single-byte
character array; Java doesn’t even have a single-byte character
type.[6] The closest thing is the
String
class.
To make matters worse, many database engines internally support their
own datatypes and loosely translate them to a SQL2 type. All Oracle
numeric types, for example, map to the SQL NUMERIC
type. JDBC, fortunately, lets you retrieve data in their Java forms
defined by a JDBC-specified datatype mapping. You do not need to
worry that a SQL LONG
has a different
representation in Sybase than it does in Oracle. You just call the
ResultSet
getLong()
method to
retrieve numbers you wish to treat as Java long
s.
You do need to be somewhat concerned when designing the database,
however. If you pull a 64-bit number into a Java application via
getInt()
, you risk getting bad data. Similarly, if you save a Java float into a numeric field with a scale of 0, you will lose data. The important rule of thumb for Java programming, however, is think and work in Java and use the database to support the Java application. Do not let ...
Get Database Programming with JDBC & Java, Second Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.