2011-03-16 20 views
7

क्या आप disconnect के हिस्सों को कॉल-शोर के रूप में कॉल करेंगे या आप इसे छोड़ देंगे?डीबीआई: डिस्कनेक्ट - प्रश्न

use DBI; 

my $dbh = DBI->connect ... 
... 
... 
END { 
    $dbh->disconnect or die $DBI::errstr if $dbh; 
} 
+1

कम से कम, RaiseError या HandleError का उपयोग करके, आपको 'या मरने की आवश्यकता नहीं है ...' – runrig

उत्तर

3

डेटाबेस से स्पष्ट डिस्कनेक्शन सख्ती से जरूरी नहीं है यदि आप सभी काम करने के बाद अपने प्रोग्राम से बाहर निकल रहे हैं। लेकिन यह एक अच्छा विचार है, खासकर उन कार्यक्रमों में जिनमें आपने एकाधिक कनेक्शन किए हैं या कई अनुक्रमिक कनेक्शन होंगे।

अधिक जानकारी के लिए Programming the Perl DBI देखें।

+0

लिंक की मृत्यु हो गई है। यहां एक लिंक है जो यह आखिरी सामग्री के समान दिखता था। https://web.archive.org/web/20141018180208/http://oreilly.com/catalog/perldbi/chapter/ch04.html – Karl

0

लिपि के अंत में, शायद इससे कोई फर्क नहीं पड़ता। हालांकि यह आपके लिए स्पष्ट रूप से साफ करने के लिए वैसे भी इसे जोड़ने के लायक हो सकता है। यह निश्चित रूप से चोट नहीं पहुंचाएगा और मुझे संदेह है कि ऐसी कुछ स्थितियां हो सकती हैं जहां यह निश्चित रूप से मदद करेगी।

2

सावधान रहें।

perl -le 'use DBI;my $h = DBI->connect("dbi:ODBC:test","test","test", {AutoCommit => 0, RaiseError=>1}); $h->do(q/insert into mje values(?, ?)/, undef, 1, "fred");' 

जारी रोलबैक() स्पष्ट डिस्कनेक्ट बिना (DBD :: ODBC :: db संभाल परीक्षण के) को नष्ट करने के कारण: यदि आप AutoCommit को निष्क्रिय है और क्या आप डिस्कनेक्ट पर निर्भर करता है के लिए प्रतिबद्ध नहीं है आप कुछ दिलचस्प स्थितियों हिट कर सकते हैं ।

नोट, क्योंकि कोई स्पष्ट डिस्कनेक्ट नहीं था, सम्मिलित किया गया था और हमें एक त्रुटि मिली।

perl -le 'use DBI;my $h = DBI->connect("dbi:ODBC:test","test","test", {AutoCommit => 0, RaiseError=>1}); $h->do(q/insert into mje values(?, ?)/, undef, 1, "fred");$h->disconnect or die $DBI::errstr;' 

यहां ऐसा प्रतीत होता है कि कुछ भी गलत नहीं है, भले ही प्रतिबद्धता नहीं कहा गया था लेकिन पंक्तियां डेटाबेस में नहीं आईं। तो डिस्कनेक्ट ने तथ्य को मुखौटा किया कि पंक्तियां नहीं की गई थीं।

0

मुझे नहीं लगता कि यह सख्ती से जरूरी है लेकिन मुझे यह साफ-सुथरा लगता है।

संबंधित मुद्दे