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