English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Types de données JDBC

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 SQLJDBC / JavasetXXXmise à jour XXX
VARCHARjava.lang.StringsetStringmise à jour String
CHARjava.lang.StringsetStringmise à jour String
LONGVARCHARjava.lang.StringsetStringmise à jour String
BITbooleansetBooleanmise à jour Boolean
NUMERICjava.math.BigDecimalsetBigDecimalmise à jour BigDecimal
TINYINTbytesetBytemise à jour Byte
SMALLINTshortsetShortmise à jour Short
INTEGERintsetIntmise à jour Int
BIGINTlongsetLongmise à jour Long
REALfloatsetFloatmise à jour Float
FLOATfloatsetFloatmise à jour Float
DOUBLEdoublesetDoublemise à jour Double
VARBINARYbyte[ ]setBytesmise à jour Bytes
BINARYbyte[ ]setBytesmise à jour Bytes
DATEjava.sql.DatesetDatemise à jour Date
TIMEjava.sql.TimesetTimemise à jour Time
TIMESTAMPjava.sql.TimestampsetTimestampmise à jour Timestamp
CLOBjava.sql.ClobsetClobmise à jour Clob
BLOBjava.sql.BlobsetBlobmise à jour Blob
ARRAYjava.sql.ArraysetARRAYmise à jour ARRAY
REFjava.sql.RefSetRefmise à jour Ref
STRUCTjava.sql.StructSetStructmise à 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 SQLJDBC / JavasetXXXgetXXX
VARCHARjava.lang.StringsetStringgetString
CHARjava.lang.StringsetStringgetString
LONGVARCHARjava.lang.StringsetStringgetString
BITbooleansetBooleangetBoolean
NUMERICjava.math.BigDecimalsetBigDecimalgetBigDecimal
TINYINTbytesetBytegetByte
SMALLINTshortsetShortgetShort
INTEGERintsetIntgetInt
BIGINTlongsetLonggetLong
REALfloatsetFloatgetFloat
FLOATfloatsetFloatgetFloat
DOUBLEdoublesetDoublegetDouble
VARBINARYbyte[ ]setBytesgetBytes
BINARYbyte[ ]setBytesgetBytes
DATEjava.sql.DatesetDategetDate
TIMEjava.sql.TimesetTimegetTime
TIMESTAMPjava.sql.TimestampsetTimestampgetTimestamp
CLOBjava.sql.ClobsetClobgetClob
BLOBjava.sql.BlobsetBlobgetBlob
ARRAYjava.sql.ArraysetARRAYgetARRAY
REFjava.sql.RefSetRefgetRef
STRUCTjava.sql.StructSetStructgetStruct

Type de données de date et d'heure

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:\>

Traitement des valeurs NULL

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;
}