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