업데이트에 몇 가지 문제가 있습니다. 맞춤 선택 기능을 만들어야했기 때문에 동적 쿼리를 만들 수 없었습니다. 나는 아래의 코드를 사용하여 내 데이터베이스를 업데이트하기 위해 노력했지만, 난 항상이 오류를 얻을 : 나는 모든 인수, 더 이상, 더 적은은 무슨 일 없습니다 ....를 작성했습니다프로 시저에 지정된 인수가 너무 많습니다.
Procedure or function UpdateUser has too many arguments specified.
를?
ASPX 마크 업 : # 코드 숨김
<asp:SqlDataSource ID="AllUsers" runat="server"
ConnectionString="<%$ ConnectionStrings:LocalSQL %>"
SelectCommand="TodosOsUtilizadores" SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
C :
using (SqlDataSource ds = AllUsers)
{
Guid guid = new Guid();
try
{
guid = Guid.Parse(Session["user_id"].ToString());
}
catch
{
guid = Guid.NewGuid();
}
ds.UpdateCommand = "UpdateUser";
ds.ConflictDetection = ConflictOptions.OverwriteChanges;
ds.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure;
ds.UpdateParameters.Add("userid", guid.ToString());
ds.UpdateParameters.Add("username", "Diogo");
ds.UpdateParameters.Add("email", "[email protected]");
ds.UpdateParameters.Add("isAnonimo", "0");
ds.UpdateParameters.Add("isLocked", "0");
ds.UpdateParameters.Add("roleId", "");
ds.Update();
DetailsView1.DataBind();
}
저장 프로 시저가 :
CREATE PROCEDURE [dbo].UpdateUser
@userid nvarchar(max),
@username nvarchar(200),
@email nvarchar(500),
@isAnonimo bit,
@isLocked bit,
@roleid nvarchar(max)
AS
UPDATE Memberships
SET Email = @email,
IsLockedOut = @isLocked
WHERE
UserId = CAST(@userid as uniqueidentifier);
UPDATE Users
SET UserName = @username,
IsAnonymous = @isAnonimo
WHERE
UserId = CAST(@userid AS uniqueidentifier);
IF (@roleid IS NULL)
BEGIN
UPDATE UsersInRoles
SET RoleId = CAST(roleid AS uniqueidentifier);
END;
는'@'를 포함하여 매개 변수를 지정하십시오? 예 : – Blorgbeard
[낭비 가이드] (http://wasteaguid.info/) - 'Guid guid = Guid.Empty();' – asawyer
검색 방법을 찾으십시오. 'Parameter.Add() 함수 대 Parameter.AddWithValue() 함수'를 사용하여 당신이 그것을 사용하는 방식으로'DataType'을 지정해야합니다. 데이터베이스가 처리 할 수있는 방식으로'AddWithValue'에'Add'를 변경합니다 – MethodMan