Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net SqlDataSource UpdateParameters-输入字符串的格式不正确_Asp.net_Sql Server_Sqldatasource_Updatecommand - Fatal编程技术网

Asp.net SqlDataSource UpdateParameters-输入字符串的格式不正确

Asp.net SqlDataSource UpdateParameters-输入字符串的格式不正确,asp.net,sql-server,sqldatasource,updatecommand,Asp.net,Sql Server,Sqldatasource,Updatecommand,我继承了一些需要更新的ASP.NET代码,这导致我需要将ASPSqlDataSource的UpdateCommand类型从字符串(硬编码的SQLupdate语句)更改为包含update语句的存储过程 字符串执行得很好,并使用绑定到详细视图中控件的参数(我知道这不是最佳做法,必须从客户端处理数据连接会让我感到痛苦…!但我还没有时间重新写入此页面和许多页面的所有数据连接) 无论如何,我刚刚将UpdateCommand更改为一个执行相同操作的存储过程,我只是得到了错误 输入字符串的格式不正确 当我尝试

我继承了一些需要更新的ASP.NET代码,这导致我需要将ASP
SqlDataSource
UpdateCommand类型
从字符串(硬编码的SQL
update
语句)更改为包含
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" />