Estabas instanciando 2 veces la clase conexión, en la primera la instanciabas y te conectabas, y después generabas otro objeto Conexion con el que consultabas al usuario (en este último nunca hiciste la conexión).
Te recomiendo que toda la conexión la hagas en un método y no en métodos separados.
Ejemplo:
Código ASP:
Ver originalpublic DataTable consulta(string usuario)
{
//Se usa un using, porque todo lo que esté dentro de él vivirá en ese ámbito. Esto sirve en caso de que no cierres la conexión, se cerrará sola porque hereda de la interfaz IDisposable, es decir, que eliminará al objeto de conexión
using (SqlConnection conn = new SqlConnection("Data Source=VESTERGAARD-PC\\VESTERGAARD;Initial Catalog=crud;User ID=sa;Password=123456"))
{
//Abres conexión
conn.Open();
//Asignas un comando
SqlCommand comando = new SqlCommand("Select * from usuario where usuario='" + usuario + "'");
//Configuras el comando
comando.Connection = conn; //Le asignas la conexión en donde se ejecutará el comando
comando.CommandType = CommandType.Text;// Le dices que el comando es de tipo Texto, (puedes decir que es de tipo SP en caso de que uses Procedimientos almacenados)
SqlDataAdapter da = new SqlDataAdapter(comando);
DataTable dt = new DataTable();
da.Fill(dt);
//Cierre de Conexión y destrucción del mismo
comando.Dispose();
conn.Close();
conn.Dispose();
return dt;
}
}
Y para llamarlo deberías hacerlo así.
Código ASP:
Ver originalprotected void Button2_Click(object sender, EventArgs e)
{
string usuario = txtUsuario.Text;
DataTable dt = new Conexion().consultar(usuario);
try
{
if (dt.Rows.Count > 0)
{
lblNombre.Text = dt.Rows[0]["usuario"].ToString();
lblApellido.Text = dt.Rows[0]["apellido"].ToString();
lblCorreo.Text = dt.Rows[0]["correo"].ToString();
lblFechaN.Text = dt.Rows[0]["fechanac"].ToString();
}
else
{
Response.Write("No se encontro usuario");
}
}
catch (SqlException ex)
{
Response.Write("No se puede ejecutar" + ex.Message);
}
}
Saludos,