English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Le pilote JDBC convertit d'abord les types de données Java en types JDBC appropriés avant de les envoyer à la base de données. Il utilise des mappages par défaut pour la plupart des types de données. Par exemple, il convertit Java int en SQL INTEGER. Des mappages par défaut ont été créés pour assurer une cohérence entre les pilotes.
Lorsque vous appelez la méthode setXXX() d'un objet PreparedStatement ou CallableStatement ou la méthode updateXXX() de l'objet ResultSet, le tableau suivant résume les conversions par défaut des types de données Java en types de données JDBC par défaut.
du SQL | JDBC / Java | setXXX | mise à jour XXX |
---|---|---|---|
VARCHAR | java.lang.String | setString | mise à jour String |
CHAR | java.lang.String | setString | mise à jour String |
LONGVARCHAR | java.lang.String | setString | mise à jour String |
BIT | boolean | setBoolean | mise à jour Boolean |
NUMERIC | java.math.BigDecimal | setBigDecimal | mise à jour BigDecimal |
TINYINT | byte | setByte | mise à jour Byte |
SMALLINT | short | setShort | mise à jour Short |
INTEGER | int | setInt | mise à jour Int |
BIGINT | long | setLong | mise à jour Long |
REAL | float | setFloat | mise à jour Float |
FLOAT | float | setFloat | mise à jour Float |
DOUBLE | double | setDouble | mise à jour Double |
VARBINARY | byte[ ] | setBytes | mise à jour Bytes |
BINARY | byte[ ] | setBytes | mise à jour Bytes |
DATE | java.sql.Date | setDate | mise à jour Date |
TIME | java.sql.Time | setTime | mise à jour Time |
TIMESTAMP | java.sql.Timestamp | setTimestamp | mise à jour Timestamp |
CLOB | java.sql.Clob | setClob | mise à jour Clob |
BLOB | java.sql.Blob | setBlob | mise à jour Blob |
ARRAY | java.sql.Array | setARRAY | mise à jour ARRAY |
REF | java.sql.Ref | SetRef | mise à jour Ref |
STRUCT | java.sql.Struct | SetStruct | mise à jour struct |
JDBC 3L'amélioration de la version 0.0 a apporté le support des types de données BLOB, CLOB, ARRAY et REF. L'objet ResultSet dispose maintenant des méthodes updateBLOB(), updateCLOB(), updateArray() et updateRef(), ce qui vous permet de manipuler directement les données correspondantes sur le serveur.
En utilisant les méthodes setXXX () et updateXXX (), vous pouvez convertir un type Java spécifique en un type de données JDBC spécifique. En utilisant les méthodes setObject () et updateObject (), vous pouvez mapper presque tous les types Java aux types de données JDBC.
L'objet ResultSet fournit des méthodes getXXX () correspondantes pour chaque type de données pour récupérer les valeurs des colonnes. Chaque méthode peut être utilisée avec le nom de la colonne ou son emplacement ordinal.
du 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 La Date Java est:Mar Ao 18 13:46:02 GMT+04:00 2009 Le DATE SQL est : 2009-08-18 Le TIME SQL est : 13:46:02 Le TIMESTAMP SQL est : 2009-08-18 13:46:02.828 C:\>
L'utilisation de NULL dans SQL et l'utilisation de null en Java sont des concepts différents. Par conséquent, pour traiter les valeurs NULL SQL en Java, vous pouvez utiliser trois stratégies-
Évitez d'utiliser la méthode getXXX() qui renvoie un type de données original.
Utilisez les classes de wrappers pour les types de données originaux et utilisez la méthode wasNull() de l'objet ResultSet pour tester si la variable de la classe wrapper renvoyée par la méthode getXXX() doit être définie sur null.
Utilisez les types de données originaux et la méthode wasNull() de l'objet ResultSet pour tester si la variable originale renvoyée par la méthode getXXX() doit être définie sur la valeur acceptable de NULL que vous avez choisie.
C'est un exemple de traitement des valeurs 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; }