Member 14743579 Ответов: 1

Как можно обновить данные в gridview и сохранить их в базе данных.


я пытаюсь изменить ситуацию.
Pending
в
verified
в gridview нажмите кнопку(Проверить) и сохраните ее в базе данных.

Что я уже пробовал:

я уже пробовал этот код
protected void lnkBtnAccept_Click(object sender, EventArgs e)
  {
      try
      {
          var AcceptLink = (Control)sender;
          GridViewRow row = (GridViewRow)AcceptLink.NamingContainer;
          string Id = row.Cells[1].Text;
          DbCommand cmd = DataAccess.CreateCommand();
          //cmd.CommandText = SP.verifyPAN;
          cmd.CommandText = "update membermaster set VerifyPAN =1 where appmstregno='"+ row.Cells[1].Text+"'";
          cmd.Parameters.Add(DataAccess.CreateParameter(cmd, "AppMstRegNo", DbType.String, Id));
          //cmd.Parameters.Add(DataAccess.CreateParameter(cmd, "veryfy", DbType.String, 1));
          int i = DataAccess.ExecuteNonQuery(cmd);

          if (i > 0)
          {
              BindPaymentGrid();
          }
      }
      catch
      {

      }
  }



В приведенном выше случае если verifypan
(column name in table)
значение равно 0 тогда он показывает ожидание и verifypan
(column name in table)
значение равно 1 оно показывает проверено в gridview но приведенный выше код не работает пожалуйста помогите мне решить эту проблему как можно скорее.

1 Ответов

Рейтинг:
4

MadMyche

Почему вы решили объединить введенный пользователем текст в текст команды SQL, когда у вас есть Параметр все устроено? Вы понимаете, что это открывает вам путь к SQL-инъекция, которая была задокументирована более 20 лет назад и до сих пор является уязвимостью приложения номер 1?

Чтобы исправить это и сократить процесс добавления параметра, попробуйте сделать следующее

cmd.CommandText = "update membermaster set VerifyPAN =1 where appmstregno=@AppMstRegNo";
cmd.Parameters.AddWithValue("@AppMstRegNo", row.Cells[1].Text);
Второе предложение состояло бы в том, чтобы действительно что-то сделать с этим Catch блок - возможно, определите переменную с исключением и зарегистрируйте ее или что-то еще, чтобы отладка могла просмотреть исключение.

Что касается вашей текущей проблемы, если она все еще возникает; это будет скорее проблема отладки, чтобы увидеть, какие значения входят в этот блок кода, и посмотреть, являются ли они тем, что вы ожидаете. И если они верны, то почему база данных не находит нужную запись?


Member 14743579

эта команда не работает никакое другое решение

MadMyche

Вы отладили строку за строкой? Есть ли исключения в блоке catch?

Member 14743579

я использовал эту команду sql в другом файле и предоставил ссылку на команду sql здесь. я использовал код для легкого получения решения.

MadMyche

Хотя поначалу это может показаться сложнее, но как только вы используете параметры на обычном базовом уровне, это становится проще и чище. Вам не нужно беспокоиться о одинарных кавычках вокруг текста или уязвимостей, и при отладке вы можете пройти через строку за строкой, чтобы увидеть, какие параметры имеют какие значения. Первоначально это может занять больше времени (на данный момент), но вы сэкономите много времени на отладку.
"Быстро" - это не очень хорошая причина быть небрежным, и часто вы не возвращаетесь к тому, чтобы сделать это правильно