سؤال

هل يتراجع Java Connection.cloud إلى كتلة نهائية؟.

أعلم أن .Net SqlConnection. Close يفعل ذلك.

مع هذا يمكنني أن أقوم بمحاولة/أخيرًا كتل بدون التقاط ...

مثال:

try {
    conn.setAutoCommit(false);
    ResultSet rs = executeQuery(conn, ...);
    ....
    executeNonQuery(conn, ...);
    ....

    conn.commit();
} finally {
   conn.close();
}
هل كانت مفيدة؟

المحلول

وفق جافادوك, ، يجب أن تحاول إما الالتزام أو التراجع قبل استدعاء طريقة الإغلاق.يتم تحديد النتائج بخلاف ذلك بالتنفيذ.

نصائح أخرى

في أي نظام قاعدة البيانات لقد عملت مع، ليس هناك ضرر في القيام التراجع مباشرة بعد ارتكابها، وذلك إذا ارتكبت في كتلة المحاولة، وتراجع في النهاية، الأمور الحصول على الملتزمين، في حين إذا استثناء أو أسباب العودة المبكرة لارتكاب ينبغي تفويتها، فإن التراجع التراجع عن الصفقة. ذلك الشيء آمن القيام به هو

try {
    conn.setAutoCommit(false);
    ResultSet rs = executeQuery(conn, ...);
    ....
    executeNonQuery(conn, ...);
    ....

    conn.commit();
} finally {
   conn.rollback();
   conn.close();
}

<وأ href = "http://swik.net/Hibernate/Hibernate+GroupBlog/Pop+Quiz:+Does+Connection.close()+result+in+commit+or+rollback+٪3F" يختلط = " noreferrer "> سائق JDBC أوراكل يرتكب على وثيقة () بشكل افتراضي. يجب أن لا تعتمد على هذا السلوك إذا كنت تنوي إرسال منصة متعددة رمز JDBC.

وسلوك مختلف تماما بين قواعد البيانات المختلفة. الأمثلة على ذلك:

أوراكل

وتلتزم المعاملة عند إغلاق اتصال مع معاملة مفتوحة (كماMr. امعة و安 الجديد 宇 المعلنة.

SQL خادم

<اقتباس فقرة>   

واستدعاء الأسلوب وثيق في منتصف معاملة يؤدي   الصفقة على التراجع.

الطريقة وثيقة (SQLServerConnection)

وولا جدوى من التراجع في منع أخيرا. بعد ارتكابها، وارتكاب ناجحا، لماذا لدحر؟ حتى لو كنت أنت، وأود أن التراجع في كتلة الصيد.

لماي JDBC، وتنفيذ تتحرك مرة أخرى الاتصال إذا أغلقت دون الدعوة إلى ارتكاب أو طرق العودة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top