JDBC - Veri Türleri

JDBC sürücüsü, Java veri türünü veritabanına göndermeden önce uygun JDBC türüne dönüştürür. Çoğu veri türü için varsayılan bir eşleme kullanır. Örneğin, bir Java int, bir SQL INTEGER'a dönüştürülür. Sürücüler arasında tutarlılık sağlamak için varsayılan eşlemeler oluşturulmuştur.

Aşağıdaki tablo, PreparedStatement veya CallableStatement nesnesinin setXXX () yöntemini veya ResultSet.updateXXX () yöntemini çağırdığınızda, Java veri türünün dönüştürüldüğü varsayılan JDBC veri türünü özetler.

SQL JDBC / Java setXXX updateXXX
VARCHAR java.lang.String setString updateString
CHAR java.lang.String setString updateString
LONGVARCHAR java.lang.String setString updateString
BİT Boole setBoolean updateBoolean
SAYISAL java.math.BigDecimal setBigDecimal updateBigDecimal
TINYINT bayt setByte updateByte
SMALLINT kısa setShort updateShort
TAM int setInt updateInt
BÜYÜK uzun setLong updateLong
GERÇEK yüzer setFloat updateFloat
YÜZER yüzer setFloat updateFloat
ÇİFT çift setDouble updateDouble
DEĞİŞKEN bayt [] setBytes updateBytes
İKİLİ bayt [] setBytes updateBytes
TARİH java.sql.Date tarih ayarla Güncelleme Tarihi
ZAMAN java.sql.Time ayarlanan zaman Güncelleme zamanı
TIMESTAMP java.sql.Timestamp setTimestamp updateTimestamp
CLOB java.sql.Clob setClob updateClob
BLOB java.sql.Blob setBlob updateBlob
DİZİ java.sql.Array setARRAY updateARRAY
REF java.sql.Ref SetRef updateRef
YAPISI java.sql.Struct SetStruct updateStruct

JDBC 3.0, BLOB, CLOB, ARRAY ve REF veri türleri için gelişmiş desteğe sahiptir. ResultSet nesnesi, sunucu üzerindeki ilgili verileri doğrudan değiştirmenize olanak tanıyan updateBLOB (), updateCLOB (), updateArray () ve updateRef () yöntemlerine sahiptir.

SetXXX () ve updateXXX () yöntemleri, belirli Java türlerini belirli JDBC veri türlerine dönüştürmenizi sağlar. SetObject () ve updateObject () yöntemleri, hemen hemen her Java türünü JDBC veri türüyle eşlemenize olanak sağlar.

ResultSet nesnesi, sütun değerini almak için her veri türü için karşılık gelen getXXX () yöntemini sağlar. Her yöntem sütun adıyla veya sıra konumuna göre kullanılabilir.

SQL JDBC / Java setXXX getXXX
VARCHAR java.lang.String setString getString
CHAR java.lang.String setString getString
LONGVARCHAR java.lang.String setString getString
BİT Boole setBoolean getBoolean
SAYISAL java.math.BigDecimal setBigDecimal getBigDecimal
TINYINT bayt setByte getByte
SMALLINT kısa setShort getShort
TAM int setInt getInt
BÜYÜK uzun setLong getLong
GERÇEK yüzer setFloat getFloat
YÜZER yüzer setFloat getFloat
ÇİFT çift setDouble getDouble
DEĞİŞKEN bayt [] setBytes getBytes
İKİLİ bayt [] setBytes getBytes
TARİH java.sql.Date tarih ayarla getDate
ZAMAN java.sql.Time ayarlanan zaman getTime
TIMESTAMP java.sql.Timestamp setTimestamp getTimestamp
CLOB java.sql.Clob setClob getClob
BLOB java.sql.Blob setBlob getBlob
DİZİ java.sql.Array setARRAY getARRAY
REF java.sql.Ref SetRef getRef
YAPISI java.sql.Struct SetStruct getStruct

Tarih ve Saat Veri Türleri

Java.sql.Date sınıfı SQL DATE türüne, java.sql.Time ve java.sql.Timestamp sınıfları sırasıyla SQL TIME ve SQL TIMESTAMP veri türlerine eşlenir.

Aşağıdaki örnek, Tarih ve Saat sınıflarının standart Java tarih ve saat değerlerini SQL veri türü gereksinimleriyle eşleşecek şekilde nasıl biçimlendirdiğini gösterir.

import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.*;

public class SqlDateTime {
   public static void main(String[] args) {
      //Get standard date and time
      java.util.Date javaDate = new java.util.Date();
      long javaTime = javaDate.getTime();
      System.out.println("The Java Date is:" + 
             javaDate.toString());

      //Get and display SQL DATE
      java.sql.Date sqlDate = new java.sql.Date(javaTime);
      System.out.println("The SQL DATE is: " + 
             sqlDate.toString());

      //Get and display SQL TIME
      java.sql.Time sqlTime = new java.sql.Time(javaTime);
      System.out.println("The SQL TIME is: " + 
             sqlTime.toString());
      //Get and display SQL TIMESTAMP
      java.sql.Timestamp sqlTimestamp =
      new java.sql.Timestamp(javaTime);
      System.out.println("The SQL TIMESTAMP is: " + 
             sqlTimestamp.toString());
     }//end main
}//end SqlDateTime

Şimdi yukarıdaki örneği şu şekilde derleyelim -

C:\>javac SqlDateTime.java
C:\>

Koştuğun zaman JDBCExample, aşağıdaki sonucu verir -

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

NULL Değerleri İşleme

SQL'in NULL değerleri kullanımı ve Java'nın null kullanımı farklı kavramlardır. Yani, Java'da SQL NULL değerlerini işlemek için kullanabileceğiniz üç taktik vardır -

  • İlkel veri türlerini döndüren getXXX () yöntemlerini kullanmaktan kaçının.

  • İlkel veri türleri için sarmalayıcı sınıfları kullanın ve getXXX () yöntemi tarafından döndürülen değeri alan sarmalayıcı sınıf değişkeninin null olarak ayarlanıp ayarlanmayacağını test etmek için ResultSet nesnesinin wasNull () yöntemini kullanın.

  • GetXXX () yöntemi tarafından döndürülen değeri alan ilkel değişkenin bir NULL'u temsil etmek için seçtiğiniz kabul edilebilir bir değere ayarlanıp ayarlanmayacağını test etmek için ilkel veri türlerini ve ResultSet nesnesinin wasNull () yöntemini kullanın.

İşte bir NULL değeri işlemek için bir örnek -

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