从DGV和SQLite DB中删除条目(C#)

时间:2015-03-18 15:49:38

标签: c# winforms sqlite datagridview

在我的程序中,我在一个表单上有一个dgv。当我从dgv中删除一个条目时,我还想从SQLite数据库中删除该条目,以便它不会重新出现。

我有一个'id'列(PRIMARY KEY AUTOINCREMENT),因此每个项目都是唯一的。

我遇到的问题是在删除行的情况下访问“id”。

以下是一些代码:

DialogResult deleteitem = MessageBox.Show("Delete the selected item?", "Delete Item", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
if (deleteitem == DialogResult.Yes)
{
    if (!this.dataGridView1.Rows[this.rowIndex].IsNewRow)
    {
          SetConnection();
          sqlconnection.Open();

          this.dataGridView1.Rows.RemoveAt(this.rowIndex);

          sqlcmd = new SQLiteCommand("DELETE FROM table1 WHERE id=???", sqlconnection);
          sqlcmd.ExecuteNonQuery();
    }
}

1 个答案:

答案 0 :(得分:0)

首先 - 在从网格中删除行之前,您需要构建SQLLiteCommand。您可以使用上述评论中建议的任一方法。您可以像这样访问DataBoundItem:

MyRowDataType dataRow = (MyRowDataType)this.dataGridView1.Rows[this.rowIndex].DataBoundItem;

然后您可以删除此方式(但您需要知道基础数据的类型并将MyRowDataType更改为您的数据类型):

sqlcmd = new SQLiteCommand("DELETE FROM table1 WHERE id=" + dataRow.ID, sqlconnection);

或者您可以将ID列作为隐藏列添加到DataGridView,并以这种方式访问​​值:

sqlcmd = new SQLiteCommand("DELETE FROM table1 WHERE id=" + this.dataGridView.Rows[this.rowIndex].Cells["IDColumnName"].Value, sqlconnection);