DataTableReader.NextResult () HasRows से झूठे परिणाम का कारण बनता है ()

मेरे पास एक सामान्य exe है जो SqlDataReader के आधार पर फ़ाइलों को बनाने के लिए उपयोग करता है। इस पाठक के भीतर एक से अधिक रिकॉर्डसेट हो सकते हैं। वहां विस्तारित libs भी हैं जिन्हें अधिक जटिल डेटा क्वेरी चलाने के लिए जोड़ा जा सकता है, लेकिन एक SQLDataReader वापस कर देगा। मुझे हाल ही में बदलना पड़ा, क्योंकि SQL डेटाटाइडर को चलाने वाले विस्तारित libs के कारण अब SQL डेटा को एकाधिक डेटा स्रोतों से इसकी तालिका बनाने के लिए नहीं लिखा जा सकता है। तो अब उन libs एक आंतरिक डेटाटेबल रीडर बनाते हैं, जिसमें 1 या अधिक रिकॉर्ड हो सकते हैं, वर्तमान में उनके पास केवल एक ही है।

मेरी समस्या यह है कि, मैंने पाया कि एक बार जब मैंने अपने सामान्य EXE के भीतर DataTableReaders पर स्विच किया, तो जब मैं अगले रिकॉर्डसेट प्राप्त करने के लिए .NextResult() को कॉल करता हूं, तो कॉल करें (रीडर.हासरो ()) को यह सत्यापित करने के लिए कॉल करें कि कोई रिकॉर्डसेट मौजूद है या नहीं, यह हमेशा सच है, भले ही केवल एक रिकॉर्डसेट हो।

क्या हैरसॉ सही परिणाम देता है यह सुनिश्चित करने के लिए डेटाटेबल रीडर बनाने के दौरान मुझे कुछ करना है?

DataTableReader बनाते समय मैंने दो अलग-अलग तरीकों की कोशिश की है।

1: dataTable.CreateDataReader();
2: new DataTableReader(new DataTable[] { dataTable });

.NextResult() विधि को कॉल करने के बाद दोनों मामले अभी भी हैसरो पर सत्य लौटते हैं।

0

2 उत्तर

Check out basic sample in MSDN docs.

0
जोड़ा
हाँ, मुझे लगता है कि मैं SqlDataReaders के साथ आलसी खेल रहा था, क्योंकि HasRows अपेक्षित परिणाम लौटाता है। धन्यवाद,
जोड़ा लेखक Switch, स्रोत

मेरे लिए हैलो यह सामान्य है कि HasRows सच हो जाते हैं क्योंकि आपके पास वास्तव में आपकी तालिका में एक रिकॉर्ड है। अगर आप जानना चाहते हैं कि आपके पाठक में कोई और रिकॉर्ड नहीं है तो आपको अपना कोड कोड जबकि (yourReader.read ()) में रखना चाहिए, फिर आप लूप में कोड पढ़ रहे हैं

0
जोड़ा
यह पहले से ही किया जा रहा था, यह तथ्य के बाद है। हालांकि धन्यवाद।
जोड़ा लेखक Switch, स्रोत