[英]asp.net update doesn't work
我嘗試在formview中進行更新,但不起作用。 我在update methode的開頭添加了一個斷點,而他在整個methode上都處於完美狀態。 但是一位同學告訴我,在方法結束時(“返回i”之后),他必須去BO.orders.cs,但他沒有這樣做。 我沒有任何錯誤。 有沒有人可以幫助我? (對不起,我的英語不好)
這是我的更新方法和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;
}
這是我的formview的objectdatasource
<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>
感謝您的幫助
如果在調用ExecuteNonQuery()之后“ i”的值為0(如注釋中所述),則意味着執行SQL查詢后更新了0行。
基本上,您的update語句( string sql = "UPDATE tblOrders "
...)正在查找具有與order.OrderID
值order.OrderID
的id的行order.OrderID
為(... " WHERE Id = @Id";
cmd.Parameters.AddWithValue("@id", order.OrderId);
),它找不到匹配的行,因此不會更新任何內容。 因此,要使更新生效,您將需要提供一個存在的ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.