2015-03-31 137 views
0

我試圖允許(用戶)從數據庫中刪除數據並用更新的信息替換它。刪除數據庫行中的特定數據(C#)

我遇到的問題是這樣的:

SQLEXCEPTION是未處理:附近有語法錯誤 ''。

而這個錯誤出現在第一:sqlcmd.ExecuteNonQuery()

下面是 「應用編輯」 按鈕全碼:

private void applybtn_Click(object sender, EventArgs e) 
{ 
     Connection(); 
     sqlconnection.Open(); 

     sqlcmd = new SqlCommand("DELETE Item, Quantity, description, datasheet FROM inventory_table WHERE id= " + ID, sqlconnection); 
     sqlcmd.ExecuteNonQuery(); 

     sqlcmd = new SqlCommand("UPDATE inventory_table SET Item = @Item, Quantity = @Quantity, description = @description, datasheet = @datasheet "+ 
      "WHERE id= " + ID, sqlconnection); 
     sqlcmd.Parameters.AddWithValue("@Item", this.txtbx1.Text); 
     sqlcmd.Parameters.AddWithValue("@Quantity", this.txtbx2.Text); 
     sqlcmd.Parameters.AddWithValue("@description", this.txtbx3.Text); 
     sqlcmd.Parameters.AddWithValue("@datasheet", this.txtbx4.Text); 
     sqlcmd.ExecuteNonQuery(); 

     sqlconnection.Close();  
    } 
+4

無法刪除只是從SQL Server表中的幾列 - 你只能刪除**完整的行**。如果你想「刪除」一些列 - 你需要使用'UPDATE(表)SET column1 = NULL'或類似的東西 – 2015-03-31 21:30:34

+1

語法錯誤是由刪除命令的語法不正確引起的,但你不需要刪除該行,因爲舊值被傳遞給更新命令的新值替換 – Steve 2015-03-31 21:33:07

+1

您只需要更新即可將舊值更改爲當前值。你爲什麼需要刪除? – 2015-03-31 21:33:40

回答

0

試試這個

private void applybtn_Click(object sender, EventArgs e) 
{ 
     Connection(); 
     sqlconnection.Open(); 

     sqlcmd = new SqlCommand("DELETE FROM inventory_table WHERE id= " + ID, sqlconnection); 
     sqlcmd.ExecuteNonQuery(); 

     sqlcmd = new SqlCommand("UPDATE inventory_table SET Item = @Item, Quantity = @Quantity, description = @description, datasheet = @datasheet "+ 
      "WHERE id= " + ID, sqlconnection); 
     sqlcmd.Parameters.AddWithValue("@Item", this.txtbx1.Text); 
     sqlcmd.Parameters.AddWithValue("@Quantity", this.txtbx2.Text); 
     sqlcmd.Parameters.AddWithValue("@description", this.txtbx3.Text); 
     sqlcmd.Parameters.AddWithValue("@datasheet", this.txtbx4.Text); 
     sqlcmd.ExecuteNonQuery(); 

     sqlconnection.Close();  
    } 
+0

而不是在最後連接這個想法,請記住總是使用一個參數,否則你會自己打開sql注入攻擊 – 2015-04-01 01:38:32