0
如果這是一個普通的問題或信息不足,我會提前道歉,我對軟件開發和堆棧溢出社區都是新手。C#從datagrid和數據庫中刪除選定的行
特此說明:
- 我使用SQL Server 2012 AdventureWorks示例數據庫和我創建了一個名爲表的用戶。
- 我使用C#
什麼即時試圖實現概述和問題:
用戶應該能夠選擇在DataGridView一行,然後選擇刪除按鈕來刪除從數據庫中選擇用戶。當運行我的代碼行從DataGridView中刪除,但不是數據庫和在刷新DataGridView中記錄的回報,我不太肯定我已經錯了..
private void btnDelete_Click(object sender, EventArgs e)
{
delete_record();
SqlConnection conn = new SqlConnection();
SqlCommand delcmd = new SqlCommand();
conn.ConnectionString = "server=localhost;Trusted_connection=yes;database=AdventureWorks2012";
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Users", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dbgrid1.DataSource = dt;
conn.Close();
}
private void delete_record()
{
SqlConnection conn = new SqlConnection();
SqlCommand delcmd = new SqlCommand();
conn.ConnectionString = "server=localhost;Trusted_connection=yes;database=AdventureWorks2012";
if (dbgrid1.Rows.Count > 1 && dbgrid1.SelectedRows[0].Index != dbgrid1.Rows.Count - 1)
{
delcmd.CommandText = "DELETE FROM Users WHERE ID=" + dbgrid1.SelectedRows[0].Cells[0].Value.ToString() + "";
conn.Open();
delcmd.Connection = conn;
delcmd.ExecuteNonQuery();
conn.Close();
dbgrid1.Rows.RemoveAt(dbgrid1.SelectedRows[0].Index);
MessageBox.Show("deleted");
}
}
感謝您的快速回復,我發現問題是由於傳入的行ID與數據庫中的ID字段不同。 ID字段是一個自動增量整數。 是否可以通過行ID刪除記錄? 我試過如下: \ code \ SqlParameter paramid = new SqlParameter(「@ ID」,SqlDbType.Int); paramid.Value = dbgrid1.SelectedRows [0] .Index.ToString(); delcmd.Parameters.Add(paramid); delcmd.CommandText =「DELETE FROM Users WHERE row_number()over(order by id)= @ ID」; \ code \ –