मुझे समझ में नहीं आ रहा है कि क्यों हर कोई ExecuteNonQuery या ExecuteScalar का उपयोग करने का प्रयास कर रहा है जब प्रश्न में क्वेरी एक चयन कथन है। यदि यह एक संग्रहीत प्रक्रिया कॉल था जिसने मूल्य के अस्तित्व के आधार पर अद्यतन के विरुद्ध INSERT बनाम तर्क का ख्याल रखा, तो ExecuteScalar समझ में आएगा क्योंकि आप संग्रहीत प्रक्रिया से जो भी वैल्यू चाहते हैं उसे वापस कर सकते हैं।
हालांकि, प्रश्न की संरचना को देखते हुए, मैं इसके जवाब के रूप में झुका रहा हूं।
// Automatically dispose the connection when done
using(SqlConnection connection = new SqlConnection(sqlConnection.ConnectionString)) {
try {
connection.Open();
// query to check whether value exists
string sql = @"SELECT dataset1
FROM dbo.ste
WHERE project = 'whatever'
AND date = '2010-11-30'";
// create the command object
using(SqlCommand command = new SqlCommand(sql, connection)) {
using(SqlDataReader reader = command.ExecuteReader()) {
// if the result set is not NULL
if(reader.HasRows) {
// update the existing value + the value from the text file
}
else {
// insert a value from a text file
}
}
}
}
finally {
// always close connection when done
if(connection.State != ConnectionState.Closed) {
connection.Close();
}
}
}
आप क्वेरी WHERE EXISTS
उपयोग करने के लिए यदि आप पूर्ण मैचों वापस स्ट्रीम करने के लिए नहीं करना चाहते हैं बदल सकते हैं, लेकिन यह की आवाज़ से, आप केवल वैसे भी ज्यादा से ज्यादा 1 मैच होगा।
आप किसी भी परिणाम की अपेक्षा किए बिना चयन निष्पादित क्यों करना चाहते हैं? – flq
नहीं, मुझे बिंदु नहीं मिलता है। – RPM1984
क्योंकि यदि कोई परिणाम सेट नहीं है, तो मुझे एक टेक्स्ट फ़ाइल से एक मान अपडेट करना होगा, यदि कोई परिणाम सेट है तो मुझे मौजूदा मान को अपडेट करना होगा + टेक्स्ट फ़ाइल –