代码之家  ›  专栏  ›  技术社区  ›  Jean-François Côté

更新ASP.NET GridView中“nvarchar”附近的语法不正确

  •  3
  • Jean-François Côté  · 技术社区  · 15 年前

    很简单的问题,但我在网上看到的所有答案都不适用。

    我尝试对ASP.NET网格视图进行更新,但当我单击“更新”时,会收到以下错误:

    “nvarchar”附近有语法错误。必须声明标量变量@intid。

    这是我的数据源。我想问题是从这里来的,但我不知道在哪里…

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:connexionDev %>"  
            DeleteCommand="DELETE FROM [tbl_Bug] WHERE intID = @intID" 
            SelectCommand="SELECT [intID],[strTitre],[strDescription],[intStatus_FK],[intType_FK],[intSeriousness_FK] FROM [tbl_Bug]"  
            UpdateCommand="UPDATE [tbl_Bug] SET [strTitre] = @strTitre ,[strDescription] = @strDescription ,[intStatus_FK] = @intStatus_FK ,[intType_FK] = @intType_FK ,[intSeriousness_FK] = @intSeriousness_FK WHERE [intID] = @intID">   
            <DeleteParameters>   
                <asp:Parameter Name="intID" Type="Int32" />   
            </DeleteParameters>   
            <UpdateParameters>
                <asp:Parameter Name="intID" Type="Int32" />
                <asp:Parameter Name="strTitre" Type="String" />   
                <asp:Parameter Name="strDescription" Type="String" />
                <asp:Parameter Name="intStatus_FK" Type="Int32" />   
                <asp:Parameter Name="intType_FK" Type="Int32" />
                <asp:Parameter Name="intSeriousness_FK" Type="Int32" />   
            </UpdateParameters>     
        </asp:SqlDataSource>
    

    感谢您的帮助!

    编辑-编辑-编辑

    嗯,我想使用SQL事件探查器,但它似乎不在我的版本(SQL Server 2008 Express)中,所以我尝试了另一个开放源代码的SQL事件探查器,但我不知道它是如何工作的,而且总是崩溃…

    是否有其他方法来了解所使用的查询,以便跟踪我的问题?

    4 回复  |  直到 9 年前
        1
  •  4
  •   hud    9 年前

    大家好,谢谢你们的帮助

    我的查询很好,它是 GridView 那太糟糕了,就一个非常简单的细节来说

    这将起作用: Text='<%# Bind("myValue") %>'

    虽然这不会: Text='<%# Bind("[myValue]") %>'

    所以小心!:)现在一切都正常了!

    再次感谢!

        2
  •  1
  •   Timothy Walters    15 年前

    在这种情况下,答案通常是运行SQL事件探查器,查看发送的是什么SQL,变量名通常不匹配,或者在看到发送到SQL服务器的内容后,执行同样简单的操作。

        3
  •  0
  •   Pavel Minaev    15 年前

    可以为注册事件处理程序 SqlDataSource.Updating 事件-它将在命令准备好并在执行之前引发。命令将是 DbCommand 对象,可以从 SqlDataSourceCommandEventArgs 您的事件处理程序将通过 Command 财产。同时转储文本以及所有命令参数的实际名称和值(在 DbCommand.Parameters 并检查是否有错误。

        4
  •  0
  •   DmitryK    15 年前

    我想你需要 <SelectParameters>...</SelectParameters> 声明所有字段的部分。