public Person SomeMethod(string fName) { var con =ConfigurationManager.ConnectionStrings["Din forbindelse"].ToString(); Person matchingPerson =ny person(); ved at bruge (SqlConnection myConnection =new SqlConnection(con)) { string oString ="Vælg * fra medarbejdere hvor [email protected]"; SqlCommand oCmd =new SqlCommand(oString, myConnection); oCmd.Parameters.AddWithValue("@Fname", fName); myConnection.Open(); ved hjælp af (SqlDataReader oReader =oCmd.ExecuteReader()) { while (oReader.Read()) { matchingPerson.firstName =oReader["FirstName"].ToString(); matchingPerson.lastName =oReader["Efternavn"].ToString(); } myConnection.Close(); } } returner matchingPerson; }
Nogle ting at bemærke her:Jeg brugte en parametriseret forespørgsel, som gør din kode mere sikker. Den måde, du laver select-sætningen på med "hvor x ="+ Textbox.Text +""
del åbner dig for SQL-injektion.
Jeg har ændret dette til:
"Vælg * fra medarbejdere hvor [email protected]" oCmd.Parameters.AddWithValue("@fname", fName);
Så hvad denne kodeblok skal gøre er:
Udfør en SQL-sætning mod din database for at se, om der er nogle fornavne, der matcher det, du har angivet. Hvis det er tilfældet, vil denne person blive gemt i et Person-objekt (se nedenfor i mit svar for klassen). ikke matcher, vil egenskaberne for Person-objektet være null
.
Jeg ved selvfølgelig ikke helt, hvad du prøver at gøre, så der er et par ting at være opmærksom på:Når der er mere end 1 personer med et matchende navn, vil kun den sidste blive gemt og returneret til dig. ønsker at kunne gemme disse data, kan du tilføje dem til en Liste
Personklasse for at gøre det renere:
public class Person { public string firstName { get; sæt; } offentlig streng efternavn { get; sæt; } }
Nu for at kalde metoden:
Person x =SomeMethod("John");
Du kan derefter udfylde dine tekstbokse med værdier, der kommer fra Person-objektet som sådan:
txtLastName.Text =x.LastName;