Asp.net SqlDataSource UpdateParameters-输入字符串的格式不正确
我继承了一些需要更新的ASP.NET代码,这导致我需要将ASPAsp.net SqlDataSource UpdateParameters-输入字符串的格式不正确,asp.net,sql-server,sqldatasource,updatecommand,Asp.net,Sql Server,Sqldatasource,Updatecommand,我继承了一些需要更新的ASP.NET代码,这导致我需要将ASPSqlDataSource的UpdateCommand类型从字符串(硬编码的SQLupdate语句)更改为包含update语句的存储过程 字符串执行得很好,并使用绑定到详细视图中控件的参数(我知道这不是最佳做法,必须从客户端处理数据连接会让我感到痛苦…!但我还没有时间重新写入此页面和许多页面的所有数据连接) 无论如何,我刚刚将UpdateCommand更改为一个执行相同操作的存储过程,我只是得到了错误 输入字符串的格式不正确 当我尝试
SqlDataSource
的UpdateCommand类型
从字符串(硬编码的SQLupdate
语句)更改为包含update
语句的存储过程
字符串执行得很好,并使用绑定到详细视图中控件的参数(我知道这不是最佳做法,必须从客户端处理数据连接会让我感到痛苦…!但我还没有时间重新写入此页面和许多页面的所有数据连接)
无论如何,我刚刚将UpdateCommand
更改为一个执行相同操作的存储过程,我只是得到了错误
输入字符串的格式不正确
当我尝试更新页面时
如果需要,我可以提供代码,但它太大太可怕了,所以我试探性地问是否有人有任何初步想法?不过,我会在下面放一些小东西。我一直在查看UpdateParameterCollection
,因为我想知道参数集合是否被缓存在任何地方,但看不到任何东西
我将控件绑定到数据源
项,如下所示:
<EditItemTemplate>
<asp:CheckBox ID="chkNonReview" runat="server" Checked='<%# Bind("NonReview") %>' />
</EditItemTemplate>
为此:
<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">
.....
存储过程声明如下所示:
CREATE PROCEDURE [dbo].[UPDATE_TRAINEE_EVENTS]
@EVENTID int,
@EVENTTYPEID int,
@EVENTDATE datetime,
@STAFFID int,
@REVIEWNO int,
@COMMENTS varchar(2100),
@DESTINYVERIFIED int,
@DESTINYVERIFIEDBY int,
@DESTINYVERIFIEDDATE datetime,
@REASONFORSUSPENSIONID int,
@RETURNTOWORKDATE datetime,
@ContactDetailsUpdated int,
@RETENTION_STATUS_ID int,
@RETENTION_REASON_ID int,
@NonReview int,
@FalsifiedEventReason int,
@SusReqReasonID int,
@SusReqReturnDate datetime
AS
......
我还对该会话运行了SQL Server Profiler,以查看传递到数据库的内容,但是在任何内容进入数据库之前出现错误,这似乎表明问题在ASP.NET方面。您的
应该有一个数据类型。
我想应该是这样的
<asp:Parameter Name="EVENTID" Type="Int32" />
请检查您的值和字段数据类型…对不起,我应该提到我已经多次检查数据类型,以检查它们是否匹配。。在某种程度上,我将SP中的所有内容都更改为字符串和varchar)。。。我甚至确保参数的顺序与SP中的顺序相同(因为我知道一些数据连接引擎需要这样做)…更新了上面的代码示例,以包含完整的更新参数和SP声明。啊,我复制了一个错误的示例-我做了很多尝试,在代码段中错过了它。。。我只想说,即使使用您提到的数据类型声明,我也会遇到同样的问题…我还将参数精简为一个,以查看是否有一个参数导致了问题,但只是继续得到同样的错误。。。我甚至尝试过不设置更新参数并将其从SP中删除。。。执行此操作时,我会收到一个错误,指出SP不需要参数,但正在传递这些参数。。。即使我没有申报。因此,我想知道控件绑定是否有效地创建了一个参数??您确定EVENTID有一个值吗?你的错误似乎很明显。不是整数值就是空值@CHRISHILL请在调用@CHRISHILL时包含您的SP和代码刚刚将参数更新为当前的设置方式(从原始设置中列出的原始参数,其中UpdateCommand是一个字符串并起作用…我还为正在联系的SP添加了声明…或不添加声明,视情况而定!?如果您能发现任何内容,我们将不胜感激-我已经用尽了我的所有想法!
CREATE PROCEDURE [dbo].[UPDATE_TRAINEE_EVENTS]
@EVENTID int,
@EVENTTYPEID int,
@EVENTDATE datetime,
@STAFFID int,
@REVIEWNO int,
@COMMENTS varchar(2100),
@DESTINYVERIFIED int,
@DESTINYVERIFIEDBY int,
@DESTINYVERIFIEDDATE datetime,
@REASONFORSUSPENSIONID int,
@RETURNTOWORKDATE datetime,
@ContactDetailsUpdated int,
@RETENTION_STATUS_ID int,
@RETENTION_REASON_ID int,
@NonReview int,
@FalsifiedEventReason int,
@SusReqReasonID int,
@SusReqReturnDate datetime
AS
......
<asp:Parameter Name="EVENTID" Type="Int32" />