Почему мой запрос SQL Update не работает? (строка не затронута) - PullRequest
0 голосов
/ 05 августа 2020

Я создаю веб-сайт с ASP. NET, используя Visual Studio 2019. В веб-форме у меня есть некоторые данные, поступающие из таблицы SQL, и я хочу обновить их, когда я нажимаю кнопку. Вот функция, которая вызывается, когда я нажимаю кнопку:

void updateUserPersonalDetails()
{
    try
    {
        SqlConnection con = new SqlConnection(strcon);
        if (con.State == ConnectionState.Closed)
        {
            con.Open();
        }

        SqlCommand cmd = new SqlCommand("UPDATE member_master_tbl SET full_name=@full_name, dob=@dob WHERE member_id='" + Session["username"].ToString().Trim() + "'", con);
        cmd.Parameters.AddWithValue("@full_name", TextBoxFullName.Text.Trim());
        cmd.Parameters.AddWithValue("@dob", TextBoxDOB.Text.Trim());

        int result = cmd.ExecuteNonQuery();
        con.Close();
        if (result > 0)
        {
            Response.Write("<script>alert('Details Updated Successfully');</script>");
        }
        else
        {
            Response.Write("<script>alert('Invalid entry');</script>");
        }

    }
    catch (Exception ex)
    {
        Response.Write("<script>alert('" + ex.Message + "');</script>");
    }
}

Я получаю предупреждение о том, что данные обновлены, но на самом деле они не обновляются. Другие запросы, такие как SELECT и INSERT, работают, поэтому проблема не в соединении. Я попытался сделать это с помощью Linq, но получил тот же результат.

Ответы [ 3 ]

0 голосов
/ 05 августа 2020

Попробуйте следующее:

 // open the connect via the cmd
cmd.Connection.Open();
 //then execute
cmd.ExecuteNonQuery();


 //also you want to check for not -1 
 if (result != -1)
  {
     //query ran ok and rows were updated
  }

https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.executenonquery?view=dotnet-plat-ext-3.1

0 голосов
/ 19 августа 2020

Я обнаружил, что это работает, если я установил значение full_name в запросе sql следующим образом:

UPDATE member_master_tbl SET full_name= 'blabla' WHERE member_id = 'm001'

Но когда я ввожу такой параметр, он не Не работает:

UPDATE member_master_tbl SET full_name= '" + TextBoxFullName.Text + "' WHERE member_id ='m001'

Имя параметра правильное. Тип значения в базе данных - nvarchar (50). Что мне не хватает?

0 голосов
/ 05 августа 2020

Попробуйте добавить адаптер данных.

Где int result = cmd.ExecuteNonQuery(); Попробуйте это вместо

result = new SqlDataAdapter(); //<- Put this below your SqlConnection con = ...
result.UpdateCommand.ExecuteNonQuery();
*

UPDATE потребуется UpdateCommand.ExecuteNonQuery(), производное от SqlDataAdapter, чтобы получить или установить транзакцию - SQL инструкция или хранимая процедура, используемые для обновления записей в источнике данных.

...