English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JDBC 드라이버는 Java 데이터 타입을 데이터베이스로 전송하기 전에 먼저 적절한 JDBC 타입으로 변환합니다. 대부분의 데이터 타입에 대해 기본 맵핑을 사용합니다. 예를 들어, Java int를 SQL INTEGER로 변환합니다. 드라이버 간의 일관성을 제공하기 위해 기본 맵핑을 생성했습니다.
PreparedStatement 또는 CallableStatement 객체의 setXXX() 메서드나 ResultSet.updateXXX() 메서드를 호출할 때, 다음 표는 Java 데이터 타입이 기본 JDBC 데이터 타입으로 변환되는 것을 요약합니다.
의 SQL | JDBC / Java | setXXX | XXX 업데이트 |
---|---|---|---|
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 강화된 BLOB, CLOB, ARRAY 및 REF 데이터 타입 지원. ResultSet 객체는 now updateBLOB(), updateCLOB(), updateArray() 및 updateRef() 메서드를 가지고 있으며, 서버에서 직접 해당 데이터를操作할 수 있습니다.
setXXX()와 updateXXX() 메서드를 사용하여 특정 Java 타입을 특정 JDBC 데이터 타입으로 변환할 수 있습니다. setObject()와 updateObject() 메서드를 사용하여 거의 모든 Java 타입을 JDBC 데이터 타입으로 매핑할 수 있습니다.
ResultSet 객체는 각 데이터 타입에 대한相应的 getXXX() 메서드를 제공하여 열 값을 검색합니다. 각 메서드는 열 이름이나 그 순번 위치와 함께 사용될 수 있습니다.
의 SQL | JDBC / Java | setXXX | getXXX |
---|---|---|---|
VARCHAR | java.lang.String | setString | getString |
CHAR | java.lang.String | setString | getString |
LONGVARCHAR | java.lang.String | setString | getString |
BIT | boolean | setBoolean | getBoolean |
NUMERIC | java.math.BigDecimal | setBigDecimal | getBigDecimal |
TINYINT | byte | setByte | getByte |
SMALLINT | short | setShort | getShort |
INTEGER | int | setInt | getInt |
BIGINT | long | setLong | getLong |
REAL | float | setFloat | getFloat |
FLOAT | float | setFloat | getFloat |
DOUBLE | double | setDouble | getDouble |
VARBINARY | byte[ ] | setBytes | getBytes |
BINARY | byte[ ] | setBytes | getBytes |
DATE | java.sql.Date | setDate | getDate |
TIME | java.sql.Time | setTime | getTime |
TIMESTAMP | java.sql.Timestamp | setTimestamp | getTimestamp |
CLOB | java.sql.Clob | setClob | getClob |
BLOB | java.sql.Blob | setBlob | getBlob |
ARRAY | java.sql.Array | setARRAY | getARRAY |
REF | java.sql.Ref | SetRef | getRef |
STRUCT | java.sql.Struct | SetStruct | getStruct |
java.sql.Date 클래스는 SQL DATE 타입에 매핑되며, java.sql.Time과 java.sql.Timestamp 클래스는 각각 SQL TIME과 SQL TIMESTAMP 데이터 타입에 매핑됩니다。
以下的示例显示Date와 Time 클래스가 표준 Java 날짜와 시간 값을 SQL 데이터 타입 요구 사항에 맞게 포맷하는 방법을 보여줍니다。
import java.sql.Date; import java.sql.Time; import java.sql.Timestamp; import java.util.*; public class SqlDateTime { public static void main(String[] args) { //표준 날짜와 시간을 가져옵니다 java.util.Date javaDate = new java.util.Date(); long javaTime = javaDate.getTime(); System.out.println("The Java Date is:") + javaDate.toString()); //SQL DATE를 가져오고 표시합니다 java.sql.Date sqlDate = new java.sql.Date(javaTime); System.out.println("The SQL DATE is: " + sqlDate.toString()); //SQL TIME을 가져오고 표시합니다 java.sql.Time sqlTime = new java.sql.Time(javaTime); System.out.println("The SQL TIME is: " + sqlTime.toString()); //SQL TIMESTAMP을 가져오고 표시합니다 java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(javaTime); System.out.println("The SQL TIMESTAMP is: " + sqlTimestamp.toString()); }//main 끝 }//SqlDateTime 끝
지금让我们编译上面的示例,如下所示:
C:\>javac SqlDateTime.java C:\>
실행 시간JDBCExample,그结果是 다음과 같이 될 것입니다-
C:\>java SqlDateTime The Java Date is:Tue Aug 18 13:46:02 GMT+04:00 2009 The SQL DATE is: 2009-08-18 The SQL TIME is: 13:46:02 The SQL TIMESTAMP is: 2009-08-18 13:46:02.828 C:\>
SQL에서 NULL 값의 사용과 Java에서 null의 사용은 다른 개념입니다. 따라서 Java에서 SQL NULL 값을 처리하려면 세 가지 전략을 사용할 수 있습니다-
getXXX() 메서드가 반환하는 원시 데이터 타입을 사용하는 것을 피합니다.
원시 데이터 타입에 包装 클래스를 사용하고 ResultSet 객체의 wasNull() 메서드를 호출하여 getXXX() 메서드가 반환하는 값의 包装 클래스 변수가 null로 설정되어야 하는지 테스트합니다.
원시 데이터 타입을 사용하여 ResultSet 객체의 wasNull() 메서드를 호출하여 getXXX() 메서드가 반환하는 값의 원시 변수가 선택한 NULL을 대표하는 허용 가능한 값으로 설정되어야 하는지 테스트합니다.
이것은 NULL 값을 처리하는 예제입니다-
Statement stmt = conn.createStatement( ); String sql = "SELECT id, first, last, age FROM Employees"; ResultSet rs = stmt.executeQuery(sql); int id = rs.getInt(1); if( rs.wasNull( ) ) { id = 0; }