मैं एक एमएस SQL सर्वर 2005 डेटाबेस में डेटा डालने के लिए एक कंसोल अनुप्रयोग पर काम कर रहा हूं। मेरे पास डालने के लिए वस्तुओं की एक सूची है। यहाँ मैं उदाहरण के रूप में कर्मचारी वर्ग का उपयोग करें:एसक्यूएल एक पंक्ति या एकाधिक पंक्ति डेटा डालें?
foreach (Employee item in employees)
{
string sql = @"INSERT INTO Mytable (id, name, salary)
values ('@id', '@name', '@salary')";
// replace @par with values
cmd.CommandText = sql; // cmd is IDbCommand
cmd.ExecuteNonQuery();
}
या मैं इस तरह की एक मेंड डालने क्वेरी निर्माण कर सकते हैं:
List<Employee> employees;
मैं क्या कर सकते हैं इस तरह समय में एक ऑब्जेक्ट सम्मिलित करने के लिए है
string sql = @"INSERT INTO MyTable (id, name, salary) ";
int count = employees.Count;
int index = 0;
foreach (Employee item in employees)
{
sql = sql + string.format(
"SELECT {0}, '{1}', {2} ",
item.ID, item.Name, item.Salary);
if (index != (count-1))
sql = sql + " UNION ALL ";
index++
}
cmd.CommandType = sql;
cmd.ExecuteNonQuery();
मुझे लगता है कि बाद का मामला एक बार में डेटा की पंक्तियों को सम्मिलित करने जा रहा है। हालांकि, अगर मेरे पास डेटा के कई केएस हैं, तो SQL क्वेरी स्ट्रिंग के लिए कोई सीमा है?
मुझे यकीन नहीं है कि प्रदर्शन के संदर्भ में डेटा की एक पंक्ति के साथ एकाधिक पंक्तियों में से एक डालने से बेहतर है या नहीं?
इसे बेहतर तरीके से करने के लिए कोई सुझाव?
आईएनईआरटी एसक्यूएल के बजाय एसपी को कॉल करने के बारे में कैसे? एसपी समान पैरामीटर लेगा, लेकिन एसपी के भीतर प्रत्येक कॉल के लिए प्रतिबद्ध है। क्या एसपी कॉल में से कोई भी विफल होने पर लेनदेन वापस ले जाया जाएगा? –
@ केविन, इंटेलिजेंस में CommitTransaction क्यों नहीं दिखता है? – uSeRnAmEhAhAhAhAhA
सच में, मुझे नहीं पता। मुझे नीचे ट्रैक करना होगा क्यों @Spike – kemiller2002