2015-06-16 6 views
6

प्राप्त करें मैं SQL सर्वर के लिए नया हूं और यह पता लगाने की कोशिश कर रहा हूं कि किसी तालिका में कॉलम के डेटा प्रकार को प्राप्त करने का कोई तरीका है या नहीं।इकाई फ्रेमवर्क - SQL सर्वर फ़ील्ड डेटा प्रकार

उदाहरण के लिए, अगर मैं निम्नलिखित स्तंभ

employeeID int, empName varchar(255), empDept varchar(100) 

के साथ एक एसक्यूएल सर्वर तालिका 'कर्मचारी है वहाँ सी #/इकाई की रूपरेखा में empName क्षेत्र के लिए डेटा प्रकार खोजने के लिए एक तरीका है?

अंत में जो मैं देखने की कोशिश कर रहा हूं वह डेटा प्रकार और कॉलम की लंबाई है। इसलिए, यदि मैं तालिका/इकाई में सभी क्षेत्रों के माध्यम से लूपिंग कर रहा था, तो मैं देखना चाहूंगा: "वर्कर (255)", "वर्चर (100)", "int" इत्यादि

+0

देख जब आप कहते हैं कि डेटा प्रकार को खोजने के ... कब और कैसे आप डेटा प्रकार प्राप्त करना चाहते हैं? कोड से? इसे मेटाडेटा द्वारा देख रहे हैं? – TheMadDBA

+0

मैं कोड में पसंद करूंगा। यदि कोई ऐसा फ़ंक्शन था जिसे मैं एक चर में उपयोग और स्टोर कर सकता हूं जो आदर्श होगा। – Ryan

+0

क्लिक करें [यहां] (http://stackoverflow.com/questions/1601727/how-do-i-return-the-sql-data-types-from-my-query)! उपरोक्त लिंक समस्या को हल करने में आपकी सहायता कर सकता है। – vj78

उत्तर

0

आप या तो बना सकते हैं प्रक्रिया संग्रहीत और फोन है कि एफई से तालिका नामों में से गुजर रहा है, या निम्नलिखित की तरह एक कच्चे एसक्यूएल आदेश कुछ चलाएँ:

var sqlToRun = string.format(@"SELECT column_name as 'Column Name', 
    data_type as 'Data Type', 
    character_maximum_length as 'Max Length' 
    FROM information_schema.columns 
    WHERE table_name = '{0}'", myTableName); 

using (var context = new dbContext()) 
{ 
    var tableFieldDetails= context.SqlQuery(sqlToRun).ToList(); 

    //do something with the tableFieldDetails collection 
} 

... जहां myTableName तालिका का नाम है से क्षेत्र की जानकारी वापस जाने के लिए।

ध्यान दें कि यदि आप nvarchar(MAX) या varchar(MAX) का उपयोग कर रहे हैं तो 1 -1 वापस आ गया है और मुझे यकीन है कि कुछ अन्य विसंगतियां हो सकती हैं क्योंकि मैंने सभी प्रकार का परीक्षण नहीं किया है।

इसके अलावा, मैं ऊपर का परीक्षण किया है नहीं सी #, तो यह काम करने के लिए एक ट्वीक आवश्यकता हो सकती है, लेकिन सिद्धांत अच्छा है और कच्चे चलाने पर एक अच्छा विधि ;-)

में समझाया जा रहा है अधिक जानकारी के लिए से लाभ होगा एफई में एसक्यूएल https://msdn.microsoft.com/en-us/data/jj592907.aspx

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