ntf
ntf

Reputation: 189

Windows Forms get data from database and display in label

Windows Form

I want to grab data from database and display in labels based on what the user selects in the list view.

I'm going off an example that does this with two list views, but I don't know how to do it when I'm sending data to a label.

This is the list view example I'm using (my label code is below this)

private void PopulateRecipeIngredients()
{
    string query = "SELECT a.Name FROM Ingredient a " +
        "INNER JOIN RecipeIngredient b ON a.Id = b.IngredientId " +
        "WHERE b.RecipeId = @RecipeId";
    // @ is a parameter

    using (connection = new SqlConnection(connectionString))
    using (SqlCommand command = new SqlCommand(query, connection))
    using (SqlDataAdapter adapter = new SqlDataAdapter(command))
    {

        // whatever recipe is selected in lstRecipes box, get the id of that and pass into query above
        command.Parameters.AddWithValue("@RecipeId", lstRecipes.SelectedValue);


        // DataTable holds the data return from query
        DataTable ingredientTable = new DataTable();

        // SqlDataAdapter object adapter fills the ingredientTable DataTable object with results from query
        adapter.Fill(ingredientTable);

        // Display value of Name ex. salad
        lstIngredients.DisplayMember = "Name";

        // Id column is how we reference
        lstIngredients.ValueMember = "Id";
        // connect list box on form to data in recipeTable
        lstIngredients.DataSource = ingredientTable;
    }
}

MY CODE:

  private void PopulateCourseDetails()
   {
      string query = "SELECT * FROM Course_Info WHERE Id = @CourseId";

    using (connection = new SqlConnection(connectionString))
    using (SqlCommand command = new SqlCommand(query, connection))
    using (SqlDataAdapter adapter = new SqlDataAdapter(command))
    {
        command.Parameters.AddWithValue("@CourseId", lstCourses.SelectedValue);

        DataTable courseTable = new DataTable();

        adapter.Fill(courseTable);

        lblCourseId.Text = "Course_id";
        lblCourseSection.Text = "Course_section";
        lblCourseName.Text = "Course_name";
        lblCourseDay.Text = "Course_day";
        lblCourseStartTime.Text = "Course_start_time";
        lblCourseEndTime.Text = "Course_end_time";
        lblCourseProfessor.Text = "Course_professor";
        lblCourseProfessorEmail.Text = "Course_professor_email";


        lstCourses.ValueMember = "Id";

    }
}

Upvotes: 0

Views: 12836

Answers (2)

Antonín Lejsek
Antonín Lejsek

Reputation: 6103

lblCourseId.Text = (string)courseTable.Rows[0]["Course_id"]

should work as long as you have one row in the result table

Upvotes: 1

KJ3
KJ3

Reputation: 5298

Assuming that your DataTable has now been properly populated, you now have a table with a number of rows.

First you need to pull out the first row

var row = courseTable.Rows.FirstOrDefault();

Now you've got a row with a number of columns. You can access each column by either index or column name.

lblCourseId.Text = row[0];

If you want the label to maintain it's header, you can do something like

lblCourseId.Text = "Course_id: " + row[0];

Upvotes: 0

Related Questions