我继承了一些我需要更新的ASP.NET代码,这导致我需要从字符串中更改ASP SqlDataSource
的{{1}}(硬编码的SQL UpdateCommandType
语句)到包含Update
语句的存储过程。
字符串执行正常并使用绑定到详细信息视图中的控件的参数(我知道这不是最佳实践,并且我不得不使用来自客户端的数据连接...!但我没有时间为此页面和许多页面重新编写所有数据连接。
无论如何,我刚刚将Update
更改为执行相同操作的存储过程,我只是得到了错误
输入字符串的格式不正确。
当我尝试在页面上更新时。
我可以根据要求提供代码,但它很大而且很重要。可怕的,所以我试探性地询问是否有人有任何初步想法?我会在下面放几个小位。我一直在关注UpdateCommand
因为我想知道参数集是否在任何地方被缓存 - 但看不到任何东西。
我有绑定到UpdateParameterCollection
项的控件,如下所示:
DataSource
<EditItemTemplate>
<asp:CheckBox ID="chkNonReview" runat="server" Checked='<%# Bind("NonReview") %>' />
</EditItemTemplate>
已经改变了......
SqlDataSource
到此:
<asp:SqlDataSource ID="dsEventDV" runat="server"
ConnectionString="<%$ ConnectionStrings:MyConnString %>"
DeleteCommand="DELETE FROM [I_TRAINEE_EVENTS] WHERE [EVENTID] = @EVENTID"
InsertCommand="INSERT_TRAINEE_EVENTS_ED3"
InsertCommandType="StoredProcedure"
OnInserted="DSEvent_Inserted"
SelectCommand="Get_Candidate_Events_I3"
SelectCommandType="StoredProcedure"
UpdateCommand="UPDATE I_TRAINEE_EVENTS (etc...)"
.....
使用新的<asp:SqlDataSource ID="dsEventDV" runat="server"
ConnectionString="<%$ ConnectionStrings:MyConnString %>"
DeleteCommand="DELETE FROM [I_TRAINEE_EVENTS] WHERE [EVENTID] = @EVENTID"
InsertCommand="INSERT_TRAINEE_EVENTS_ED3"
InsertCommandType="StoredProcedure"
OnInserted="DSEvent_Inserted"
SelectCommand="Get_Candidate_Events_I3"
SelectCommandType="StoredProcedure"
UpdateCommand="UPDATE_TRAINEE_EVENTS"
UpdateCommandType="StoredProcedure">
.....
值。
更新参数:
UpdateCommand
存储过程声明如下:
<UpdateParameters>
<asp:Parameter Name="EVENTID" Type="Int32"/>
<asp:Parameter Name="EVENTTYPEID" Type="Int32"/>
<asp:Parameter Name="EVENTDATE" Type="DateTime"/>
<asp:Parameter Name="STAFFID" Type="Int32"/>
<asp:Parameter Name="REVIEWNO" Type="Int32"/>
<asp:Parameter Name="COMMENTS" Type="String"/>
<asp:Parameter Name="DESTINYVERIFIED" Type="Int32"/>
<asp:Parameter Name="DESTINYVERIFIEDBY" Type="Int32"/>
<asp:Parameter Name="DESTINYVERIFIEDDATE" Type="DateTime"/>
<asp:Parameter Name="REASONFORSUSPENSIONID" Type="Int32"/>
<asp:Parameter Name="RETURNTOWORKDATE" Type="DateTime"/>
<asp:Parameter Name="ContactDetailsUpdated" Type="Int32"/>
<asp:Parameter Name="RETENTION_STATUS_ID" Type="Int32"/>
<asp:Parameter Name="RETENTION_REASON_ID" Type="Int32"/>
<asp:Parameter Name="NonReview" Type="Int32"/>
<asp:Parameter Name="FalsifiedEventReason" Type="Int32"/>
<asp:Parameter Name="SusReqReasonID" Type="Int32"/>
<asp:Parameter Name="SusReqReturnDate" Type="DateTime"/>
</UpdateParameters>
我还针对会话运行SQL Server Profiler以查看传递给数据库的内容,但是在发生任何命中数据库之前出现错误,这似乎表明问题出在ASP.NET方面。< / p>
答案 0 :(得分:0)
您的<asp:Parameter Name="EVENTID" />
应该有一个数据类型。
我认为它应该是这样的..
<asp:Parameter Name="EVENTID" Type="Int32" />