0

このエラーが発生しました: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>
4

1 に答える 1

0

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

  1. 詳細
  2. aspnet_Membership
  3. aspnet_Users

UserId関数を実行するには、SqlDataSourceに 渡す必要があります。SQLDataSourceを使用してINSERT、UPDATE、およびDELETEを実行する方法について説明します。

于 2012-07-09T07:51:33.797 に答える