2013-10-12 3 views
0

Моя проблема заключается в том, что каждый раз, когда я пытаюсь обновить в моей CMS, он просто обновляет каждый столбец/строку. Например: обновляю Test 1 -> Test 2C# MySQL - «Обновление» выбирает каждую строку/все

Между тем у меня есть тест 4

Но тогда Тест 4 -> Test 2 из-за я изменил тест 1 до 2 он просто изменяет это Aswell.

Они по-прежнему работают по идентификатору правильно, и когда я удаляю их, они удаляют индивидуально, поэтому единственная функция, которая перекрывается со всем этим обновлением.

Я теперь пост моего кода (это то, что я узнал, не комментирую безопасность или ж/д) просто нужно этот вопрос фиксированным, так что только обновляет выбранный идентификатор строки.

Первое:

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 и 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.

Добавление новых работ, и удаление, как упоминалось ранее - только это обновление, что не работает должным образом. Он отображает ID правильно "EditForside.aspx?id=13" в браузере, но он, кажется, выбирает все остальные ID, а также

Надеюсь, вы мне поможем.

ответ

2

Ваш UPDATE заявление должно включать в себя WHERE условие - то же самое вы используете в вашем выбора. Затем он обновит только эту определенную строку. Без WHERE он обновляет каждую строку в таблице.

Документация: http://dev.mysql.com/doc/refman/5.0/en/update.html

+0

СПАСИБО. Я имею в виду .. Это одна из самых основных вещей, и я пропустил это. Я ********* Спасибо еще раз! – user2874727

0

Причина может быть в том, что вы не указали условие where в своем предложении update. Поэтому, если вы не указали условие where в своем заявлении update, это приведет к обновлению каждой строки таблицы.

попробовать что-то вроде этого:

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

Вы должны предоставить пункт WHERE в своем заявлении обновления. Например.

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

Это ограничивает, какие строки будут обновляться.

Смежные вопросы