English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

أنواع البيانات الخاصة بـ JDBC

يقوم مكتبة JDBC بتحويل نوع البيانات الجافا إلى نوع البيانات JDBC المناسب قبل إرسالها إلى قاعدة البيانات. يستخدمها لمعظم أنواع البيانات لتحديد الخريطة الافتراضية. على سبيل المثال، يتم تحويل int الجافا إلى INTEGER SQL. تم إنشاء الخريطة الافتراضية لتوفير توافق بين المكتبات.

عند استدعاء طرق setXXX () لـPreparedStatement أوCallableStatement أو طرق updateXXX () لـ ResultSet، يلخص الجدول أدناه تحويلات أنواع البيانات الجافا إلى أنواع البيانات JDBC الافتراضية.

الـSQLJDBC / JavasetXXXتحديث XXX
VARCHARjava.lang.StringsetStringupdateString
CHARjava.lang.StringsetStringupdateString
LONGVARCHARjava.lang.StringsetStringupdateString
BITbooleansetBooleanupdateBoolean
NUMERICjava.math.BigDecimalsetBigDecimalupdateBigDecimal
TINYINTbytesetByteupdateByte
SMALLINTshortsetShortupdateShort
INTEGERintsetIntupdateInt
BIGINTlongsetLongupdateLong
REALfloatsetFloatupdateFloat
FLOATfloatsetFloatupdateFloat
DOUBLEdoublesetDoubleupdateDouble
VARBINARYbyte[ ]setBytesupdateBytes
BINARYbyte[ ]setBytesupdateBytes
DATEjava.sql.DatesetDateupdateDate
TIMEjava.sql.TimesetTimeupdateTime
TIMESTAMPjava.sql.TimestampsetTimestampupdateTimestamp
CLOBjava.sql.ClobsetClobupdateClob
BLOBjava.sql.BlobsetBlobupdateBlob
ARRAYjava.sql.ArraysetARRAYupdateARRAY
REFjava.sql.RefSetRefupdateRef
STRUCTjava.sql.StructSetStructupdateStruct

تم تعزيز دعم JDBC 3.0 لمجموعات البيانات BLOB، CLOB، ARRAY و REF. الآن يحتوي علىResultSet على طرق updateBLOB()، updateCLOB()، updateArray() و updateRef()، مما يتيح لك العمل بشكل مباشر على البيانات المناسبة على الخادم.

استخدام طرق setXXX() و updateXXX()، يمكن تحويل نوع جافا المحدد إلى نوع بيانات JDBC المحدد. باستخدام طرق setObject() و updateObject()، يمكن تعيين تقريبًا أي نوع جافا إلى نوع بيانات JDBC.

ResultSet جسمه برای هر نوع داده، روش‌های getXXX () مناسب را ارائه می‌دهد تا مقادیر ستون‌ها را به دست آوریم. هر روش می‌تواند با نام ستون یا موقعیت شماره‌ای آن استفاده شود.

الـSQLJDBC / JavasetXXXgetXXX
VARCHARjava.lang.StringsetStringgetString
CHARjava.lang.StringsetStringgetString
LONGVARCHARjava.lang.StringsetStringgetString
BITbooleansetBooleangetBoolean
NUMERICjava.math.BigDecimalsetBigDecimalgetBigDecimal
TINYINTbytesetBytegetByte
SMALLINTshortsetShortgetShort
INTEGERintsetIntgetInt
BIGINTlongsetLonggetLong
REALfloatsetFloatgetFloat
FLOATfloatsetFloatgetFloat
DOUBLEdoublesetDoublegetDouble
VARBINARYbyte[ ]setBytesgetBytes
BINARYbyte[ ]setBytesgetBytes
DATEjava.sql.DatesetDategetDate
TIMEjava.sql.TimesetTimegetTime
TIMESTAMPjava.sql.TimestampsetTimestampgetTimestamp
CLOBjava.sql.ClobsetClobgetClob
BLOBjava.sql.BlobsetBlobgetBlob
ARRAYjava.sql.ArraysetARRAYgetARRAY
REFjava.sql.RefSetRefgetRef
STRUCTjava.sql.StructSetStructgetStruct

نوع داده‌های تاریخ و زمان

java.sql.Date كلاس به نوع SQL DATE تقابلی دارد، در حالی که کلاس‌های java.sql.Time و java.sql.Timestamp به ترتیب به نوع SQL TIME و SQL TIMESTAMP داده‌های نوعی تقابلی دارند.

هذا المثال يوضح كيفية تنسيق كلاً من كلاً من Date وTime في الجاوا لتناسب متطلبات نوع البيانات 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) {
      //الحصول على التاريخ والوقت القياسي
      java.util.Date javaDate = new java.util.Date();
      long javaTime = javaDate.getTime();
      System.out.println("التاريخ الجاوا هو:" + 
             javaDate.toString());
      //الحصول على عرض DATE SQL
      java.sql.Date sqlDate = new java.sql.Date(javaTime);
      System.out.println("التاريخ SQL هو: " + 
             sqlDate.toString());
      //الحصول على عرض TIME SQL
      java.sql.Time sqlTime = new java.sql.Time(javaTime);
      System.out.println("الوقت SQL هو: " + 
             sqlTime.toString());
      //الحصول على عرض TIMESTAMP SQL
      java.sql.Timestamp sqlTimestamp =
      new java.sql.Timestamp(javaTime);
      System.out.println("التاريخ الجاوا هو: " + 
             sqlTimestamp.toString());
     //انتهاء main
//انتهاء SqlDateTime

الآن دعونا نكتب الكود التالي للترميز المثال، كما يلي:

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

عند التشغيلJDBCExample،سيكون هناك نتيجة كما يلي-

C:\>java SqlDateTime
التاريخ الجاوا هو:Tue Aug 18 13:46:02 GMT+04:00 2009
التاريخ SQL هو: 2009-08-18
الوقت SQL هو: 13:46:02
الوقت SQL هو: 2009-08-18 13:46:02.828
C:\>

معالجة القيم NULL

استخدام SQL للقيم NULL ومستخدم Java لـ null هي مفاهيم مختلفة. لذا، لمعالجة القيم NULL الخاصة بـ SQL في Java، يمكنك استخدام ثلاث استراتيجيات-

  • تجنب استخدام طرق getXXX () التي تعود أنواع البيانات الأصلية.

  • تستخدم كلاً من أنواع البيانات الأصلية والكلاسيكية، واستخدم وظيفة wasNull () من ResultSet لاختبار القيم التي تعود من getXXX () إذا كان يجب إعداد المتغير الكلاسيكي الذي اخترته كـ null.

  • تستخدم أنواع البيانات الأصلية والوظيفة wasNull () من ResultSet لاختبار القيم التي تعود من getXXX () إذا كان يجب إعداد المتغير الأصلي الذي اخترته كقيمة القبول الخاصة بك لـ NULL.

هذا مثال على معالجة القيم 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;
}