JDBC - Tipe Data

Driver JDBC mengonversi tipe data Java ke tipe JDBC yang sesuai, sebelum mengirimnya ke database. Ini menggunakan pemetaan default untuk sebagian besar tipe data. Misalnya, Java int diubah menjadi SQL INTEGER. Pemetaan default dibuat untuk memberikan konsistensi antar driver.

Tabel berikut ini merangkum tipe data JDBC default yang dikonversi menjadi tipe data Java, saat Anda memanggil metode setXXX () objek PreparedStatement atau CallableStatement atau metode ResultSet.updateXXX ().

SQL JDBC / Java setXXX updateXXX
VARCHAR java.lang.String setString updateString
ARANG java.lang.String setString updateString
LONGVARCHAR java.lang.String setString updateString
SEDIKIT boolean setBoolean updateBoolean
NUMERIK java.math.BigDecimal setBigDecimal updateBigDecimal
TINYINT byte setByte updateByte
SMALLINT pendek setShort updateShort
BILANGAN BULAT int setInt updateInt
BIGINT panjang setLong updateLong
NYATA mengapung setFloat updateFloat
MENGAPUNG mengapung setFloat updateFloat
DUA KALI LIPAT dua kali lipat setDouble updateDouble
VARBINER byte [] setBytes updateBytes
BINER byte [] setBytes updateBytes
TANGGAL java.sql.Date Atur tanggal updateDate
WAKTU java.sql.Time Atur waktu updateTime
TIMESTAMP java.sql.Timestamp setTimestamp updateTimestamp
CLOB java.sql.Clob setClob updateClob
GUMPAL java.sql.Blob setBlob updateBlob
HIMPUNAN java.sql.Array setARRAY updateARRAY
REF java.sql.Ref SetRef updateRef
STRUKT java.sql.Struct SetStruct updateStruct

JDBC 3.0 telah meningkatkan dukungan untuk tipe data BLOB, CLOB, ARRAY, dan REF. Objek ResultSet sekarang memiliki metode updateBLOB (), updateCLOB (), updateArray (), dan updateRef () yang memungkinkan Anda memanipulasi data terkait secara langsung di server.

Metode setXXX () dan updateXXX () memungkinkan Anda untuk mengonversi tipe Java tertentu ke tipe data JDBC tertentu. Metode, setObject () dan updateObject (), memungkinkan Anda untuk memetakan hampir semua tipe Java ke tipe data JDBC.

Objek ResultSet menyediakan metode getXXX () yang sesuai untuk setiap tipe data untuk mengambil nilai kolom. Setiap metode dapat digunakan dengan nama kolom atau dengan posisi ordinalnya.

SQL JDBC / Java setXXX getXXX
VARCHAR java.lang.String setString getString
ARANG java.lang.String setString getString
LONGVARCHAR java.lang.String setString getString
SEDIKIT boolean setBoolean getBoolean
NUMERIK java.math.BigDecimal setBigDecimal getBigDecimal
TINYINT byte setByte getByte
SMALLINT pendek setShort getShort
BILANGAN BULAT int setInt getInt
BIGINT panjang setLong getLong
NYATA mengapung setFloat getFloat
MENGAPUNG mengapung setFloat getFloat
DUA KALI LIPAT dua kali lipat setDouble getDouble
VARBINER byte [] setBytes getBytes
BINER byte [] setBytes getBytes
TANGGAL java.sql.Date Atur tanggal getDate
WAKTU java.sql.Time Atur waktu getTime
TIMESTAMP java.sql.Timestamp setTimestamp getTimestamp
CLOB java.sql.Clob setClob getClob
GUMPAL java.sql.Blob setBlob getBlob
HIMPUNAN java.sql.Array setARRAY getARRAY
REF java.sql.Ref SetRef getRef
STRUKT java.sql.Struct SetStruct getStruct

Tipe Data Tanggal & Waktu

Kelas java.sql.Date dipetakan ke tipe SQL DATE, dan kelas java.sql.Time dan java.sql.Timestamp masing-masing dipetakan ke tipe data SQL TIME dan SQL TIMESTAMP.

Contoh berikut menunjukkan bagaimana kelas Tanggal dan Waktu memformat nilai tanggal dan waktu Java standar agar sesuai dengan persyaratan tipe data 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) {
      //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

Sekarang mari kita kompilasi contoh di atas sebagai berikut -

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

Saat kamu lari JDBCExample, itu menghasilkan hasil sebagai berikut -

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

Menangani Nilai NULL

Penggunaan nilai NULL oleh SQL dan penggunaan null oleh Java adalah konsep yang berbeda. Jadi, untuk menangani nilai SQL NULL di Java, ada tiga taktik yang dapat Anda gunakan -

  • Hindari menggunakan metode getXXX () yang mengembalikan tipe data primitif.

  • Gunakan kelas pembungkus untuk tipe data primitif, dan gunakan metode wasNull () objek ResultSet untuk menguji apakah variabel kelas pembungkus yang menerima nilai yang dikembalikan oleh metode getXXX () harus disetel ke nol.

  • Gunakan tipe data primitif dan metode wasNull () objek ResultSet untuk menguji apakah variabel primitif yang menerima nilai yang dikembalikan oleh metode getXXX () harus disetel ke nilai yang dapat diterima yang Anda pilih untuk mewakili NULL.

Berikut adalah salah satu contoh untuk menangani nilai 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;
}