1. 프로젝트 소개 및 회원 테이블 [안드로이드 앱+ASP.NET+WCF+MSSQL]

1. 프로젝트 소개

안녕하세요. 언제나 휴일입니다.

이번에는 웹/앱 관련 프로젝트입니다. (무료 동영상 강의)

제공할 서비스는 회원 가입, 회원 탈퇴, 로그인, 로그 아웃입니다.

사용할 기술은 안드로이드 앱, ASP.NET 웹 사이트, WCF 서비스(웹 사이트), MSSQL입니다.

구성 요소의 구조
구성 요소의 구조

2. 회원 테이블

회원 테이블 이름은 EHMember로 정할게요.

회원 테이블은 ID, PW, NAME, Status를 멤버로 갖습니다.

ID는 주요 키로 설정합니다.

ID, PW, NAME은 nvarchar(50)으로 잡을게요.

Status는 로그인 상태 여부(0: 로그아웃, 1: 로그인)를 나타낼 항목입니다.

EHMember 테이블

회원 가입은 insert 쿼리문을 사용할 예정입니다.

로그인, 로그아웃, 탈퇴는 저장 프로시저를 사용할 예정입니다.

2.1 로그인 저장 프로시저

저장 프로시저 이름은 LoginReq라고 정할게요.

회원 ID, PW를 입력 매개변수로 받습니다.

회원 이름과 로그인 요청 결과는 out 유형의 매개변수로 받습니다.

CREATE PROCEDURE [dbo].[LoginReq]
	@ID nvarchar(50),
	@PW nvarchar(50),
	@MName nvarchar(50) out,
	@result int out
AS

저장 프로시저 내부에 ID에 해당하는 회원 PW와 이름, 상태를 조회할 변수를 선언합니다.

그리고 로그인 요청 결과를 실패(0)로 초기 설정할게요.

BEGIN
	declare @PW2 nvarchar(50)
	declare @MName2 nvarchar(50)
	declare @Status int
	set @result = 0

먼저 회원 테이블에 존재하는 ID인지 조사해야겠죠.

만약 존재하는 회원이면 회원의 비밀번호, 이름, 상태를 조회합니다.

	if exists(select * from EHMember where id = @ID)
	begin
		select @PW2=PW,@MName2=MName,@Status=Status from EHMember where id=@ID

입력 받은 PW와 조회한 PW가 일치하고 상태가 로그아웃(0) 상태일 때 로그인을 수행합니다.

로그인은 update 쿼리로 상태를 로그인(1) 상태로 설정합니다.

그리고 out 유형의 인자 회원 이름과 로그인 요청 결과를 설정합니다.

		if @PW=@PW2 and @Status=0
		begin
			update EHMember set Status=1 where id=@ID
			set @MName = @MName2
			set @result=1
		end
	end
END

다음은 LoginReq 저장 프로시저 소스 코드입니다.

CREATE PROCEDURE [dbo].[LoginReq]
	@ID nvarchar(50),
	@PW nvarchar(50),
	@MName nvarchar(50) out,
	@result int out
AS
BEGIN
	declare @PW2 nvarchar(50)
	declare @MName2 nvarchar(50)
	declare @Status int
	set @result = 0
	if exists(select * from EHMember where id = @ID)
	begin
		select @PW2=PW,@MName2=MName,@Status=Status from EHMember
		where id=@ID
		if @PW=@PW2 and @Status=0
		begin
			update EHMember set Status=1 where id=@ID
			set @MName = @MName2
			set @result=1
		end
	end
END

2.2 로그아웃 저장 프로시저

로그아웃 저장 프로시저 이름은 LogoutReq로 정할게요.

입력 인자로 ID와 PW를 받기로 합시다.

CREATE PROCEDURE [dbo].[LogoutReq]
	@ID nvarchar(50),
	@PW nvarchar(50)
AS

입력한 ID로 PW와 Status를 조회를 한 결과를 기억할 변수를 선언합니다.

BEGIN
	declare @PW2 nvarchar(50)
	declare @Status int	

ID가 존재하면 PW와 Status를 조회합니다.

	if exists(select *from EHMember where id=@ID)
	begin		
		select @PW2=PW,@Status=Status from EHMember where id=@ID

입력받은 PW와 조회한 PW가 일치하고 상태가 로그인(1) 상태일 때 로그아웃으로 상태를 변경합니다.

		if @PW=@PW2 and @Status=1
		begin
			update EHMember set Status=0 where ID=@ID
		end		
	end	
END

LogoutReq 저장 프로시저 전체 코드는 다음과 같습니다.

CREATE PROCEDURE [dbo].[LogoutReq]
	@ID nvarchar(50),
	@PW nvarchar(50)
AS
BEGIN
	declare @PW2 nvarchar(50)
	declare @Status int	
	if exists(select *from EHMember where id=@ID)
	begin		
		select @PW2=PW,@Status=Status from EHMember where id=@ID
		if @PW=@PW2 and @Status=1
		begin
			update EHMember set Status=0 where ID=@ID
		end		
	end	
END

2.3 탈퇴 저장 프로시저

저장 프로시저 이름은 UnregReq라고 할게요.

탈퇴 요청에는 ID와 PW를 입력 인자로 받기로 할게요.

CREATE PROCEDURE [dbo].[UnregReq]
	@ID nvarchar(50),
	@PW nvarchar(50)
AS

ID가 존재하고 PW가 일치할 때 회원 정보를 테이블에서 삭제합니다.

BEGIN
	declare @PW2 nvarchar(50)
	if exists(select *from EHMember where ID=@ID)
	begin
		select @PW2=PW from EHMember where ID=@ID
		if @PW=@PW2
		begin
			delete from EHMember where ID=@ID
		end
	end
END

다음은 UnregReq 저장 프로시저의 전체 코드입니다.

CREATE PROCEDURE [dbo].[UnregReq]
	@ID nvarchar(50),
	@PW nvarchar(50)
AS
BEGIN
	declare @PW2 nvarchar(50)
	if exists(select *from EHMember where ID=@ID)
	begin
		select @PW2=PW from EHMember where ID=@ID
		if @PW=@PW2
		begin
			delete from EHMember where ID=@ID
		end
	end
END