2014-01-27 102 views
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"); 
     } 
    } 

回答

0

在你的代碼

dbgrid1.Rows.RemoveAt(dbgrid1.SelectedRows[0].Index); 

上面的代碼從網格中刪除數據,並且工作正常

但是,下面的代碼不能正常工作(即SQL查詢來刪除行)

delcmd.CommandText = "DELETE FROM Users WHERE ID=" + dbgrid1.SelectedRows[0].Cells[0].Value.ToString() + ""; 

表示,您正在使用的ID爲dbgrid1.SelectedRows[0].Cells[0].Value.ToString()是錯誤的。

把它在一個監視窗口,並找出什麼值到那裏。

+0

感謝您的快速回復,我發現問題是由於傳入的行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 \ –

相關問題