2015-06-03 3 views
11

समस्या का संक्षिप्त परिचय:matlab में देशी ओडीबीसी कनेक्शन की स्थिति की जांच कैसे करें?

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

मैं matlab में एमएस SQL ​​सर्वर डाटाबेस से कनेक्ट करने के लिए निम्न कोड लिखा है:

conn=database.ODBCConnection('MS SQL SERVER','',''); 
insert(conn,'trace',{'obj_id','obj_type_id','time_step','pos_x','pos_y','vel_x','vel_y'},[1,1,1,0,0,0,0]); 
close(conn); 

और हर चीज ठीक था।

तो मैंने त्रुटि संदेश त्रुटि संदेश देखने के लिए एक और पंक्ति (डालने का प्रयास किया) तो मैटलैब बंद हुआ (घातक त्रुटि के कारण) कोई त्रुटि संदेश दिखाए बिना।

मैं निम्नलिखित कार्य नई raws डालने से पहले डेटाबेस कनेक्शन की स्थिति प्राप्त करने के लिए उपयोग करने के लिए करने की कोशिश की:

isconnection(conn); 
ping(conn); 

लेकिन यह कहते

अपरिभाषित समारोह प्रकार के इनपुट तर्क के लिए 'पिंग' 'डेटाबेस .ODBCConnection '।

प्रकार 'database.ODBCConnection'

के इनपुट तर्क के लिए अपरिभाषित समारोह 'isconnection' भी मैं कोशिश-कैच ब्लॉक का उपयोग करने की कोशिश की, लेकिन यह काम नहीं किया और मैटलैब बंद गंभीर त्रुटि के लिए।

इसलिए मैं जानना चाहता हूं कि बंद कनेक्शन के मामले में अचानक मैटलैब के करीब बंद होने से देशी ओडीबीसी की चेक स्थिति का कोई तरीका है ??


अद्यतन:

>> conn=database.ODBCConnection('MS SQL SERVER','','') 

conn = 

ODBCConnection with properties: 

    Instance: 'MS SQL SERVER' 
    UserName: '' 
    Message: [] 
    Handle: [1x1 database.internal.ODBCConnectHandle] 
    TimeOut: 0 
AutoCommit: 0 
     Type: 'ODBCConnection Object' 

>> close(conn) 
>> conn 

conn = 

ODBCConnection with properties: 

    Instance: 'MS SQL SERVER' 
    UserName: '' 
    Message: [] 
    Handle: [1x1 database.internal.ODBCConnectHandle] 
    TimeOut: 0 
AutoCommit: 0 
     Type: 'ODBCConnection Object' 

कोई गुण या संदेश से पहले बदल गया है और कनेक्शन बंद करने के बाद, समस्या मैं कैसे जांच करने के लिए नहीं पता है कि अगर एक कनेक्शन है कि अभी भी एक कार्यक्रम के अन्य हिस्सों में खुला या बंद! इस मामले में यदि कोई कनेक्शन बंद होने पर मैं एक सम्मिलित आदेश का उपयोग करता हूं, मैटलैब अचानक समाप्त हो जाता है (और संदेश दिखाएं MATLAB (R2013B) ने काम करना बंद कर दिया है), इसलिए मैं जानना चाहता हूं कि मूल ओडीबीसी कनेक्शन पहले बंद कर दिया है?


इसके अलावा अद्यतन

>> conn=database('MS SQL SERVER','','') 

conn = 

    Instance: 'MS SQL SERVER' 
    UserName: '' 
    Driver: [] 
     URL: [] 
Constructor: [1x1 com.mathworks.toolbox.database.databaseConnect] 
    Message: [] 
    Handle: [1x1 sun.jdbc.odbc.JdbcOdbcConnection] 
    TimeOut: 0 
AutoCommit: 'on' 
     Type: 'Database Object' 

>> isconnection(conn) 

ans = 

1 

>> close(conn) 
>> isconnection(conn) 

ans = 

0 

मैं "isconnection" JDBC कनेक्शन जो 1 लौटाता है यदि एक कनेक्शन है, तो कनेक्शन से पहले बंद कर दिया खुला है और 0 के लिए उपरोक्त उदाहरण की तरह एक समारोह मतलब है।

उत्तर

0

अनुसार documentation आप database.ODBCConnection वस्तु और database.ODBCCursor वस्तु में संदेश संपत्ति के मूल्य की जाँच करके एक मौजूदा database.ODBCConnection या डेटाबेस उपकरण बॉक्स में database.ODBCCursor की स्थिति की जांच कर सकते हैं।

आपको setdbprefs('ErrorHandling','store') का उपयोग करके स्टोर करने में त्रुटि प्रबंधन सेट करने की आवश्यकता हो सकती है। इसे फिर से स्विच करने के लिए setdbprefs('ErrorHandling','report') का उपयोग करें।

ping और isconnection केवल डेटाबेस कनेक्शन ऑब्जेक्ट पर काम करते हैं, डेटाबेस पर नहीं .ODBCConnection ऑब्जेक्ट्स।

+0

tnx एक बहुत, मैं अपने जवाब के जवाब में सवाल अद्यतन, मुझे लगता है कि matlab में या "देशी ODBC" परत में त्रुटि तब, इसलिए वहाँ कनेक्शन वस्तु में कोई संदेश, –

1

मैं आपको Matlab की टूलस्ट्रिप कार्यक्षमता के साथ डेटाबेस कनेक्शन की जांच करने का अनुरोध करता हूं। एक बार जब यह जुड़ा हुआ है successfully..you code.connection सेटिंग देख सकते हैं आप पूरा गाइड here...

से आप परीक्षण पहले प्रदर्शन कर सकते हैं, ताकि आप सर्वर के साथ किसी भी समस्या की संभावना से इनकार कर सकते हैं ..

पा सकते हैं और तदनुसार अपने कोड में इसे लागू करें।

सादर,

+0

tnx एक है बहुत, मैंने पहले दस्तावेज देखा था, लेकिन मुख्य समस्या कनेक्शन प्रक्रिया में नहीं है, मैं डेटाबेस से सफलतापूर्वक कनेक्ट कर सकता हूं, और अपने डेटाबेस में कुछ पंक्ति डाल सकता हूं (एफआईआर कोड ब्लॉक यह दिखाता है), लेकिन अगर कोई कोशिश करता है तो कनेक्शन बंद करने के बाद डेटाबेस में एक पंक्ति डालें, matlab बिना किसी स्पष्ट त्रुटि संदेश के अचानक बंद हो जाएगा, (मुझे लगता है कि कनेक्शन खुला है या बंद है या त्रुटि को संभालने के लिए त्रुटि संदेश प्राप्त करने के लिए कोई फ़ंक्शन होने की उम्मीद है लेकिन इनमें से कोई भी नहीं हुआ है और बस एक घातक त्रुटि के कारण matlab बंद) –

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