Hury H Hury H - 2 months ago 10
SQL Question

SQL,DataTable. Why value changing in every row in column?

So i writed something like editor but I have problem with value changing in every row in one column. I want to change just one specific cell not all. Also I used breakpoints and I realize that it happens when SqlCommand is defined and Executed but I don't know why it happens? I want e.g have two values the same but also want to it just change value in row which selected in comboxo not in all rows...

private void button1_Click(object sender, EventArgs e)
{
UpdateBase();
this.Close();
}

public string currentvalue = "";

public void UpdateBase()
{
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\JM\Documents\Kviz.mdf;Integrated Security=True;Connect Timeout=30");
if (Povezivac_varijabli_Formama.edi.comboBox1.SelectedIndex == 0)
{
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton1, "RadioBtn1text", 0);

}
else if (Povezivac_varijabli_Formama.edi.comboBox1.SelectedIndex == 1)
{
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton1, "RadioBtn1text", 1);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton2, "RadioBtn2text", 1);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton3, "RadioBtn3text", 1);
}
else if (Povezivac_varijabli_Formama.edi.comboBox1.SelectedIndex == 2)
{
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton1, "RadioBtn1text", 2);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton2, "RadioBtn2text", 2);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton3, "RadioBtn3text", 2);
}
else if (Povezivac_varijabli_Formama.edi.comboBox1.SelectedIndex == 3)
{
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton1, "RadioBtn1text", 3);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton2, "RadioBtn2text", 3);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton3, "RadioBtn3text", 3);
}
else if (Povezivac_varijabli_Formama.edi.comboBox1.SelectedIndex == 4)
{
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton1, "RadioBtn1text", 4);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton2, "RadioBtn2text", 4);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton3, "RadioBtn3text", 4);
}
else if (Povezivac_varijabli_Formama.edi.comboBox1.SelectedIndex == 5)
{
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton1, "RadioBtn1text", 5);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton2, "RadioBtn2text", 5);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton3, "RadioBtn3text", 5);
}
else if (Povezivac_varijabli_Formama.edi.comboBox1.SelectedIndex == 6)
{
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton1, "RadioBtn1text", 6);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton2, "RadioBtn2text", 6);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton3, "RadioBtn3text", 6);
}
else if (Povezivac_varijabli_Formama.edi.comboBox1.SelectedIndex == 7)
{
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton1, "RadioBtn1text", 7);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton2, "RadioBtn2text", 7);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton3, "RadioBtn3text", 7);
}
else if (Povezivac_varijabli_Formama.edi.comboBox1.SelectedIndex == 8)
{
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton1, "RadioBtn1text", 8);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton2, "RadioBtn2text", 8);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton3, "RadioBtn3text", 8);
}
else if (Povezivac_varijabli_Formama.edi.comboBox1.SelectedIndex == 9)
{
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton1, "RadioBtn1text", 9);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton2, "RadioBtn2text", 9);
setRadioButtonText(Povezivac_varijabli_Formama.edi.radioButton3, "RadioBtn3text", 9);
}

}




SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\JM\Documents\Kviz.mdf;Integrated Security=True;Connect Timeout=30");
public void setRadioButtonText(RadioButton RadioButton,string RadioButtonColumn, int row)
{

////Determine which radiobutton in datatable's row is selected
//!//
if (RadioButton.Checked == true)
{
//!//
RadioButton.Text = textBox1.Text;
////GET CURRENT VALUE
SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Pitanja", con);
DataTable dt = new DataTable();
ad.Fill(dt);
//!// //!//
currentvalue = dt.Rows[row][RadioButtonColumn].ToString();
////GET CURRENT VALUE
//!// //!//
SqlCommand comnd = new SqlCommand("UPDATE Pitanja SET " + RadioButtonColumn + " = @textboxtext WHERE " + RadioButtonColumn + " LIKE '" + currentvalue + "'", con);
comnd.Parameters.AddWithValue("@textboxtext", textBox1.Text);

try
{
con.Open();
comnd.ExecuteNonQuery();
}
catch (SqlException ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
con.Close();
}
}
}


Picture of the problem

Answer

Your problem lies in this part of your code

currentvalue = dt.Rows[row][RadioButtonColumn].ToString();
    ////GET CURRENT VALUE
                                                                  //!//                                         //!//
SqlCommand comnd = new SqlCommand("UPDATE Pitanja SET " + RadioButtonColumn + " = @textboxtext WHERE " + RadioButtonColumn + " LIKE '" + currentvalue + "'", con);
    comnd.Parameters.AddWithValue("@textboxtext", textBox1.Text);

You retrieve the value of the radiobuttoncolumn and update all 'Pitanja' where the value of the radiobuttoncolumn is equal to this value. Since all of your rows in the database are equal to this value. They will all be updated.

You should choose a unique value to filter your update, like your ID column. Then only the row with that unique Id will get updated. It will probably look a bit like this, however I didn't test this.

currentvalue = dt.Rows[row]["Id"].ToString();
    ////GET CURRENT VALUE
                                                                  //!//                                         //!//
SqlCommand comnd = new SqlCommand("UPDATE Pitanja SET " + RadioButtonColumn + " = @textboxtext WHERE Id = " + currentvalue, con);
    comnd.Parameters.AddWithValue("@textboxtext", textBox1.Text);
Comments