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;
}
Enkele dingen om hier op te merken:ik heb een geparametriseerde query gebruikt, waardoor uw code veiliger is. De manier waarop u de select-opdracht maakt met de "where x = "+ Textbox.Text +""
deel opent u voor SQL-injectie.
Ik heb dit veranderd in:
"Select * from Employees where [email protected]"
oCmd.Parameters.AddWithValue("@fname", fName);
Dus wat dit codeblok gaat doen is:
Voer een SQL-instructie uit op uw database om te zien of er voornamen zijn die overeenkomen met de voornamen die u hebt opgegeven. Als dat het geval is, wordt die persoon opgeslagen in een Persoon-object (zie hieronder in mijn antwoord voor de klas). geen overeenkomst is, zijn de eigenschappen van het Person-object null
.
Ik weet natuurlijk niet precies wat je probeert te doen, dus er zijn een paar dingen waar je op moet letten:Als er meer dan 1 persoon is met een overeenkomende naam, wordt alleen de laatste bewaard en aan je teruggestuurd. deze gegevens wilt kunnen opslaan, kunt u ze toevoegen aan een List<Person>
.
Persoonsklasse om het schoner te maken:
public class Person
{
public string firstName { get; set; }
public string lastName { get; set; }
}
Om nu de methode aan te roepen:
Person x = SomeMethod("John");
U kunt dan uw tekstvakken vullen met waarden die afkomstig zijn van het Persoon-object als volgt:
txtLastName.Text = x.LastName;