2012-12-19 14 views
12

मेरे पास varbinary (MAX) पैरामीटर के साथ तालिका है। क्वेरी निष्पादित करने के बाद, मैं परिणाम को SQLLataReader में संग्रहीत करूँगा क्योंकि इसमें आउटपुट के रूप में एकाधिक कॉलम हैं।SqlDataReader से बाइट [] प्राप्त करें?

SqlCommand cmd = new SqlCommand("select leave_details from LeaveTable"); 
SqlDataReader obj; 
con.Open(); 
obj = cmd.ExecuteReader(); 

अब मैं प्रत्येक पंक्ति के लिए बाइट [] में परिणाम परिवर्तित करना चाहता हूं।

यह एक काम नहीं कर रहा:

byte[] b=null; 
obj.GetBytes(0,0,b,0,1024); 
+1

इसका क्या मतलब है "यह एक काम नहीं कर रहा?" क्या आपको अपवाद, गलत परिणाम या बीएसओडी मिलती है? –

+0

@TimSchmelter: वह जिस एपीआई कॉल का उपयोग करने का प्रयास करता है वह स्पष्ट रूप से गलत है। मैं यह नहीं समझ सकता कि यह क्यों अस्तित्व में है क्योंकि इसका उपयोग करने के लिए अन्य आवश्यक एपीआई (लाने के लिए बाइनरी ब्लॉब की लंबाई) पूरी तरह गायब है। – Joshua

उत्तर

27

GetValue() विधि का प्रयास करें।

byte[] b=null; 
b=(byte [])obj.GetValue(0); 
//OR 
b=(byte [])obj[0]; 
+0

धन्यवाद !! इसने काम कर दिया। – akshaykumar6

-2
string bytesfromsql = "01010101010110010111010001"; //for example 
byte[] bytes = new byte[bytesfromsql.Length]; 
for (int i = 0; i < bytes.Count(); i++) 
{ 
    bytes[i] = byte.Parse(bytesfromsql[i].ToString()); 
} 
+6

SQL ** से वापस आने वाले बाइट्स एक स्ट्रिंग ** नहीं है। इसके अलावा: भले ही यह था, * रेडिक्स * निर्दिष्ट करने के लिए आपको 'Convert.ToByte (string, int)' का उपयोग करना होगा (क्या यह बेस -2 है? बेस -10? बेस -16?) और ज्यादातर मामलों में: एक स्ट्रिंग की लंबाई डीकोडेड बाइट की लंबाई नहीं है []; बेस -16 के मामले में यह इनपुट स्ट्रिंग की आधा लंबाई होगी - उदाहरण के लिए –

+0

धन्यवाद आदमी आप प्रोग्राममोपीडिया हैं –

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