Data Types in JDBC

- Generally, Oracle datatypes and host language datatypes are not the same.
- Values are passed from Oracle to Java and vice versa, they need to be cast from one datatype to the other.
- The JDBC driver can automatically convert values of Oracle datatypes to values of some of the Java datatypes.
- The "Using Prepared Statements" section will cover conversions in the other direction.
- The JDBC driver converts the Java data type to the appropriate JDBC type before sending it to the database.
- It uses a default mapping for most data types.
- For example, a Java int is converted to an SQL INTEGER.
- Default mappings were created to provide consistency (reliability/stability) between drivers.
- The following table summarizes the default JDBC data type
- That the Java data type is converted to when we call :
1) the setXXX() method of the PreperedStatement or2) CallableStatement object or3) the ResultSet.4) updateXXX() method.
- the setXXX() method of the PreparedStatement or CallableStatement object or the ResultSet.updateXXX() method.
SQL | JDBC/Java | setXXX | updateXXX |
VARCHAR | java.lang.String | setString | updateString |
CHAR | java.lang.String | setString | updateString |
LONGVARCHAR | java.lang.String | setString | updateString |
BIT | Boolean | setBoolean | updateBoolean |
NUMERIC | java.math.BigDecimal | setBigDecimal | updateBigDecimal |
TINYINT | Byte | setByte | updateByte |
SMALLINT | Short | setShort | updateShort |
INTEGER | Int | setInt | updateInt |
BIGINT | Long | setLong | updateLong |
REAL | Float | setFloat | updateFloat |
FLOAT | Float | setFloat | updateFloat |
DOUBLE | Double | setDouble | updateDouble |
VARBINARY | byte[ ] | setBytes | updateBytes |
BINARY | byte[ ] | setBytes | updateBytes |
DATE | java.sql.Date | setDate | updateDate |
TIME | java.sql.Time | setTime | updateTime |
TIMESTAMP | java.sql.Timestamp | setTimestamp | updateTimestamp |
CLOB | java.sql.Clob | setClob | updateClob |
BLOB | java.sql.Blob | setBlob | updateBlob |
ARRAY | java.sql.Array | setARRAY | updateARRAY |
REF | java.sql.Ref | SetRef | updateRef |
STRUCT | java.sql.Struct | SetStruct | updateStruct |
- JDBC 3.0 has enhanced support for BLOB, CLOB, ARRAY, and REF data types.
- The ResultSet object now has updateBLOB(), updateCLOB(), updateArray(), and updateRef() methods that enable we to directly manipulate the respective data on the server.
- The setXXX() and updateXXX() methods enable we to convert specific Java types to specific JDBC data types.
- The methods, setObject() and updateObject(), enable we to map almost any Java type to a JDBC data type.
- ResultSet object provides corresponding getXXX() method for each data type to retrieve column value.
- Each method can be used with column name or by its ordinal position.
- Date & Time Data Types:
- The java.sql.Date class maps to the SQL DATE type, and the java.sql.- Time and java.sql.Timestamp classes map to the SQL TIME and SQL TIMESTAMP data types, respectively.
- Following examples shows how the Date and Time classes format standard Java date and time values to match the SQL data type requirements.
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.*;
public class SqlDateTime
{
public static void main(String[] args){
import java.sql.Date;import java.sql.Time;import java.sql.Timestamp;import java.util.*;public class SqlDateTime{public static void main(String[] args){//Get standard date and timejava.util.Date javaDate = new java.util.Date();long javaTime = javaDate.getTime();System.out.println("The Java Date is:" +javaDate.toString());//Get and display SQL DATEjava.sql.Date sqlDate = new java.sql.Date(javaTime);System.out.println("The SQL DATE is: " +sqlDate.toString());//Get and display SQL TIMEjava.sql.Time sqlTime = new java.sql.Time(javaTime);System.out.println("The SQL TIME is: " +sqlTime.toString());//Get and display SQL TIMESTAMPjava.sql.Timestamp sqlTimestamp =new java.sql.Timestamp(javaTime);System.out.println("The SQL TIMESTAMP is: " +sqlTimestamp.toString());
} //end main
} //end SqlDateTime
- C:\>javac SqlDateTime.java
- C:\>
- C:\>java SqlDateTime
- The Java Date is:Tue Aug 18 13:46:02 GMT+04:00 2009
- The SQL DATE is: 2014-06-24
- The SQL TIME is: 13:46:02
- The SQL TIMESTAMP is: 2014-06-24 13:46:02.828
- C:\>
- Avoid using getXXX( ) methods that return primitive data types.
- Use wrapper classes for primitive data types.
No comments:
Post a Comment