我的问题是,每次我尝试在CMS中进行更新时,它只会更新每个列/行。例如:我更新Test 1 -> Test 2
同时我有测试4
但是然后由于我将测试1更改为2,因此测试4->测试2对其也进行了更改。
它们仍然可以按ID正常工作,当我删除它们时,它们会分别删除,因此与所有内容重叠的唯一功能是更新。
我现在将发布我的代码(这是我所了解的,不对安全性或w / e进行评论)仅需要解决此问题,以便仅更新所选ID行。
第一的:
public DataRow GetById(string ID)
{
strSQL = "SELECT ID, clnOverskrift, clnTekst "
+ "FROM tblForside "
+ "WHERE ID=@ID";
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 "
+ " clnOverskrift=@Overskrift, clnTekst=@Tekst ";
objCMD = new MySqlCommand(strSQL);
objCMD.Parameters.AddWithValue("@Overskrift", Pro.Overskrift);
objCMD.Parameters.AddWithValue("@Tekst", Pro.Tekst);
objData.ModifyData(objCMD, objCon);
}
我将同时使用GetById和Update,这就是为什么我将两者都包括在内的原因。如果您需要在这个“工厂”中了解更多信息,我会发布它。
在这里我明白了:
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中使用TextAreas。
如前所述,添加新的东西会起作用,然后删除-只有此更新不能正常工作。它"EditForside.aspx?id=13"
在浏览器中正确显示了ID ,但似乎也选择了其他所有ID
希望您能够帮助我。
您的UPDATE语句必须包含WHERE条件-与您选择的条件相同。然后,它将仅更新该特定行。如果没有WHERE,它将更新表中的每一行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句