我想在数据网格视图中填充一行后自动将数据插入数据库



我用一个数据库文件绑定了我的DataGridView。我想在完成在该行中输入值后将每一行保存到数据库中。

我知道如何保存完整的表格,但不是每一行。

我输入

的单行,我希望它在我该行的最后一个单元格中输入值并移动到下一行后自动保存到数据库中。

我写了一些代码,但没有保存,但显示消息"记录已保存"。吹我的代码

    private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
    {
      if (e.ColumnIndex == 5)
        {
            SqlDataAdapter da = new SqlDataAdapter("insert into invtempdb (fullname, quantity, itmbyp, itmprimary, itmtotal) values( '" + dataGridView1.CurrentRow.Cells[1] + "', '" + dataGridView1.CurrentRow.Cells[2] + "','" + dataGridView1.CurrentRow.Cells[3] + "','" + dataGridView1.CurrentRow.Cells[4] + "','" + dataGridView1.CurrentRow.Cells[5] + "')", con);
            MessageBox.Show("value saved");
        }
        else
        {
            return;
        }

好的,根据我对你的问题的理解,你需要在完成一行后立即更新数据库。

您可以通过以下方式执行此操作:

DataGridView有许多不同的事件可供使用:

  • RowLeave
  • RowsAdded
  • RowsRemoved

还有更多,我认为对于您的确切要求,这三个事件应该足够了。

你要做的是,将 sql 命令用于在事件RowLeave中更新数据库。这将在您每次离开特定行的最后一个单元格时更新数据库。

在他们的描述中阅读有关事件的更多信息,以找到最适合您目的的追求者,但是,这是进一步进行的方法。

外延:

我看不出您在哪里使用了RowLeave事件,但这里有一个解决方案。

    SqlConnection con = new SqlConnection(connection string); //put your connection string there
    SqlCommand insert = new SqlCommand("insert into invtempdb (fullname, quantity, itmbyp, itmprimary, itmtotal) values(@a,@b,@c,@d,@e);", con)
    insert.Parameters.Add("@a",dataGridView1.CurrentRow.Cells[1] );
    insert.Parameters.Add("@b",dataGridView1.CurrentRow.Cells[2] );
    insert.Parameters.Add("@c",dataGridView1.CurrentRow.Cells[3] );
    insert.Parameters.Add("@d",dataGridView1.CurrentRow.Cells[4] );
    insert.Parameters.Add("@e",dataGridView1.CurrentRow.Cells[5] );
    insert.ExecuteNonQuery();

将此代码放入您的事件中,您就可以开始了。你的基础知识非常薄弱,专注于这一点,否则你总是会陷入非常小的错误。

最新更新