2012-05-04 13 views
5

से पढ़ मैं सिर्फ एक Oracle एक्सप्रेस डेटाबेस स्थापित किया है और एक मेज मैं वहाँ में डाल दिया है से कुछ डेटा को पढ़ने के लिए कोशिश कर रहा हूँ:समस्याएं ओरेकल

using (OracleConnection conn = new OracleConnection("Data Source=localhost:1521/xe;Persist Security Info=True;User ID=SYSTEM;Password=SYSTEMPASSWORD")) 
{ 
    OracleCommand command = new OracleCommand("SELECT * FROM Persons WHERE Firstname = 'John'", conn); 
    conn.Open(); 
    OracleDataReader reader = command.ExecuteReader(); 

    try 
    { 
     while (reader.Read()) 
     { 
      string strResult = reader.GetString(0); 
     } 
    } 
    catch (OracleException oex) 
    { 
     MessageBox.Show(oex.Message, "Oracle error"); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message, "Error"); 
    } 
    finally 
    { 
     reader.Close(); 
    } 
} 

while (reader.Read()) के बाद से पाठक करता है यह सिर्फ इस्तीफा पर कोई डेटा नहीं पकड़ो। गलत क्या है? Connectionstring? मैंने ओरेकल एक्सप्रेस के साथ स्थापित कमांडप्रोप्ट टूल में वही SELECT चलाया है और यह ठीक काम करता है।

+2

क्या आप सुनिश्चित हैं कि कनेक्शन ठीक से खोला गया है और ExecuteReader कोई अपवाद नहीं है? क्या आपने असाइनमेंट के बाद और लूप को दर्ज करने से पहले रीडर ऑब्जेक्ट का ब्रेकपॉइंट और चेक वैल्यू रखा था? –

+1

क्या यह चयन किसी भी पंक्ति को देता है यदि आप इसे एसक्लप्लस या किसी अन्य उपकरण में चलाएंगे? – igofed

+0

WHERE क्लॉज – Adauto

उत्तर

5

किसी भी सिस्टम से कनेक्शन होने पर पहली बार ऐसा करने/परीक्षण होने पर यह सफल होता है और उसके बाद जारी रहता है। इन सरल प्रकार के परीक्षणों के बिना आपका आवेदन समय-बम की तरह व्यवहार करने के लिए बाध्य है। कुछ रक्षात्मक प्रोग्रामिंग आपकी परियोजनाओं को डीबग करने के लिए बहुत आसान बना देगा। वास्तव में वह उत्तर नहीं है जिसे आप ढूंढ रहे हैं लेकिन वर्तमान में कनेक्शन निष्पादन समय पर कनेक्शन की स्थिति स्पष्ट नहीं है।

2

तालिका व्यक्ति सिस्टम स्कीमा में है? एक और क्वेरी चलाएं, जैसे 'user_objects से object_name चुनें' और जो आपने किया है उसके साथ हमें अपडेट दें।

+0

या बस डुएल से चुनें * निष्पादित करें – igofed

1

है यह एक लंबे समय के बाद से मैं नेट के साथ Oracle का उपयोग नहीं करते हैं, लेकिन मैं (? यह "XE" है) को देखने के जो डेटाबेस आप का उपयोग नहीं है। SQL सर्वर के साथ मैं कनेक्शन स्ट्रिंग में प्रारंभिक कैटलॉग के साथ निर्दिष्ट करता हूं। यहां आपके प्रयास करने के लिए अलग-अलग कनेक्शन स्ट्रिंग हैं: http://www.connectionstrings.com/oracle। मैं कनेक्शन खोलकर भी शुरू करूंगा। पार्टी लेकिन ...

को

0

थोड़ी देर हो चुकी मैं एक दृश्य तक पहुँचने में एक ही समस्या थी और यह पता चला उपयुक्त विशेषाधिकार उस पर दी नहीं थे। एक बार जब मैं अपने उपयोगकर्ता आईडी को SELECT विशेषाधिकार प्रदान करता हूं तो मुझे अपना डेटा मिल सकता है।