在数据库表中插入DataGridVIew单元格值

时间:2018-01-10 15:38:40

标签: c# mysql database winforms datagridview

我是用c#编程的新手。

所以我创建了包含列ID,PersonName,City的数据库表Info,并将其绑定到WinForms中的DataGridView。每当我更改单元格值或添加新单元格时,我希望它分别更新/插入到db表中。我的问题是我应该参加哪个活动?我试过CellEndEdit,CellValueChanged,CellLeave,似乎没有工作。

这是我的INSERT查询:

            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = "INSERT INTO Info([PersonName], [City]) Values (@personName, @city)";
            cmd.Parameters.AddWithValue("@personName", dataGridView1.SelectedCells[0].Value.ToString());
            cmd.Parameters.AddWithValue("@city", dataGridView1.SelectedCells[0].Value.ToString());

            cmd.ExecuteNonQuery();
            dataGridView1.ResetBindings();
            conn.Close();

对于UPDATE查询

            conn.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        string updateQuery = "update Info set [PersonName]='" + dataGridView1.SelectedCells[0].Value + "', [City]='" + dataGridView1.SelectedCells[0].Value + "', where ID=" + dataGridView1.SelectedRows[0] + "";
        cmd.CommandText = updateQuery;

        cmd.ExecuteNonQuery();
        conn.Close();

我知道对于CellLeave事件,它可能没有获得正确的单元格,但不知道为什么其他事件不起作用。

任何人都想分享任何t

1 个答案:

答案 0 :(得分:0)

您正在使用正确的活动,但如下所示使用它。 SelectedCells可能无法返回正确的值。使用e.RowIndex,它将返回您正在编辑的精确Cell的值。

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
         string Person = dataGridView1.Rows[e.RowIndex].Cells["Person"].Value.ToString();
         string City = dataGridView1.Rows[e.RowIndex].Cells["City"].Value.ToString();
         AddToDatabase(Person,City);
    }