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

lndjwyie  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(312)

我对c语言编程相当陌生。
因此,我创建了带有id、personname、city列的数据库表info,并将其绑定到winforms中的datagridview。无论何时更改单元格值或添加新单元格,我都希望它分别更新/插入到db表中。我的问题是我应该告诉你哪件事?我试过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();

对于更新查询

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事件,它可能没有得到正确的单元格,但不知道为什么其他事件不起作用。
有人想和我分享吗

w51jfk4q

w51jfk4q1#

您正在使用正确的事件,但请按以下方式使用它。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);
    }

相关问题