इसके लायक क्या है, यदि आप केवल एक प्रश्न लेना चाहते हैं और सामग्री को कहीं डंप करना चाहते हैं, तो ऐसा लगता है कि आप जितना काम करना चाहते हैं उससे थोड़ा अधिक काम कर रहे हैं। जटिलता डिबगिंग में चुनौती को बढ़ा सकती है।
किसी क्वेरी को पढ़ने और फ़ाइल में आउटपुट को निर्देशित करने का वास्तव में नंगे हड्डियों का उदाहरण इस तरह दिख सकता है:
SqlConnection sqlCon = new SqlConnection("REMOVED");
sqlCon.Open();
SqlCommand sqlCmd = new SqlCommand(
"Select * from products.products", sqlCon);
SqlDataReader reader = sqlCmd.ExecuteReader();
string fileName = "test.csv";
StreamWriter sw = new StreamWriter(fileName);
object[] output = new object[reader.FieldCount];
for (int i = 0; i < reader.FieldCount; i++)
output[i] = reader.GetName(i);
sw.WriteLine(string.Join(",", output));
while (reader.Read())
{
reader.GetValues(output);
sw.WriteLine(string.Join(",", output));
}
sw.Close();
reader.Close();
sqlCon.Close();
हालांकि यह आपके द्वारा सूचीबद्ध कोड से नाटकीय रूप से छोटा नहीं लग सकता है, मुझे लगता है कि यह आसान है और बॉक्स से बाहर डीबग करना आसान होगा। मैंने इसका परीक्षण नहीं किया है, इसलिए मैं निश्चित रूप से यह नहीं कह सकता कि यह काम करता है, हालांकि मुझे लगता है कि यह बहुत करीब है।
एक और बात ध्यान देने योग्य है... इनमें से कोई भी सही CSV आउटपुट नहीं है। आपको यह सुनिश्चित करने की ज़रूरत है कि आप एम्बेडेड कॉमा, रिटर्न कैरेक्टर इत्यादि को संभाल लें, क्या वे किसी भी आउटपुट में होना चाहिए। हालांकि ऐसा करना काफी आसान है।