【问题标题】:Incorrect syntax near 'nvarchar' in update ASP.NET Gridview更新 ASP.NET Gridview 中“nvarchar”附近的语法不正确
【发布时间】:2010-11-19 04:22:11
【问题描述】:

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

我尝试在 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 Profiler,但它似乎不在我的版本中(SQL Server 2008 Express),所以我尝试了另一个开源的 sql Profiler,但我不明白它是如何工作的,而且它总是崩溃.. .

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

【问题讨论】:

    标签: asp.net sql gridview


    【解决方案1】:

    当您的字段/列名称中有空格时,总是会出现这种情况 - 重命名数据库列并删除空格 - 它会起作用。

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

    【讨论】:

      【解决方案2】:

      大家好,感谢您的帮助

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

      这将起作用:Text='&lt;%# Bind("myValue") %&gt;'

      虽然这不会:Text='&lt;%# Bind("[myValue]") %&gt;'

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

      再次感谢!

      【讨论】:

        【解决方案3】:

        我认为您需要在 &lt;SelectParameters&gt;...&lt;/SelectParameters&gt; 部分声明所有字段。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-01-23
              • 2021-03-22
              • 1970-01-01
              • 1970-01-01
              • 2015-12-12
              • 2013-12-16
              • 1970-01-01
              相关资源
              最近更新 更多