2016-05-26 11 views
0

私はフォームビューで更新しようとしましたが動作しません。私は、更新メソッドの開始時にブレークポイントを追加します。そして、彼は完全な方法で完全に行きます。しかし、同級生は、方法の終わり( "帰って帰った後")に彼はBO.orders.csに行く必要があり、彼はそれをしないと私に言った。私は何の誤りもありません。 私を助けることができる人がいますか? (私の悪い英語のため申し訳ありませんが)asp.netの更新が機能しません

これは私の更新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; 
    } 

であり、これは場合

+0

"BO.orders.cs"とは何ですか?データはデータベースで更新されますか? – RQDQ

+0

はあなたのクラスメイトとは違って実装されている可能性があり、BO.Order.csを通過する必要はありません。あなたの主な目標は、このコードでDBに更新された注文ですか?その部分は成功しましたか?また、コードがBO.Order.csを実行しているときに何が起こると予想されますか? – NoSaidTheCompiler

+0

@ NoSaidTheCompilerはい、私のクラスメートと同じである必要はありませんが、彼は注文を更新しない、それは私の問題です –

答えて

0

を支援するための

<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> 

おかげで私のFormViewコントロールの私のObjectDataSourceですExecuteNonQuery()を呼び出した後、 "i"の値が0(コメントに記載されているように)であることは、SQLの実行後に0行が更新されたことを意味しますuery。

基本的に、あなたの更新ステートメントは、(string sql = "UPDATE tblOrders " ...)order.OrderIDの値が(... " WHERE Id = @Id";cmd.Parameters.AddWithValue("@id", order.OrderId);)であるものは何でものIDを持っている行を探している、それが一致する行を見つけることができないので、それはdoesnの何かを更新する。したがって、更新プログラムを機能させるには、存在するIDを指定する必要があります。

関連する問題