2010-04-23 6 views
0

저는 전에 MySql을 처음 사용 했었고 이전에 UpdateParameters와 함께 SqlDataSource를 사용하지 않았으므로 매우 분명하지는 않습니다.MySql 쿼리를 실행 한 후 매개 변수 오류가 누락되었습니다.

레코드를 업데이트하려고하면 업데이트가 수행되지만 "id '매개 변수가 문에서 누락되었습니다."라는 오류가 발생합니다. 따라서 쿼리가 작동하고 데이터베이스가 업데이트되어야하지만 나중에 오류가 발생합니다. 여기

<UpdateParameters> 
       <asp:Parameter Name="business_name" Type="string" Size="256" /> 
       <asp:Parameter Name="addr_line_1" Type="string" Size="256" /> 
       <asp:Parameter Name="addr_line_2" Type="string" Size="256" /> 
       <asp:Parameter Name="addr_line_3" Type="string" Size="256" /> 
       <asp:Parameter Name="postcode" Type="string" Size="32" /> 
       <asp:Parameter Name="county" Type="string" Size="128" /> 
       <asp:Parameter Name="town_city" Type="string" Size="256" /> 
       <asp:Parameter Name="tl_url" Type="string" Size="256" /> 
       <asp:Parameter Name="customer_id" Type="string" Size="16" /> 
       <asp:Parameter Name="region_id" Type="Int16" /> 
       <asp:Parameter Name="description" Type="string" Size="1024" /> 
       <asp:Parameter Name="approval_status" Type="string" Size="1" /> 
       <asp:Parameter Name="tl_user_name" Type="string" Size="256" /> 
       <asp:Parameter Name="phone" Type="string" Size="50" /> 
       <asp:Parameter Name="uploaders_own" Type="Int16" /> 
      </UpdateParameters> 

업데이트 문은 다음과 같습니다 :

[InvalidOperationException: 'id' parameter is missing at the statement] 
    CoreLab.MySql.r.a() +775 
    CoreLab.MySql.r.a(Int32& A_0, ArrayList& A_1) +448 
    CoreLab.MySql.x.e() +398 
    CoreLab.MySql.x.o() +89 
    CoreLab.MySql.MySqlCommand.a(CommandBehavior A_0, IDisposable A_1, Int32 A_2, Int32 A_3) +1306 
    CoreLab.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior) +310 
    System.Data.Common.DbCommand.ExecuteReader() +12 
    CoreLab.Common.DbCommandBase.ExecuteNonQuery() +64 
    System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand(DbCommand command, DataSourceOperation operation) +386 
    System.Web.UI.WebControls.SqlDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) +325 
    System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback) +92 
    System.Web.UI.WebControls.DetailsView.HandleUpdate(String commandArg, Boolean causesValidation) +837 
    System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +509 
    System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Object source, EventArgs e) +95 
    System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37 
    System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source, EventArgs e) +113 
    System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37 
    System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +118 
    System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +135 
    System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565 

사람이 내가 잘못 알고 있나요 : 여기

UPDATE myTable SET business_name = ?, addr_line_1 = ?, addr_line_2 = ?, addr_line_3 = ?, postcode = ?, county = ?, town_city = ?, tl_url = ?, customer_id = ?, region_id = ?, description = ?, approval_status = ?, tl_user_name = ?, phone = ?, uploaders_own = ? WHERE id = " + id 

이 스택 트레이스의

이 사이트는 업데이트의 매개 변수는 ?

감사합니다, 언급 쿼리 id 매개 변수의 매우 끝에

Annelie

답변

1

.
하지만 어딘가에 정의되어 있지 않은 것 같습니다.

+0

죄송합니다. id는 이전에 정의되었고, 단계별로 살펴보면 id라는 것을 알 수 있습니다 (올바른 레코드가 데이터베이스에서 업데이트되면 오류가 발생합니다). – annelie

+0

@annelie ASP는 전혀 모르지만, 아마도'? '표시를 사용하여 다른 매개 변수와 동일한 방식으로 ID를 사용해야합니다. –

+0

감사합니다. 트릭을 수행하는 것 같습니다! id는 잘 작동하는 select 쿼리에 대해 위의 방식으로 전달되므로 업데이트 할 때와 동일한 방법으로 ID에 전달해야한다고 가정했지만 분명히 그렇지 않은 것으로 가정했습니다. 도와 주셔서 정말 감사합니다! – annelie

관련 문제