C# C“MySQL-”的;更新;正在选择每一行/所有内容

C# C“MySQL-”的;更新;正在选择每一行/所有内容,c#,mysql,asp.net,sql,C#,Mysql,Asp.net,Sql,我的问题是,每次我尝试在CMS中更新时,它只会更新每一列/行。 例如: 我更新test1->test2 同时我还有第四次考试 但是测试4->测试2,因为我把测试1改成了测试2,所以它也简单地改变了这一点 它们仍然按ID正确工作,当我删除它们时,它们会单独删除,因此唯一与所有内容重叠的功能是更新 我现在将发布我的代码(这是我学到的,不要对安全性或w/e发表评论),只是需要修复此问题,以便它只更新选定的ID行 第一: public DataRow GetById(string ID) {

我的问题是,每次我尝试在CMS中更新时,它只会更新每一列/行。 例如: 我更新
test1->test2

同时我还有第四次考试

但是测试4->测试2,因为我把测试1改成了测试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将文本区域与编辑一起使用

添加新的工作,并删除如前所述-只有这个更新的东西不能正常工作。 它在浏览器中正确显示ID
“EditForside.aspx?ID=13”
,但它似乎也选择了其他每个ID


希望您能帮助我。

原因可能是您没有在
update
子句中提供
where
条件。因此,如果在
update
语句中不提供
where
条件,它将更新表中的每一行

试着这样做:

strSQL = "UPDATE tblForside SET "
         + " clnOverskrift=@Overskrift, clnTekst=@Tekst "
         + " WHERE ID=@ID";

UPDATE语句必须包含WHERE条件—与select语句中使用的条件相同。然后它将只更新该特定行。没有一个文件,它更新表中的每一行


文档:

您需要在更新语句中提供一个
WHERE
子句。例如

strSQL = "UPDATE tblForside SET "
         + " clnOverskrift=@Overskrift, clnTekst=@Tekst "
         + " WHERE ID=@ID";

这限制了要更新的行。

谢谢。我是说。。这是最基本的事情之一,我错过了。我是*******再次感谢你!