Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 必须在delete语句中声明标量变量“@UserId”。_C#_Asp.net_Sql_Runtime Error - Fatal编程技术网

C# 必须在delete语句中声明标量变量“@UserId”。

C# 必须在delete语句中声明标量变量“@UserId”。,c#,asp.net,sql,runtime-error,C#,Asp.net,Sql,Runtime Error,我遇到了这个错误:当我试图删除SqlServer中的一个特定行时,必须声明标量变量@UserId。我已经在DeleteParameters中声明了UserId,但是这个错误仍然出现 异常详细信息:System.Data.SqlClient.SqlException:必须声明标量变量>@UserId 源错误: 在执行当前web请求期间生成了未经处理的异常。有关异常的起源和位置的信息可以使用下面的异常堆栈跟踪来识别 这是我的密码: <asp:SqlDataSource ID="SqlDataS

我遇到了这个错误:当我试图删除SqlServer中的一个特定行时,必须声明标量变量@UserId。我已经在DeleteParameters中声明了UserId,但是这个错误仍然出现

异常详细信息:System.Data.SqlClient.SqlException:必须声明标量变量>@UserId

源错误:

在执行当前web请求期间生成了未经处理的异常。有关异常的起源和位置的信息可以使用下面的异常堆栈跟踪来识别

这是我的密码:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ASPNETDBConnectionString1 %>" 
    SelectCommand="SELECT aspnet_Membership.Email, Details.CustName, Details.CustNum, Details.CustRole, Details.CustStatus, Details.PName, Details.PEmail, Details.PRole, Details.WedDate, aspnet_Users.UserName, Details.UserId FROM Details INNER JOIN aspnet_Membership ON Details.UserId = aspnet_Membership.UserId INNER JOIN aspnet_Users ON aspnet_Membership.UserId = aspnet_Users.UserId WHERE (Details.UserId = @UserId)"
    UpdateCommand="update Details SET CustName = @CustName, CustNum = @CustNum, CustRole = @CustRole, CustStatus = @CustStatus, PName = @PName, PEmail = @PEmail, PRole = @PRole, WedDate = @WedDate WHERE [UserId] = @UserId Update aspnet_Membership Set Email= @email WHERE [UserId] = @UserId"
    DeleteCommand="DELETE FROM Details WHERE [UserId] = @UserId">
    <DeleteParameters>
        <asp:Parameter Name="UserId" type="String" />
        <asp:Parameter Name="CustName" />
        <asp:Parameter Name="CustNum" />
        <asp:Parameter Name="CustRole" />
        <asp:Parameter Name="CustStatus" />
        <asp:Parameter Name="PName" />
        <asp:Parameter Name="PEmail" />
        <asp:Parameter Name="PRole" />
        <asp:Parameter Name="WedDate" />
        <asp:Parameter Name="email" />
    </DeleteParameters>
    <SelectParameters>
        <asp:ControlParameter ControlID="lblHidden" Name="UserId"
        PropertyName="Text" />
    </SelectParameters>
    <UpdateParameters>
        <asp:Parameter Name="CustName" />
        <asp:Parameter Name="CustNum" />
        <asp:Parameter Name="CustRole" />
        <asp:Parameter Name="CustStatus" />
        <asp:Parameter Name="PName" />
        <asp:Parameter Name="PEmail" />
        <asp:Parameter Name="PRole" />
        <asp:Parameter Name="WedDate" />
        <asp:Parameter Name="UserId" />
        <asp:Parameter Name="email" />
    </UpdateParameters>
</asp:SqlDataSource>
<asp:DetailsView ID="DetailsView1" runat="server"
    AutoGenerateRows="False" DataSourceID="SqlDataSource1"
    Height="50px" Width="125px">
    <Fields>
        <asp:BoundField DataField="Email" HeaderText="Email"
            SortExpression="Email" />
        <asp:BoundField DataField="CustName" HeaderText="CustName"
            SortExpression="CustName" />
        <asp:BoundField DataField="CustNum" HeaderText="CustNum"
            SortExpression="CustNum" />
        <asp:BoundField DataField="CustRole" HeaderText="CustRole"
            SortExpression="CustRole" />
        <asp:BoundField DataField="CustStatus" HeaderText="CustStatus"
            SortExpression="CustStatus" />
        <asp:BoundField DataField="PName" HeaderText="PName"
            SortExpression="PName" />
        <asp:BoundField DataField="PEmail" HeaderText="PEmail"
            SortExpression="PEmail" />
        <asp:BoundField DataField="PRole" HeaderText="PRole"
            SortExpression="PRole" />
        <asp:BoundField DataField="WedDate" HeaderText="WedDate"
            SortExpression="WedDate" />
        <asp:BoundField DataField="UserName" HeaderText="UserName"
            SortExpression="UserName" />
        <asp:BoundField DataField="UserId" HeaderText="UserId"
            SortExpression="UserId" />
        <asp:CommandField ShowDeleteButton="True"
            ShowEditButton="True" />
    </Fields>
</asp:DetailsView>
<asp:Label ID="lblHidden" runat="server" Text="Label" Visible="False">
</asp:Label>

我认为您已经按原样粘贴了T-SQL查询。我想向你解释一下你在这里做什么:

SELECT aspnet_Membership.Email, Details.CustName, Details.CustNum, 
    Details.CustRole, Details.CustStatus, Details.PName, Details.PEmail, 
    Details.PRole, Details.WedDate, aspnet_Users.UserName, Details.UserId 
FROM Details 
INNER JOIN aspnet_Membership ON Details.UserId = aspnet_Membership.UserId 
INNER JOIN aspnet_Users ON aspnet_Membership.UserId = aspnet_Users.UserId 
WHERE (Details.UserId = @UserId) 
此查询根据UserId从下表检索数据

细节 aspnet_会员资格 aspnet_用户
您必须将UserId传递给SqlDataSource才能执行其功能:了解如何在select语句中添加UseId。好的,您不能在一个数据源中使用两个update语句。请尝试在asp:DetailsView上设置DataKeyNames=UserId,因为我认为这是找不到要删除的行的原因,但我不确定,这就是我留下评论的原因。也可能是因为用户ID不是您声明的sting。