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;
}
Algunas cosas a tener en cuenta aquí:utilicé una consulta parametrizada, lo que hace que su código sea más seguro. La forma en que está haciendo la declaración de selección con "where x = "+ Textbox.Text +""
parte te abre a la inyección de SQL.
He cambiado esto a:
"Select * from Employees where [email protected]"
oCmd.Parameters.AddWithValue("@fname", fName);
Entonces, lo que hará este bloque de código es:
Ejecute una declaración SQL en su base de datos, para ver si hay algún nombre que coincida con el que proporcionó. Si ese es el caso, esa persona se almacenará en un objeto Persona (ver más abajo en mi respuesta para la clase). Si hay no coincide, las propiedades del objeto Person serán null
.
Obviamente, no sé exactamente lo que está tratando de hacer, por lo que hay algunas cosas a las que debe prestar atención:cuando hay más de 1 persona con un nombre coincidente, solo se guardará la última y se le devolverá. desea poder almacenar estos datos, puede agregarlos a una List<Person>
.
Clase de persona para hacerlo más limpio:
public class Person
{
public string firstName { get; set; }
public string lastName { get; set; }
}
Ahora para llamar al método:
Person x = SomeMethod("John");
Luego puede llenar sus cuadros de texto con valores provenientes del objeto Persona así:
txtLastName.Text = x.LastName;