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

标签 c# mysql database winforms datagridview

我对使用 C# 编程还很陌生。

因此,我创建了包含 ID、PersonName、City 列的数据库表 Info,并将其绑定(bind)到 WinForms 中的 DataGridView。每当我更改单元格值或添加新单元格时,我希望它分别更新/插入到数据库表中。我的问题是我应该参加哪项事件?我尝试过 CellEndEdit、CellValueChanged、CellLeave,但似乎都不起作用。

这是我的插入查询:

            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 事件,它可能无法获取正确的单元格,但不知道为什么其他事件不起作用。

任何人都想分享任何内容

最佳答案

您正在使用正确的事件,但请像下面这样使用它。 SelectedCells 可能不会返回正确的值。使用 e.RowIndex 它将返回您正在编辑的确切单元格的值。

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);
    }

关于c# - 在数据库表中插入 DataGridVIew 单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48191008/

相关文章:

c# - 如何检测控件是否失效?

c# - 解密时 Base-64 字符数组的长度无效

mysql - 需要用两个不同的 where 子句返回两组数据

ruby-on-rails - 搜索特定表是否比在特定表中搜索特定条目更快?

sql - 如果传递 null 将引发错误的 TSQL 函数?

c# - Entity Framework 为开发/生产生成更新脚本

c# - 如果在第一个 `else` 之后有一个 `return` ,这对性能有影响吗?

mysql - Ruby on Rails : mysql error

php - 按日期对表字段进行排序 从最旧到最新

c# - 如何将海量数据离线存储,然后批量更新到SQLite数据库中?