2012-06-06 11 views
8

तो सी # में जब भी मैंने अपने एमएसएसक्यूएल डेटाबेस से एक छोटा सा पुनर्प्राप्त किया, तो मैंने निम्नलिखित कलाकारों का उपयोग किया।मैं सी # में MySQL से डेटा प्रकार का टिनिंट कैसे प्राप्त करूं?

(int)(byte)reader["MyField"]; 

हालांकि, यह कास्ट MySQL में काम नहीं कर रहा है।

मैं

(byte)reader["MyField"]; 

और बस

(int)reader["MyField"]; 

संपादित करें क्या कोशिश की है 1

अपवाद

The specified cast is not valid. 

संपादित 2

यह डेटा प्रकार है।

{Name = "SByte" FullName = "System.SByte"} 
+0

क्या आप अधिक कोड प्रदान कर सकते हैं? – craig1231

+0

क्या आपने 'पाठक [" माईफिल्ड "] + 0;' कोशिश की है? –

+0

@ हंस जो संकलित नहीं होंगे: अभिव्यक्ति को 'ऑब्जेक्ट + int' टाइप किया गया है, जिसके लिए कोई मिलान '' 'ऑपरेटर नहीं है। –

उत्तर

8

समस्या यह है कि कास्टिंग और स्पष्ट ऑपरेटरों के कारण है।

पहले एक [प्रत्यक्ष] डाली जो विफल रहता है क्योंकि वास्तविक ऑब्जेक्ट प्रकार sbyte और नहीं byte है। उत्तरार्द्ध एक रूपांतरण करेगा जो सिंटैक्स के साथ एक स्पष्ट ऑपरेटर ("स्पष्ट रूपांतरण") का उपयोग करने के लिए होता है, दुर्भाग्यवश, अभी भी जैसा दिखता है [प्रत्यक्ष] कास्ट ऊपर के अनुसार।

var obj = (object)(sbyte)0; 
var i1 = (int)(sbyte)obj; // okay: object (cast)-> sbyte (conversion)-> int 
var i2 = (int)obj;   // fail: sbyte (cast)-> int (but sbyte is not int!) 

या तो कोई (sbyte)objectExpression डाली जो वास्तविक ऑब्जेक्ट प्रकार के लिए मान्य है, या Convert.ToInt32(objectExpression) जो एक object लेता है और करता है करने के लिए कुछ जादू को पूर्णांक में परिवर्तित का उपयोग करें: यहाँ यह नाकाम रहने के बिना डेटाबेस का एक उदाहरण है । (Convert.ToByte का उपयोग ओवरफ्लो पर अपवाद फेंक सकता है।)

हैप्पी कोडिंग!

+0

सही! 6 मिनट इंतजार करना होगा। – meanbunny

+1

+1, गंभीरता से यह मुझे हमेशा काटता है और अनजान छोड़ देता है, जब तक कि मैं यह जवाब नहीं पढ़ता! – nawfal

9

उचित प्रकार का निर्धारण करने के लिए, डीबगर में

reader["MyField"].GetType() 

के मूल्य पर गौर।

(byte)objectExpression है (byte)sbyteExpression के समान नहीं है:

+2

आपका प्रतिभा! मुझे वास्तविक त्वरित – meanbunny

+2

देखें (एक महान टिप्पणी ... लेकिन यह "कैसे करें" के जवाब में नहीं है ...) –

+6

मैं लोगों की मदद करने में उनकी सहायता करने की कोशिश करता हूं। – usr

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