必须声明标量变量,但它们存在于标记中

本文关键字:存在 于标记 声明 标量 变量 | 更新日期: 2023-09-27 18:18:11

我有一个SqlDataSource,我正在使用GridView。我使用了GridView的删除功能,就像我使用它对其他的更新功能一样,但出于某种原因,这告诉我,我的参数没有被声明。你会在代码中看到我把它们放在那里,我只是从更新参数中复制了它们。我被难住了,为什么sql告诉我,我没有声明变量,而他们显然在那里。

感谢
<asp:SqlDataSource ID="SqlDataSourceVisitors" runat="server" ConnectionString="connstring" DeleteCommand="DELETE FROM [RegisteredVisitors] WHERE [PK] = @PK; UPDATE [dbo].[Users] SET [NumberOfVisitors] = (SELECT [NumberOfVisitors] FROM [dbo].[NumberOfVisitors] WHERE [ResidentName] = @ResidentName) -1 WHERE [ResidentName] = @ResidentName" InsertCommand="INSERT INTO [RegisteredVisitors] ([ResidentName], [ResidentAddress], [VisitorCode], [VisitorName]) VALUES (@ResidentName, @ResidentAddress, @VisitorCode, @VisitorName)" SelectCommand="SELECT * FROM [RegisteredVisitors] WHERE ([ResidentName] = @ResidentName)" UpdateCommand="UPDATE [RegisteredVisitors] SET [ResidentName] = @ResidentName, [ResidentAddress] = @ResidentAddress, [VisitorCode] = @VisitorCode, [VisitorName] = @VisitorName WHERE [PK] = @PK" ProviderName="System.Data.SqlClient">
    <DeleteParameters>
        <asp:Parameter Name="PK" Type="Int32" />
        <asp:Parameter Name="ResidentName" Type="String" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="ResidentName" Type="String" />
        <asp:Parameter Name="ResidentAddress" Type="String" />
        <asp:Parameter Name="VisitorCode" Type="Int32" />
        <asp:Parameter Name="VisitorName" Type="String" />
    </InsertParameters>
    <SelectParameters>
        <asp:ControlParameter ControlID="txtboxSelectedResident" Name="ResidentName" PropertyName="Text" Type="String" />
    </SelectParameters>
    <UpdateParameters>
        <asp:Parameter Name="ResidentName" Type="String" />
        <asp:Parameter Name="ResidentAddress" Type="String" />
        <asp:Parameter Name="VisitorCode" Type="Int32" />
        <asp:Parameter Name="VisitorName" Type="String" />
        <asp:Parameter Name="PK" Type="Int32" />
    </UpdateParameters>
</asp:SqlDataSource>

必须声明标量变量,但它们存在于标记中

检查你的语法,你的Delete命令有错误:

DeleteCommand="DELETE FROM [RegisteredVisitors] WHERE [PK] = @PK 
UPDATE [dbo].[Users] SET [NumberOfVisitors] = (SELECT [NumberOfVisitors] FROM [dbo].[NumberOfVisitors] WHERE [ResidentName] = @ResidentName) -1 WHERE [ResidentName] = @ResidentName" 

如果你试图执行多个查询,你需要用";"