Поля страницы C# не заполняются, как ожидалось

Может кто-нибудь сказать мне, что я делаю не так? Я пытаюсь вызвать метод автоматически при загрузке страницы, однако он не работает.

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        customerInformation();

    }
}

protected void ddNames_SelectedIndexChanged(object sender, EventArgs e)
{
    customerInformation();
}

private void customerInformation()
{
    string dbString = ConfigurationManager.ConnectionStrings["TechSupportDBConString"].ConnectionString;
    string query = "SELECT * FROM Customers WHERE Name='" + ddNames.Text + "'";

    SqlConnection Connection = new SqlConnection(dbString);
    Connection.Open();

    SqlCommand Com = new SqlCommand(query, Connection);
    SqlDataReader reader = Com.ExecuteReader();
    if (reader.Read())
    {
        lblName.Text = reader["Name"].ToString() + "'s Personal Information";
        lblAddress.Text = reader["Address"].ToString() + "\n" + reader["City"].ToString() + " " + reader["State"].ToString() + " " + reader["ZipCode"].ToString();
        lblPhone.Text = reader["Phone"].ToString();
        lblEmail.Text = reader["Email"].ToString();

        reader.Close();
        Connection.Close();
    }
}

1 ответ

Хорошо, просматривая ваш код, я вижу, что соединение считывателя и базы данных замкнуто в самом цикле, что не должно быть сделано.

SqlDataReader reader = command.ExecuteReader();    
if (reader.HasRows)
{
     while (reader.Read())
     {
                //populate fields from reader
     }
}
else
{
     lbl.Text = "No records found.";
}
reader.Close();
Connection.Close();

Следующее, что я заметил, что выпадающий выбранный текст / значение должно быть либо ddNames.SelectedItem.Text или в случае передачи значения ddNames.SelectedValue,

Далее убедитесь, что каждое имя читателя должно точно совпадать с именем столбца таблицы.

И последнее, но не менее важное: всегда делайте правильную проверку нуля перед применением ToString().Если любой столбец имеет нулевое значение ToString() не сможет конвертировать.

Надеюсь это поможет.

Другие вопросы по тегам