Я использую 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;
Пока не понял, как разместить код.К сожалению.