निम्नलिखित प्रक्रियाओं से किया जाना चाहिए (क्रम में)
ResultSet
PreparedStatement
Connection
।
इसके अलावा, finally
में बंद होने की गारंटी के करीब सभी जेडीबीसी संबंधित वस्तुओं को बंद करने की सलाह दी जाती है।
//Do the following when dealing with JDBC. This is how I've implemented my JDBC transactions through DAO....
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = ....
ps = conn.prepareStatement(...);
//Populate PreparedStatement
rs = ps.executeQuery();
} catch (/*All relevant exceptions such as SQLException*/Exception e) {
logger.error("Damn, stupid exception: " , e);
} finally {
if (rs != null) {
try {
rs.close();
rs = null;
} catch (SQLException e) {
logger.error(e.getMessage(), e.fillInStackTrace());
}
}
if (ps != null) {
try {
ps.close();
ps = null;
} catch (SQLException e) {
logger.error(e.getMessage(), e.fillInStackTrace());
}
}
try {
if (conn!= null && !conn.isClosed()){
if (!conn.getAutoCommit()) {
conn.commit();
conn.setAutoCommit(true);
}
conn.close();
conn= null;
}
} catch (SQLException sqle) {
logger.error(sqle.getMessage(), sqle.fillInStackTrace());
}
}
आप देख सकते हैं अगर मेरा वस्तुओं बातिल और कनेक्शन के लिए कर रहे हैं देख लिया है, जाँच पहले यदि कनेक्शन autocommited नहीं है। बहुत से लोग इसे जांचने में असफल रहते हैं और महसूस करते हैं कि लेनदेन डीबी के लिए प्रतिबद्ध नहीं है।
स्रोत
2010-03-02 14:40:40
आपने इसे कहाँ देखा? – BalusC
हालांकि नमूना के अनुसार, कनेक्शन बंद होने पर बयान बंद होना चाहिए, जेडीबीसी ड्राइवरों को इसके साथ समस्याएं दिखाई दे रही हैं, इसलिए इसे कथन (और परिणाम सेट) को स्पष्ट रूप से बंद करने के लिए अच्छा अभ्यास माना जाता है। – Yishai
उलटा क्रम में चीजों को बंद करें आपने उन्हें खोला। सारी चीजें। वास्तव में – EJP