English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
The JDBC driver converts Java data types to the appropriate JDBC types before sending them to the database. It uses default mappings for most data types. For example, Java int is converted to SQL INTEGER. Default mappings were created to provide consistency between drivers.
When calling the setXXX() method of the PreparedStatement or CallableStatement object or the ResultSet.updateXXX() method, the following table summarizes the default JDBC data types converted from Java data types.
do SQL | JDBC / Java | setXXX | Update 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 improved support for BLOB, CLOB, ARRAY, and REF data types. The ResultSet object now has updateBLOB(), updateCLOB(), updateArray(), and updateRef() methods, allowing you to directly operate on the corresponding data on the server.
Usando os métodos setXXX() e updateXXX(), pode-se converter tipos Java específicos para tipos de dados JDBC específicos. Usando os métodos setObject() e updateObject(), pode-se mapear quase todos os tipos Java para tipos de dados JDBC.
O objeto ResultSet fornece métodos getXXX () correspondentes para cada tipo de dados para recuperar valores de coluna. Cada método pode ser usado com o nome da coluna ou sua posição numérica.
do 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 |
A classe java.sql.Date mapeia para o tipo SQL DATE, enquanto as classes java.sql.Time e java.sql.Timestamp mapeiam respectivamente para os tipos de dados SQL TIME e SQL TIMESTAMP.
O exemplo a seguir mostra como as classes Date e Time formatam valores de data e hora padrão Java para atender aos requisitos do tipo de dados 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) { //Obter a data e hora padrão java.util.Date javaDate = new java.util.Date(); long javaTime = javaDate.getTime(); System.out.println("A DATA JAVA é:" + javaDate.toString()); //Obter e exibir o DATE SQL java.sql.Date sqlDate = new java.sql.Date(javaTime); System.out.println("O DATE SQL é: " + sqlDate.toString()); //Obter e exibir o TIME SQL java.sql.Time sqlTime = new java.sql.Time(javaTime); System.out.println("O TIME SQL é: " + sqlTime.toString()); //Obter e exibir o TIMESTAMP SQL java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(javaTime); System.out.println("O TIMESTAMP SQL é: " + sqlTimestamp.toString()); }//结束main }//结束SqlDateTime
现在让我们编译上面的示例,如下所示:
C:\>javac SqlDateTime.java C:\>
运行时JDBCExample,它将产生以下结果-
C:\>java SqlDateTime A Data Java é:Tue Aug 18 13:46:02 GMT+04:00 2009 O DATE SQL é: 2009-08-18 O TIME SQL é: 13:46:02 O TIMESTAMP SQL é: 2009-08-18 13:46:02.828 C:\>
O uso de NULL no SQL e no Java é um conceito diferente. Portanto, para lidar com valores NULL no Java, você pode usar três estratégias-
Evite usar métodos getXXX() que retornam tipos de dados primitivos.
Use classes wrapping para tipos de dados primitivos e o método wasNull() do objeto ResultSet para testar se a variável wrapping retornada pelo método getXXX() deve ser configurada como null.
Use tipos de dados primitivos e o método wasNull() do objeto ResultSet para testar se a variável original retornada pelo método getXXX() deve ser configurada com o valor aceitável representativo de NULL que você escolheu.
Este é um exemplo de como lidar com valores 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; }