Я использую событие RowUpdating в Gridview. Когда я обновляю строку, все строки в gridview обновляются. Мой код
Con.Open();
SqlCommand cmd = new SqlCommand("update dbo.PersionalDetails set Name='" + txtName.Text + "',Location='" + txtLocation.Text + "' where id=id", Con);
cmd.ExecuteNonQuery();
Con.Close();
Label lblresult = new Label();
lblresult.ForeColor = Color.Green;
lblresult.Text = txtName.Text + " Details Updated successfully";
GridView1.EditIndex = -1;
BindGrid();
Пожалуйста помоги!!
Это потому, что where id = id
равен true
для всех строк. Это как where 1 = 1
и оно равно where TRUE
. Вот почему все ваши строки обновлены.
expression = expression
Типы возврата
логический
Поскольку id
- это имена столбцов, они являются допустимыми выражениями.
Я сильно чувствую, что вы хотите добавить этот id
в качестве параметра, но вы даже не указали никаких параметров в своем коде, поэтому..
Также using
инструкцию using
для SqlConnection
и SqlCommand
.
using (SqlConnection con = new SqlConnection(ConString))
{
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "update dbo.PersionalDetails set Name = @name, Location = @location where id = @id";
cmd.Parameters.AddWithValue("@name", txtName.Text);
cmd.Parameters.AddWithValue("@location", txtLocation.Text );
cmd.Parameters.AddWithValue("@id", YourIdValue);
con.Open();
cmd.ExecuteNonQuery();
}
}
Вы всегда должны использовать параметризованные запросы. Этот тип конкатенаций строк открыт для атак SQL Injection.
Поскольку мы не знали ваших типов столбцов, я использовал AddWithValue
в моем примере, но не использовал этот метод. Используйте .Add()
как наилучшую практику.
id
в качестве значения, он соответствует только тем строкам, которые имеют это значение в столбце id
.
измените предложение where следующим образом:
where id='"+id+"'
и передать значение для id
Готово!!!
Посмотрите на свое предложение и исправьте его, это всегда ИСТИНА
Еще одна вещь, которую я прочитал о SQL INJECTION, и измените свой стиль кодирования (этот код не сохранится в Интернете!)
'';DROP TABLE xxx; --
.... И измените ваш где 'id = id' на параметры