public Person SomeMethod(string fName)
{
var con = ConfigurationManager.ConnectionStrings["Yourconnection"].ToString();
Person matchingPerson = new Person();
using (SqlConnection myConnection = new SqlConnection(con))
{
string oString = "Select * from Employees where [email protected]";
SqlCommand oCmd = new SqlCommand(oString, myConnection);
oCmd.Parameters.AddWithValue("@Fname", fName);
myConnection.Open();
using (SqlDataReader oReader = oCmd.ExecuteReader())
{
while (oReader.Read())
{
matchingPerson.firstName = oReader["FirstName"].ToString();
matchingPerson.lastName = oReader["LastName"].ToString();
}
myConnection.Close();
}
}
return matchingPerson;
}
यहां ध्यान देने योग्य कुछ बातें:मैंने एक पैरामीट्रिज्ड क्वेरी का उपयोग किया है, जो आपके कोड को सुरक्षित बनाती है। जिस तरह से आप "where x = "+ Textbox.Text +""
के साथ सेलेक्ट स्टेटमेंट बना रहे हैं भाग आपको SQL इंजेक्शन तक खोलता है।
मैंने इसे इसमें बदल दिया है:
"Select * from Employees where [email protected]"
oCmd.Parameters.AddWithValue("@fname", fName);
तो कोड का यह ब्लॉक क्या करने जा रहा है:
अपने डेटाबेस के विरुद्ध एक SQL कथन निष्पादित करें, यह देखने के लिए कि क्या आपके द्वारा प्रदान किए गए किसी भी प्रथम नाम से मेल खाता है। यदि ऐसा है, तो वह व्यक्ति व्यक्ति ऑब्जेक्ट में संग्रहीत किया जाएगा (कक्षा के लिए मेरे उत्तर में नीचे देखें)। यदि वहां है कोई मेल नहीं है, व्यक्ति वस्तु के गुण null
होंगे .
स्पष्ट रूप से मुझे ठीक से पता नहीं है कि आप क्या करने की कोशिश कर रहे हैं, इसलिए ध्यान देने योग्य कुछ चीजें हैं:जब मेल खाने वाले नाम वाले 1 से अधिक व्यक्ति होंगे, तो केवल अंतिम को बचाया जाएगा और आपको वापस कर दिया जाएगा। इस डेटा को स्टोर करने में सक्षम होना चाहते हैं, तो आप उन्हें List<Person>
. में जोड़ सकते हैं ।
इसे क्लीनर बनाने के लिए व्यक्ति वर्ग:
public class Person
{
public string firstName { get; set; }
public string lastName { get; set; }
}
अब विधि को कॉल करने के लिए:
Person x = SomeMethod("John");
फिर आप अपने टेक्स्टबॉक्स को व्यक्ति वस्तु से आने वाले मानों से भर सकते हैं जैसे:
txtLastName.Text = x.LastName;