更新ASP.NET Gridview中'nvarchar'附近的语法不正确

时间:2009-08-13 03:08:40

标签: asp.net sql gridview

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

我尝试在ASP.NET Gridview上进行更新,但是当我点击更新时,我收到此错误:

'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探查器,但我从未理解它是如何工作的,它总是崩溃..

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

5 个答案:

答案 0 :(得分:4)

大家好,感谢您的帮助

我的查询很好,GridView中的绑定很糟糕,非常简单的细节

这将有效:Text='<%# Bind("myValue") %>'

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

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

再次感谢!

答案 1 :(得分:1)

在这种情况下,答案通常是运行SQL事件探查器并查看正在发送的SQL,它通常是变量名称不匹配,或者一旦看到发送到SQL Server的内容就同样简单。

答案 2 :(得分:0)

您可以为SqlDataSource.Updating事件注册一个事件处理程序 - 它将在准备好命令时生成,并在执行之前引发。该命令将是DbCommand对象,可以从事件处理程序将通过其SqlDataSourceCommandEventArgs属性获取的Command实例中检索该对象。转储所有命令参数的文本,实际名称和值(在DbCommand.Parameters集合中),并检查错误。

答案 3 :(得分:0)

我认为您需要<SelectParameters>...</SelectParameters>部分来声明所有字段。

答案 4 :(得分:0)

当字段/列名称中有空格时,通常会发生这种情况-重命名数据库列并删除空格-它将起作用。

如果您查看SQL Server监视器并检查生成的SQL代码以进行更新-由于列名中的空格,它会被弄乱。