Данные из базы данных появляются в неправильной области приложения при запуске. C# - PullRequest
0 голосов
/ 03 мая 2020

Проблема: информация из моей базы данных отображается не в той области приложения.

Как выглядит приложение: в моем приложении у меня есть сетка представления сетки данных, 2 текстовых поля для пользователей, чтобы ввести город и население, а затем несколько кнопок для управления данными, которые вводит пользователь, например, обновление , new, delete, а также общее население, наибольшее население, самое низкое население и среднее население.

Когда я запускаю программу: первая строка информации из базы данных появляется в текстовых полях, куда пользователь должен ввести данные. Мне нужно, чтобы информация базы данных отображалась в виде сетки данных, но в сетке просто есть пустые строки. Еще интереснее, когда я нажимаю на разные пустые строки, в текстовом поле появляются разные города и группы населения.

Это мой код:

       private void Form1_Load(object sender, EventArgs e)
    {
        con = new SqlConnection();//object of SqlConnection class
                                  //Connection string
        con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\PopulationDB.mdf;Integrated Security=True;User Instance=True";
        con.Open();//open connection
        UpdateMyUI();
    }

    //method to update UI
    private void UpdateMyUI()
    {
        cmd = new SqlCommand("Select * from City", con);
        dr = cmd.ExecuteReader();
        dt = new DataTable();
        dt.Load(dr);
        DeptdatagridView.DataSource = dt;
        JustClearTextBoxBinding();
        cnt = 0;
        this.BindingContext[dt].Position = cnt;
        JustTextBoxBinding();

        dr.Close();
    }

    private void JustTextBoxBinding()
    {
        txtCity.DataBindings.Add("Text", dt, "City");
        txtPopulation.DataBindings.Add("Text", dt, "Population");
    }

    private void JustClearTextBoxBinding()
    {
        txtCity.DataBindings.Clear();
        txtPopulation.DataBindings.Clear();
    }

    private void btnNew_Click(object sender, EventArgs e)
    {
        ClearTextBoxes();
        txtCity.ReadOnly = false;
        btnInsert.Enabled = true;
        btnNew.Enabled = false;
    }

    //method to clear textboxes
    private void ClearTextBoxes()
    {
        txtCity.Clear();
        txtPopulation.Clear();
        txtCity.Focus();//set focus to city
    }

    private void btnInsert_Click(object sender, EventArgs e)
    {
        //sql query
        string insertStr =
        "Insert into city values('" + txtCity.Text + "','" + int.Parse(txtPopulation.Text) + "')";
        cmd = new SqlCommand(insertStr, con);
        int re = cmd.ExecuteNonQuery();
        MessageBox.Show(re.ToString() + " row(s) affected!");
        UpdateMyUI();
        txtCity.ReadOnly = true;
        btnNew.Enabled = true;
        btnInsert.Enabled = false;
    }

    private void btnUpdate_Click(object sender, EventArgs e)
    {
        //SQL Update Query
        string updateStr = "Update city Set population='" + int.Parse(txtPopulation.Text) + "' where city='" + txtCity.Text + "'";
        cmd = new SqlCommand(updateStr, con);
        int re = cmd.ExecuteNonQuery();
        MessageBox.Show(re.ToString() + " row(s) affected!");
        UpdateMyUI();
    }

    private void btnDelete_Click(object sender, EventArgs e)
    {
        string deleteStr = "Delete from city where city='" + txtCity.Text + "'";
        cmd = new SqlCommand(deleteStr, con);
        int re = cmd.ExecuteNonQuery();
        MessageBox.Show(re.ToString() + " row(s) affected!");
        UpdateMyUI();
    }

    private void btnTotalPopulation_Click(object sender, EventArgs e)
    {
        //sql query for total population
        string totalStr = "select sum(population) from city";
        //command object
        cmd = new SqlCommand(totalStr, con);
        //display average population
        MessageBox.Show("Total Population:" + cmd.ExecuteScalar());
    }

    private void btnAveragePopulation_Click(object sender, EventArgs e)
    {
        //sql query for average population
        string avgStr = "select avg(population) from city";
        //command object
        cmd = new SqlCommand(avgStr, con);
        //display average population
        MessageBox.Show("Average Population:" + cmd.ExecuteScalar());
    }

    private void btnHighestPopulation_Click(object sender, EventArgs e)
    {
        //sql query for highest population
        string highestStr = "select max(population) from city";
        //command object
        cmd = new SqlCommand(highestStr, con);
        //display Highest population
        MessageBox.Show("Highest Population:" + cmd.ExecuteScalar());
    }

    private void btnLowestPopulation_Click(object sender, EventArgs e)
    {
        //sql query for lowest population
        string lowestStr = "select min(population) from city";
        //command object
        cmd = new SqlCommand(lowestStr, con);
        //display lowest population
        MessageBox.Show("Lowest Population:" + cmd.ExecuteScalar());
    }
}
}

Также Вот два изображения, чтобы дать вам более четкое представление о проблеме:

New York Population

London Population

Я действительно близок к завершению этой программы, мне просто нужно, чтобы данные отображались в правильной области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...