5

मैंने प्रक्रियाओं को संग्रहीत किया है (वे पैरामीटर स्वीकार करते हैं) जो एकाधिक परिणाम सेट लौटाते हैं और मैं इसे टाइप किए गए डेटासेट में सहेजना चाहता हूं।मौजूदा संग्रहीत प्रक्रिया से संपूर्ण डेटासेट बनाएं

सवाल यह है: क्या मेरे पास विजुअल स्टूडियो 2010 संग्रहित प्रक्रिया के आधार पर टाइप किए गए डेटासेट उत्पन्न कर सकता है? मैं जानता हूँ कि मैं एक ही मेज के लिए इस हो सकता है, लेकिन मैं पूरे डाटासेट (कई टेबल, प्रत्येक परिणाम सेट के लिए एक)

उत्तर

3

तो चलो अगर यह संभव है देखने के लिए एक प्रयोग करते हैं की जरूरत है ..

मेरे द्वारा बनाए गए एक एसक्यूएल 2008 डेटाबेस में निम्न संग्रहीत प्रक्रिया:

CREATE PROCEDURE dbo.StackOverflow3668337 
AS 
BEGIN 
    SET NOCOUNT ON; 

    SELECT 'First bit'; 

    SELECT 'Second bit'; 
END 

तब मैं VS2010 में एक नई परियोजना बनाया है, और परियोजना के लिए एक डेटासेट आइटम जोड़ा।

मैंने सर्वर एक्सप्लोरर में डेटाबेस से कनेक्शन बनाया है, और 'StackOverflow3668337' आइटम को डेटासेट डिजाइनर सतह पर खींच लिया है।

TableAdapter from DataSet Designer

ताकि सिर्फ एक DataTable होगा: यह परिणाम है। तो दुर्भाग्य से मुझे लगता है कि जवाब बॉक्स से बाहर है, "नहीं"।

मुझे लगता है कि इसका मुख्य कारण यह है कि उत्पन्न होने वाले TableAdapter classes केवल एक डेटाटेबल से बंधे हैं। आपके पास एक ही डेटाटेबल के लिए एकाधिक टेबल एडेप्टर हो सकते हैं लेकिन उन्हें सभी को एक ही डेटा वापस करने की आवश्यकता है। अतिरिक्त डेटाटेबल्स के साथ बातचीत करने के लिए एकल टेबल एडाप्टर की कोई क्षमता नहीं है।

3

मुझे पता है कि यह पुराना है, लेकिन जब मैं वही/समान उत्तर खोज रहा था तो मैं इस प्रश्न में कैम हूं। तो मैंने सोचा कि मैं उन लोगों के लिए जो यहां पाया वह मुझे छोड़ देगा जो मेरे पीछे आते हैं। यह ऑटो जादुई नहीं है लेकिन यह आपको वहां ले जाएगा।

http://support.microsoft.com/kb/322793

प्रक्रिया

बनाएं
CREATE PROCEDURE dbo.sp_GetCustOrd 
AS 
SELECT * FROM Customers; 
SELECT * FROM Orders; 

डेटासेट

  1. बनाएं विजुअल स्टूडियो .NET में, फ़ाइल मेनू, नया बिंदु पर, और उसके बाद प्रोजेक्ट पर क्लिक करें।
  2. प्रोजेक्ट प्रकार के अंतर्गत विजुअल बेसिक प्रोजेक्ट्स पर क्लिक करें और फिर टेम्पलेट के तहत विंडोज एप्लिकेशन पर क्लिक करें।
  3. व्यू मेनू पर, सर्वर एक्सप्लोरर पर क्लिक करें।
  4. सर्वर एक्सप्लोरर में, डेटाबेस से कनेक्ट करें क्लिक करें, और उसके बाद अपने SQL सर्वर नॉर्थविंड डेटाबेस से कनेक्ट करें।
  5. सर्वर एक्सप्लोरर से वर्तमान प्रोजेक्ट में ग्राहकों और ऑर्डर तालिकाएं खींचें। ध्यान दें कि एक SqlConnection ऑब्जेक्ट और दो SqlDataAdapter ऑब्जेक्ट्स प्रोजेक्ट में जोड़े गए हैं।
  6. प्रॉपर्टी विंडो में, डेटासेट जेनरेट करें पर क्लिक करें, और फिर डेटासेट में दोनों टेबल जोड़ें। ध्यान दें कि प्रोजेक्ट में .xsd फ़ाइल जोड़ दी गई है। .xsd फ़ाइल को उस नाम के अनुसार नामित किया गया है जिसे आपने डेटासेट क्लास के लिए चुना था।

संबंध जोड़े

  1. समाधान Explorer में, यह है कि आप पिछले अनुभाग में बनाए गए .XSD फ़ाइल डबल क्लिक करें।
  2. डिज़ाइनर में ग्राहक तालिका पर राइट-क्लिक करें, जोड़ें इंगित करें, और उसके बाद नया संबंध क्लिक करें।
  3. संबंध संपादित करें संवाद बॉक्स में, ऑर्डर तालिका को बच्चे तत्व के रूप में चुनें, और उसके बाद ठीकक्लिक करें। यह डेटासेट स्कीमा में ग्राहक ऑर्डर नामक एक नया डेटारेलेशन बनाता है।
  4. फ़ाइल मेनू पर, परिवर्तनों को सहेजने के लिए सहेजें पर क्लिक करें।

भरें

Dim da As New SqlDataAdapter("sp_GetCustOrd", SqlConnection1) 
da.SelectCommand.CommandType = CommandType.StoredProcedure 
da.TableMappings.Add("Table", "Customers") 
da.TableMappings.Add("Table1", "Orders") 
Dim ds As New CustOrd()  ' Change this name to match .xsd file name. 
da.Fill(ds) 
DataGrid1.DataSource = ds 
DataGrid1.DataMember = "Customers" 

मैं जानता हूँ कि इस उदाहरण VB में है, और मैं सी # जवाब के लिए देख रहा था। लेकिन बंदरगाह के लिए पर्याप्त आसान होना चाहिए।

+0

मैं इस विधि के कार्यों की पुष्टि कर सकता हूं। मैं एक प्रक्रिया में दो टेबल वापस करने में सक्षम था और इस विधि का उपयोग करके दृढ़ता से टाइप किए गए डेटासेट को पॉप्युलेट कर सकता था। मैंने यह नियंत्रित करने के लिए पैरामीटर का उपयोग करके परीक्षण किया कि कौन सी तालिका वापस आती है। यह काम करता है लेकिन दा को भरने के लिए दो कॉल की आवश्यकता होती है (डीएसटेबल) और दाफिल (डीएसटेबल 1)। विचार नहीं है, लेकिन यह भी काम करता है यदि आपका एकमात्र लक्ष्य आपके डेटाबेस में प्रक्रियाओं की संख्या को कम रखना है। – bdwakefield

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