2013-10-12 33 views
0

我的問題是,每次我嘗試更新我的CMS時,它只是更新每一列/行。 例如: 我更新Test 1 -> Test 2C#MySQL - 「更新」是選擇每一行/所有內容

同時我有測試4

但隨後測試4 - >測試2,由於我改變了測試1至2它只是改變了藏漢。

他們仍然通過ID正確工作,並且當我刪除它們時,它們單獨刪除,因此唯一與所有內容重疊的函數都會更新。

我現在將發佈我的代碼(這是我學到的東西,不要評論安全性或w/e)只需要修復此問題,以便它只更新選定的ID行。

第一:

public DataRow GetById(string ID) 
{ 

    strSQL = "SELECT ID, clnOverskrift, clnTekst " 
      + "FROM tblForside " 
      + "WHERE [email protected]"; 

    objCMD = new MySqlCommand(strSQL); 
    objCMD.Parameters.AddWithValue("@ID", ID); 

    return objData.GetData(objCMD, objCon).Rows[0]; 
} 
public void Update(PropertyForside Pro) 
{ 

    strSQL = "UPDATE tblForside SET " 
      + " [email protected], [email protected] "; 

    objCMD = new MySqlCommand(strSQL); 
    objCMD.Parameters.AddWithValue("@Overskrift", Pro.Overskrift); 
    objCMD.Parameters.AddWithValue("@Tekst", Pro.Tekst); 

    objData.ModifyData(objCMD, objCon); 
} 

我將同時使用GetById和更新這就是爲什麼我既包括。 如果你需要了解更多這個「工廠」,我會發布它。

在這裏,我得到它:

FactoryForside fac = new FactoryForside(); 
PropertyForside Pro = new PropertyForside(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 

     DataRow dr = fac.GetById(Request.QueryString["ID"]); 

     txtOverskrift.InnerText = dr["clnOverskrift"].ToString(); 
     txtText.InnerText = dr["clnTekst"].ToString(); 
    } 
} 
protected void btnGem_Click(object sender, EventArgs e) 
{ 
    Pro.Overskrift = txtOverskrift.InnerText; 
    Pro.Tekst = txtText.InnerText; 
    Pro.ID = int.Parse(Request.QueryString["ID"]); 

    fac.Update(Pro); 

    Response.Redirect("RedigerForside.aspx"); 
} 

我用的innerText使用文本域與NiceEdit。

添加新的工作,並刪除前面提到的 - 只有這個更新的東西無法正常工作。 它在瀏覽器中正確顯示ID "EditForside.aspx?id=13",但它似乎選擇其他每個ID

希望你能幫助我。

回答

2

您的UPDATE語句必須包括一個WHERE條件 - 你在選擇使用相同的。然後它只會更新那個特定的行。沒有WHERE它會更新表中的每一行。

文檔:http://dev.mysql.com/doc/refman/5.0/en/update.html

+0

謝謝。 我的意思是......這是最基本的東西之一,我錯過了它。 我是********* 再次謝謝你! – user2874727

0

原因可能是因爲您尚未在您的update條款中提供where條件。因此,如果您在update聲明中不提供where條件,則最終會更新表中的每一行。

嘗試這樣:

strSQL = "UPDATE tblForside SET " 
     + " [email protected], [email protected] " 
     + " WHERE [email protected]";