Учебники

JDBC — Типы данных

Драйвер JDBC преобразует тип данных Java в соответствующий тип JDBC перед отправкой в ​​базу данных. Он использует отображение по умолчанию для большинства типов данных. Например, Java int преобразуется в SQL INTEGER. Для обеспечения согласованности между драйверами были созданы сопоставления по умолчанию.

В следующей таблице приведены типы данных JDBC по умолчанию, в которые преобразуется тип данных Java, когда вы вызываете метод setXXX () объекта PreparedStatement или CallableStatement или метод ResultSet.updateXXX ().

SQL JDBC / Java SetXXX updateXXX
VARCHAR java.lang.String SetString updateString
CHAR java.lang.String SetString updateString
LONGVARCHAR java.lang.String SetString updateString
НЕМНОГО логический setBoolean updateBoolean
NUMERIC java.math.BigDecimal setBigDecimal updateBigDecimal
TINYINT байт setByte updateByte
SMALLINT короткая setShort updateShort
INTEGER ИНТ SetInt updateInt
BIGINT долго setLong updateLong
РЕАЛЬНЫЙ поплавок SetFloat updateFloat
FLOAT поплавок SetFloat updateFloat
DOUBLE двойной setDouble updateDouble
VARBINARY байт [] setBytes updateBytes
BINARY байт [] setBytes updateBytes
ДАТА java.sql.Date SETDATE updateDate
ВРЕМЯ java.sql.Time установленное время Время обновления
TIMESTAMP java.sql.Timestamp setTimestamp updateTimestamp
CLOB java.sql.Clob setClob updateClob
большой двоичный объект java.sql.Blob setBlob updateBlob
ARRAY java.sql.Array setARRAY updateARRAY
REF java.sql.Ref SetRef updateRef
STRUCT java.sql.Struct SetStruct updateStruct

JDBC 3.0 имеет расширенную поддержку типов данных BLOB, CLOB, ARRAY и REF. Объект ResultSet теперь имеет методы updateBLOB (), updateCLOB (), updateArray () и updateRef (), которые позволяют напрямую манипулировать соответствующими данными на сервере.

Методы setXXX () и updateXXX () позволяют преобразовывать определенные типы Java в конкретные типы данных JDBC. Методы setObject () и updateObject () позволяют сопоставить практически любой тип Java с типом данных JDBC.

Объект ResultSet предоставляет соответствующий метод getXXX () для каждого типа данных для получения значения столбца. Каждый метод может использоваться с именем столбца или его порядковым положением.

SQL JDBC / Java SetXXX getXXX
VARCHAR java.lang.String SetString GetString
CHAR java.lang.String SetString GetString
LONGVARCHAR java.lang.String SetString GetString
НЕМНОГО логический setBoolean getBoolean
NUMERIC java.math.BigDecimal setBigDecimal getBigDecimal
TINYINT байт setByte GetByte
SMALLINT короткая setShort getShort
INTEGER ИНТ SetInt GetInt
BIGINT долго setLong getLong
РЕАЛЬНЫЙ поплавок SetFloat GetFloat
FLOAT поплавок SetFloat GetFloat
DOUBLE двойной setDouble getDouble
VARBINARY байт [] setBytes GetBytes
BINARY байт [] setBytes GetBytes
ДАТА java.sql.Date SETDATE GetDate
ВРЕМЯ java.sql.Time установленное время GetTime
TIMESTAMP java.sql.Timestamp setTimestamp getTimestamp
CLOB java.sql.Clob setClob getClob
большой двоичный объект java.sql.Blob setBlob getBlob
ARRAY java.sql.Array setARRAY GetArray
REF java.sql.Ref SetRef getRef
STRUCT java.sql.Struct SetStruct getStruct

Типы данных даты и времени

Класс 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) {
      //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

Теперь давайте скомпилируем приведенный выше пример следующим образом:

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

Когда вы запускаете JDBCExample , он дает следующий результат —

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

Использование SQL значений NULL и использование NULL в Java — разные понятия. Итак, для обработки значений SQL NULL в Java вы можете использовать три тактики:

  • Избегайте использования методов getXXX (), которые возвращают примитивные типы данных.

  • Используйте классы-обертки для примитивных типов данных и используйте метод wasNull () объекта ResultSet, чтобы проверить, должна ли переменная класса-обертки, которая получила значение, возвращаемое методом getXXX (), быть установлена ​​в значение null.

  • Используйте примитивные типы данных и метод wasNull () объекта ResultSet, чтобы проверить, должно ли примитивная переменная, которая получила значение, возвращаемое методом getXXX (), быть установлена ​​в приемлемое значение, которое вы выбрали для представления значения NULL.

Избегайте использования методов getXXX (), которые возвращают примитивные типы данных.

Используйте классы-обертки для примитивных типов данных и используйте метод wasNull () объекта ResultSet, чтобы проверить, должна ли переменная класса-обертки, которая получила значение, возвращаемое методом getXXX (), быть установлена ​​в значение null.

Используйте примитивные типы данных и метод wasNull () объекта ResultSet, чтобы проверить, должно ли примитивная переменная, которая получила значение, возвращаемое методом getXXX (), быть установлена ​​в приемлемое значение, которое вы выбрали для представления значения NULL.

Вот один пример для обработки значения NULL —