दिलचस्प पोस्ट
आप स्ट्रिंग से गैर- ASCII वर्ण कैसे पट्टी कर सकते हैं? (सी # में) क्या नियमित अभिव्यक्तियों को नेस्टेड पैटर्न से मिलान करने के लिए इस्तेमाल किया जा सकता है? विधि getDispatcherType () HttpServletRequest प्रकार के लिए अनिर्धारित है पोस्टग्रे एसक्यूएल ऑटोक्रेनमेंट फ़ाइल इनपुट वैल्यू को प्रोग्रामैटिक रूप से कैसे सेट करें (यानी: ड्रैग-ड्रॉपिंग फाइलें)? * प्रत्येक * आइटम सूची में Django फ़िल्टर क्वेरीसेट __in के लिए मेरे एंड्रॉइड ऐप को खोलने के लिए ब्राउज़र से लिंक को रोकना फ़ाइल को सभी आउटपुट पर रीडायरेक्ट करें सी संकलन त्रुटि: "वेरिएबल-साइज़ ऑब्जेक्ट को आरम्भ नहीं किया जा सकता" जांचें कि क्या एक पायथन सूची आइटम में एक स्ट्रिंग के अंदर एक स्ट्रिंग है वसंत में एक क्वार्ट्ज नौकरी में बीन संदर्भ इंजेक्ट? एंड्रॉइड में आवर्ती कार्य निर्धारण का निर्धारण PHP और JQuery के साथ एकाधिक फ़ाइलें अपलोड करें didSelectRowAtIndexPath काम नहीं कर रहा है, स्विफ्ट 3 सी गतिशील बढ़ते सरणी

SQL सर्वर से वापसी मान सी # का उपयोग कर डालें

दृश्य स्टूडियो में सी # का उपयोग करते हुए, मैं इस तरह एक तालिका में एक पंक्ति डाल रहा हूँ:

INSERT INTO foo (column_name) VALUES ('bar') 

मैं ऐसा कुछ करना चाहता हूं, लेकिन मुझे सही सिंटैक्स नहीं पता है:

 INSERT INTO foo (column_name) VALUES ('bar') RETURNING foo_id 

यह नए डाला पंक्ति से foo_id कॉलम वापस करेगा।

इसके अलावा, यहां तक ​​कि अगर मुझे इसके लिए सही सिंटैक्स मिल जाए, तो मुझे एक और समस्या है: मेरे निपटान में मेरे पास SqlDataReader और SqlDataAdapter जहां तक ​​मुझे पता है, पहले डेटा पढ़ने के लिए है, दूसरा डेटा जोड़ तोड़ना है। रिटर्न स्टेटमेंट के साथ एक पंक्ति डालने पर, मैं डेटा जोड़कर और पढ़ रहा हूं, इसलिए मुझे यकीन नहीं है कि क्या उपयोग करना है। हो सकता है कि इस बात के लिए मुझे कुछ अलग तरह से इस्तेमाल करना चाहिए?

वेब के समाधान से एकत्रित समाधान "SQL सर्वर से वापसी मान सी # का उपयोग कर डालें"

SCOPE_IDENTITY उसी दायरे में एक पहचान कॉलम में डाली गई अंतिम पहचान मान देता है। एक गुंजाइश एक मॉड्यूल है: एक संग्रहीत कार्यविधि, ट्रिगर, फ़ंक्शन या बैच इसलिए, दो बयान एक ही दायरे में हैं यदि वे एक ही संग्रहीत कार्यविधि, फ़ंक्शन या बैच में हैं।

आप सम्मिलित कमांड को निष्पादित करने के लिए SqlCommand.ExecuteScalar का उपयोग कर सकते हैं और एक क्वेरी में नया आईडी पुनः प्राप्त कर सकते हैं।

 using (var con = new SqlConnection(ConnectionString)) { int newID; var cmd = "INSERT INTO foo (column_name)VALUES (@Value);SELECT CAST(scope_identity() AS int)"; using (var insertCommand = new SqlCommand(cmd, con)) { insertCommand.Parameters.AddWithValue("@Value", "bar"); con.Open(); newID = (int)insertCommand.ExecuteScalar(); } } 

इसे इस्तेमाल करे:

 INSERT INTO foo (column_name) OUTPUT INSERTED.column_name,column_name,... VALUES ('bar') 

आउटपुट परिणाम सेट (अन्य बातों के साथ) लौटा सकता है, देखें: आउटपुट क्लॉज (ट्रांसएक्ट-एसक्यूएल) इसके अलावा, यदि आप एकाधिक मान (INSERT SELECT) को सम्मिलित करते हैं, तो यह विधि एक पंक्ति प्रति डाला पंक्ति वापस करती है, जहां अन्य विधियां केवल अंतिम पंक्ति पर जानकारी वापस कर देंगी

काम कर रहे उदाहरण:

 declare @YourTable table (YourID int identity(1,1), YourCol1 varchar(5)) INSERT INTO @YourTable (YourCol1) OUTPUT INSERTED.YourID VALUES ('Bar') 

उत्पादन:

 YourID ----------- 1 (1 row(s) affected) 

मुझे लगता है कि आप इसके लिए @@ पहचान का उपयोग कर सकते हैं, लेकिन मुझे लगता है कि इसके आस-पास कुछ विशेष नियम / प्रतिबंध हैं?

 using (var con = new SqlConnection("connection string")) { con.Open(); string query = "INSERT INTO table (column) VALUES (@value)"; var command = new SqlCommand(query, con); command.Parameters.Add("@value", value); command.ExecuteNonQuery(); command.Parameters.Clear(); command.CommandText = "SELECT @@IDENTITY"; int identity = Convert.ToInt32(command.ExecuteScalar()); }