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

JDBC-Datentypen

Der JDBC-Treiber konvertiert Java-Daten typen in geeignete JDBC-Typen, bevor er sie an die Datenbank sendet. Er verwendet für die meisten Daten typen Standardzuordnungen. Zum Beispiel wird Java int in SQL INTEGER konvertiert. Standardzuordnungen wurden erstellt, um die Konsistenz zwischen Treibern zu gewährleisten.

Bei der Aufrufung der setXXX ()-Methoden von PreparedStatement- oder CallableStatement-Objekten oder der ResultSet.updateXXX ()-Methoden wird in der folgenden Tabelle eine Zusammenfassung der Standard-JDBC-Daten типenkonvertierungen gezeigt, die von Java-Daten typen durchgeführt werden.

s SQLJDBC / JavasetXXXXXX aktualisieren
VARCHARjava.lang.StringsetStringupdateString
CHARjava.lang.StringsetStringupdateString
LONGVARCHARjava.lang.StringsetStringupdateString
BITbooleansetBooleanupdateBoolean
NUMERICjava.math.BigDecimalsetBigDecimalupdateBigDecimal
TINYINTbytesetByteupdateByte
SMALLINTshortsetShortupdateShort
INTEGERintsetIntupdateInt
BIGINTlongsetLongupdateLong
REALfloatsetFloatupdateFloat
FLOATfloatsetFloatupdateFloat
DOUBLEdoublesetDoubleupdateDouble
VARBINARYbyte[ ]setBytesupdateBytes
BINARYbyte[ ]setBytesupdateBytes
DATEjava.sql.DatesetDateupdateDate
TIMEjava.sql.TimesetTimeupdateTime
TIMESTAMPjava.sql.TimestampsetTimestampupdateTimestamp
CLOBjava.sql.ClobsetClobupdateClob
BLOBjava.sql.BlobsetBlobupdateBlob
ARRAYjava.sql.ArraysetARRAYupdateARRAY
REFjava.sql.RefSetRefupdateRef
STRUCTjava.sql.StructSetStructupdateStruct

JDBC 3.0 erweitert die Unterstützung für die Datenarten BLOB, CLOB, ARRAY und REF. Das ResultSet-Objekt verfügt nun über die Methoden updateBLOB(), updateCLOB(), updateArray() und updateRef(), mit denen Sie die entsprechenden Daten direkt auf dem Server bearbeiten können.

Mit den Methoden setXXX() und updateXXX() können spezifische Java-Typen in spezifische JDBC-Datenarten umgewandelt werden. Mit den Methoden setObject() und updateObject() kann fast jeder Java-Typ auf JDBC-Datenarten gemappt werden.

Das ResultSet-Objekt bietet für jeden Datenart eine entsprechende getXXX ()-Methode, um die Spaltenwerte abzurufen. Jede Methode kann zusammen mit dem Spaltennamen oder seiner Positionsnummer verwendet werden.

s 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

Datum und Zeit Datenart

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
Das Java-Date ist:Tue Aug 18 13:46:02 GMT+04:00 2009
Der SQL-DATE ist: 2009-08-18
Der SQL-TIME ist: 13:46:02
Der SQL-TIMESTAMP ist: 2009-08-18 13:46:02.828
C:\>

Verarbeitung von NULL-Werten

Die Verwendung von NULL-Werten in SQL und die Verwendung von null in Java sind unterschiedliche Konzepte. Daher können Sie in Java drei Strategien verwenden, um SQL NULL-Werte zu verarbeiten-

  • Vermeiden Sie die Verwendung von Methoden getXXX() zur Rückgabe ursprünglicher Datentypen.

  • Verwenden Sie Wrapper-Klassen für ursprüngliche Datentypen und testen Sie die Variable des Wrapper-Typs, die von der Methode getXXX() zurückgegeben wird, mit der Methode wasNull() des ResultSet-Objekts, um zu bestimmen, ob sie auf null gesetzt werden sollte.

  • Testen Sie den ursprünglichen Datentyp und die Methode wasNull() des ResultSet-Objekts, um zu bestimmen, ob die ursprüngliche Variable, die von der Methode getXXX() zurückgegeben wird, auf den von Ihnen gewählten annehmbaren Wert für NULL gesetzt werden sollte.

Dies ist ein Beispiel zur Verarbeitung von NULL-Werten-

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