Функция ошибки SWL имеет слишком много аргументов - PullRequest
1 голос
/ 05 мая 2011

Я использую ASP.NET 3.5 и SQL Server 2008 .

У меня есть SQLDataSource & Gridview.Я пытаюсь обновить 2 таблицы одновременно, используя хранимую процедуру в SQL .SQLDatasource передает 7 параметров.5 параметров, которые нужны хранимой процедуре, Возвращаемое значение и StudentID.

Не уверен, что ошибка в моей SQLDatasorce или моей хранимой процедуре .

Вот мой ASPX Код:

 <asp:SqlDataSource ID="sqldsUserLoginNLevels" runat="server" 
     ConnectionString="<%$ ConnectionStrings:QuizStarConnectionString %>"

 SelectCommand="SELECT UserLogins.StudentID, UserLogins.StudentName, UserLogins.UserID,
      UserLogins.Password, UserLevels.GrammarStart, UserLevels.GrammarCurrent,
      UserLevels.MathStart, UserLevels.MathCurrent 
      FROM UserLogins 
      INNER JOIN UserLevels ON UserLogins.StudentID = UserLevels.StudentID" 

  DeleteCommand="DELETE FROM [UserLogins] WHERE [StudentID] = @original_StudentID"

  InsertCommand="INSERT INTO [UserLogins] ([StudentName], [UserID], [Password]) 
     VALUES (@StudentName, @UserID, @Password)" 

  UpdateCommand="UpdateUserLoginsAndUserLevels" 

UpdateCommandType="StoredProcedure" >

    <DeleteParameters>
        <asp:Parameter Name="original_StudentID" />
    </DeleteParameters>

    <UpdateParameters>
        <asp:Parameter Name="StudentName" Type="String" />
        <asp:Parameter Name="UserID" Type="String" />
        <asp:Parameter Name="Password" Type="String" />
        <asp:Parameter Name="GrammarStart" Type="String" />
        <asp:Parameter Name="MathStart" Type="String" />
        <asp:Parameter Direction="ReturnValue" Name="RETURN_VALUE" Type="Int32" />
    </UpdateParameters>

    <InsertParameters>
        <asp:Parameter Name="StudentName" Type="String" />
        <asp:Parameter Name="UserID" Type="String" />
        <asp:Parameter Name="Password" Type="String" />
    </InsertParameters>

</asp:SqlDataSource>

Моя Хранимая процедура :

ALTER PROCEDURE [dbo].[UpdateUserLoginsAndUserLevels] (  
@StudentName    VARCHAR(50), 
@UserID     NCHAR(10), 
@Password   NCHAR(10), 
@GrammarStart   NCHAR(10), 
@MathStart  NCHAR(10))

AS 
DECLARE @StudentID INT; 


BEGIN Transaction 
    BEGIN TRY         

        SELECT * From UserLogins                   
            Where StudentID = @StudentID 

        UPDATE UserLogins                  
            SET 
                StudentName= @StudentName,
                UserID = @UserID,
                Password = @Password
            Where StudentID = @StudentID  

        UPDATE UserLevels                  
            SET 
                GrammarStart= @GrammarStart,
                MathStart = @MathStart
                FROM UserLevels
                INNER JOIN UserLogins ON UserLogins.StudentID = UserLevels.StudentID 
            WHERE (UserLevels.StudentID =  @StudentID)
    END TRY 

    BEGIN CATCH         
        DECLARE @ErrorMessage NVARCHAR(4000), @ErrorSeverity INT         
        -- Assign variables to error-handling functions that          
        -- capture information for RAISERROR.         
        SELECT @ErrorMessage = ERROR_MESSAGE(), @ErrorSeverity = ERROR_SEVERITY()         
        -- Rollback the failed transaction         
        ROLLBACK;         
        -- Raise an error: with the original error information.         
        RAISERROR(@ErrorMessage, @ErrorSeverity, 1); 
    END CATCH 
COMMIT Transaction; 

Пока не понял, как разместить код.К сожалению.

1 Ответ

0 голосов
/ 05 мая 2011

Убедитесь, что вы не дважды добавляете параметры.Поскольку вы добавляете их на странице aspx, вам не нужно добавлять их в свой код.

Например, если ваш код содержит это:

sqldsUserLoginNLevelsUserID.UpdateParameters.Add(new Parameter("UserID ", TypeCode.Int32)); 

Это может объяснить вашу ошибку.

Если вам нужно установить значение из кода, сделайте это следующим образом:

sqldsUserLoginNLevelsUserID.UpdateParameters["UserID "].DefaultValue = "1";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...