English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يقوم مكتبة JDBC بتحويل نوع البيانات الجافا إلى نوع البيانات JDBC المناسب قبل إرسالها إلى قاعدة البيانات. يستخدمها لمعظم أنواع البيانات لتحديد الخريطة الافتراضية. على سبيل المثال، يتم تحويل int الجافا إلى INTEGER SQL. تم إنشاء الخريطة الافتراضية لتوفير توافق بين المكتبات.
عند استدعاء طرق setXXX () لـPreparedStatement أوCallableStatement أو طرق updateXXX () لـ ResultSet، يلخص الجدول أدناه تحويلات أنواع البيانات الجافا إلى أنواع البيانات JDBC الافتراضية.
الـSQL | JDBC / Java | setXXX | تحديث XXX |
---|---|---|---|
VARCHAR | java.lang.String | setString | updateString |
CHAR | java.lang.String | setString | updateString |
LONGVARCHAR | java.lang.String | setString | updateString |
BIT | boolean | setBoolean | updateBoolean |
NUMERIC | java.math.BigDecimal | setBigDecimal | updateBigDecimal |
TINYINT | byte | setByte | updateByte |
SMALLINT | short | setShort | updateShort |
INTEGER | int | setInt | updateInt |
BIGINT | long | setLong | updateLong |
REAL | float | setFloat | updateFloat |
FLOAT | float | setFloat | updateFloat |
DOUBLE | double | setDouble | updateDouble |
VARBINARY | byte[ ] | setBytes | updateBytes |
BINARY | byte[ ] | setBytes | updateBytes |
DATE | java.sql.Date | setDate | updateDate |
TIME | java.sql.Time | setTime | updateTime |
TIMESTAMP | java.sql.Timestamp | setTimestamp | updateTimestamp |
CLOB | java.sql.Clob | setClob | updateClob |
BLOB | 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()، يمكن تحويل نوع جافا المحدد إلى نوع بيانات JDBC المحدد. باستخدام طرق setObject() و updateObject()، يمكن تعيين تقريبًا أي نوع جافا إلى نوع بيانات 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 |
BIT | boolean | setBoolean | getBoolean |
NUMERIC | java.math.BigDecimal | setBigDecimal | getBigDecimal |
TINYINT | byte | setByte | getByte |
SMALLINT | short | setShort | getShort |
INTEGER | int | setInt | getInt |
BIGINT | long | setLong | getLong |
REAL | float | setFloat | getFloat |
FLOAT | float | setFloat | getFloat |
DOUBLE | double | setDouble | getDouble |
VARBINARY | byte[ ] | setBytes | getBytes |
BINARY | byte[ ] | setBytes | getBytes |
DATE | java.sql.Date | setDate | getDate |
TIME | java.sql.Time | setTime | getTime |
TIMESTAMP | java.sql.Timestamp | setTimestamp | getTimestamp |
CLOB | java.sql.Clob | setClob | getClob |
BLOB | 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 في الجاوا لتناسب متطلبات نوع البيانات 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:\>
استخدام 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; }