2009-08-13 88 views
3

非常簡單的問題,但是我通過網絡讀取的所有答案都不適用。更新ASP.NET Gridview中「nvarchar」附近的語法不正確

我試圖做一個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事件探查器是開源的,但我永遠無法理解它如何工作,它總是崩潰...

是否有任何其他方式知道查詢使用,以便我可以跟蹤我的問題?

回答

4

大家好,感謝您的幫助

我的查詢是不錯的,它是在在GridView,這是不好的結合,一個非常非常簡單的細節

這將工作:Text='<%# Bind("myValue") %>'

雖然這不會:Text='<%# Bind("[myValue]") %>'

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

再次感謝!

1

在這種情況下,答案通常是運行SQL Profiler並查看發送了哪些SQL,一旦發現發送給SQL Server的內容通常與變量名稱不匹配,或者同等簡單。

+0

今天晚上我會試一下這個配置文件。 – 2009-08-13 10:46:47

0

您可以爲SqlDataSource.Updating事件註冊一個事件處理程序 - 在命令準備好時以及在執行它之前會引發該事件。該命令將是一個DbCommand對象,該對象可以從SqlDataSourceCommandEventArgs的實例中檢索到,您的事件處理程序將通過其Command屬性獲取該對象。轉儲所有命令參數的文本以及實際名稱和值(在DbCommand.Parameters集合中),並檢查是否有錯誤。

0

我認爲你需要<SelectParameters>...</SelectParameters>部分,你聲明所有的領域。