سؤال: كيفية التعامل مع أنواع java.time مثل LocalDate عبر JDBC مع قاعدة بيانات SQL، مثل H2?
Legacy النهج: استخدام PreparedStatement::setDate وResultSet::getDate يعمل مع النوع java.sql.Date القديم. ومع ذلك، فمن الأفضل تجنب هذه الفئات القديمة الإشكالية.
النهج الحديث: هناك طريقان رئيسيان:
مثال على استخدام برنامج التشغيل المتوافق مع JDBC 4.2:
// أدخل LocalDate كـ SQL DATE PreparationStatement.setObject(1, myLocalDate); // استرداد LocalDate من SQL DATE LocalDate localDate = myResultSet.getObject("my_date_column"، LocalDate.class)؛// Insert LocalDate as SQL DATE preparedStatement.setObject(1, myLocalDate); // Retrieve LocalDate from SQL DATE LocalDate localDate = myResultSet.getObject("my_date_column", LocalDate.class);
مثال على استخدام برنامج تشغيل غير متوافق:
// تحويل LocalDate إلى java.sql تاريخ الإدراج java.sql.Date mySqlDate = java.sql.Date.valueOf(myLocalDate); PreparationStatement.setDate(1, mySqlDate); // قم بتحويل java.sql.Date إلى LocalDate بعد استرجاعه LocalDate localDate = mySqlDate.toLocalDate();// Convert LocalDate to java.sql.Date for insertion java.sql.Date mySqlDate = java.sql.Date.valueOf(myLocalDate); preparedStatement.setDate(1, mySqlDate); // Convert java.sql.Date to LocalDate after retrieval LocalDate localDate = mySqlDate.toLocalDate();
التوصية: استخدم النهج المتوافق مع JDBC 4.2 كلما أمكن ذلك. إنه أبسط وآمن من حيث النوع. ومع ذلك، لا يزال من الممكن استخدام الطريقة غير المتوافقة مع برامج التشغيل التي لا تدعم JDBC 4.2.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3