Usually data operations are in their own class e.g.
A container
public class Person
{
public long Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public long AccountNumber { get; set; }
}
Operation class
public class DataOperations
{
public static Person GetPerson(int identifier)
{
Person person = new Person();
var selectStatement = "SELECT FirstName, LastName, AccountNumber FROM People WHERE Id = @Id";
using var cn = new SqlConnection() { ConnectionString = "TODO" };
var cmd = new SqlCommand() {Connection = cn, CommandText = selectStatement};
cmd.Parameters.Add("@Id", SqlDbType.Int).Value = identifier;
cn.Open();
var reader = cmd.ExecuteReader();
if (reader.HasRows)
{
reader.Read();
person.Id = identifier;
person.FirstName = reader.GetString(0);
person.LastName = reader.GetString(1);
person.AccountNumber = reader.GetInt64(2);
}
return person;
}
}
Then calling here you can assign property values to controls .Text property for instance.
var person = DataProviderOperations.GetPerson(1);
var accountAsString = person.AccountNumber.ToString();