asp.net обновление не работает

Я пытаюсь сделать обновление в formview, но это не работает. Я добавляю точку останова в начале обновления methode, и он отлично проходит через весь methode. Но однокурсник сказал мне, что в конце methode (после «return i») он должен пойти в BO.заказы.cs, а он этого не делает. Я не получаю никаких ошибок.
Есть кто-нибудь, кто может мне помочь?
(Извините за мой плохой английский)

Это мое обновление methode и GetConnectionString

 public static string GetConnectionString()
    {
        return ConfigurationManager.ConnectionStrings
          ["BookstoreConnectionString"].ConnectionString;
    }

public static int UpdateOrder(Order order)
    {
        SqlConnection conn = new SqlConnection(GetConnectionString());

        string sql = "UPDATE tblOrders " +
          "SET Name = @name, Address = @address, " +
          "City = @city, Pc = @pc, Date = @date, Book_id = @book_id, Count = @count, Amount = @amount, " +
          "Delivered = @delivered, Ddate = @ddate, Paid = @paid, Pdate = @pdate " +
          " WHERE Id = @Id";

        SqlCommand cmd = new SqlCommand(sql, conn);

        cmd.Parameters.AddWithValue("@id", order.OrderId);
        cmd.Parameters.AddWithValue("@name", order.Name);
        cmd.Parameters.AddWithValue("@address", order.Address);
        cmd.Parameters.AddWithValue("@city", order.City);
        cmd.Parameters.AddWithValue("@pc", order.Pc);
        cmd.Parameters.AddWithValue("@date", order.Date);
        cmd.Parameters.AddWithValue("@book_id", order.Bookid);
        cmd.Parameters.AddWithValue("@count", order.Count);
        cmd.Parameters.AddWithValue("@amount", order.Amount);
        cmd.Parameters.AddWithValue("@delivered", order.Delivered);
        cmd.Parameters.AddWithValue("@paid", order.Paid);
        cmd.Parameters.AddWithValue("@ddate", order.Ddate);
        cmd.Parameters.AddWithValue("@pdate", order.Pdate);


        conn.Open();
        int i = cmd.ExecuteNonQuery();
        conn.Close();

        return i;
    }

И это мой objectdatasource моего formview

<asp:ObjectDataSource ID="dtsDetail" runat="server" DataObjectTypeName="BO.Order" DeleteMethod="DeleteOrder" InsertMethod="InsertOrder" OldValuesParameterFormatString="original_{0}" SelectMethod="GetOrdersByOrderId" TypeName="DAL.OrdersDAL" UpdateMethod="UpdateOrder">
    <UpdateParameters>
        <asp:Parameter Name="Date" Type="DateTime" />
        <asp:Parameter Name="Amount" Type="Decimal" />
    </UpdateParameters>
    <SelectParameters>
        <asp:ControlParameter ControlID="gv" Name="ID" PropertyName="SelectedValue" Type="Int32" />
    </SelectParameters>
</asp:ObjectDataSource>

Спасибо за помощь

1 ответ

  1. Если значение » i » равно 0 (как указано в комментарии) после вызова ExecuteNonQuery(), это означает, что 0 строк были обновлены после выполнения sql-запроса.

    В основном, ваша инструкция update (string sql = "UPDATE tblOrders "…) ищет строку, которая имеет идентификатор любого значения order.OrderID(…" WHERE Id = @Id"; cmd.Parameters.AddWithValue("@id", order.OrderId);) и он не может найти соответствующую строку, поэтому он ничего не обновляет. Таким образом, чтобы обновление работало, вам нужно будет предоставить идентификатор, который существует.