ASP.NET 기초 강의실

시삽: 레드플러스 님 
게시판 이동:
 제목 : 30.1.1 기본형 게시판용 테이블 및 저장 프로시저 구문 : Basic.sql
글번호: 227
작성자: 레드플러스
작성일: 2008/01/03 오후 4:13:00
조회수: 6680
--[0] 기본형 게시판(Basic)용 테이블 설계
--[!] Drop Table dbo.Basic
Create Table dbo.Basic
(
    Num Int Identity(1, 1) Not Null Primary Key,         --번호
    Name VarChar(25) Not Null,                --이름
    Email VarChar(100) Null,                 --이메일    
    Title VarChar(150) Not Null,                --제목
    PostDate DateTime Default GetDate() Not Null,        --작성일    
    PostIP VarChar(15) Not Null,                --작성IP
    Content Text Not Null,                    --내용
    Password VarChar(20) Not Null,                --비밀번호
    ReadCount Int Default 0,                --조회수
    Encoding VarChar(10) Not Null,                --인코딩(HTML/Text/Mixed)
    Homepage VarChar(100) Null,                --홈페이지
    ModifyDate SmallDateTime Null,                --수정일    
    ModifyIP VarChar(15) Null                --수정IP
)
Go

--[1] 입력 : Write.aspx
Insert Basic
Values
(
    '홍길동',
    'h@h.com',
    '홍길동입니다.(냉무)',
    GetDate(),
    '127.0.0.1',
    '안녕하세요.',
    '1234',
    0,
    'Text',
    'http://www.a.com/',
    NULL,    --널
    ''    --빈(Empty)
)
Go

--[2] 출력 : List.aspx
Select
    Num, Name, Email,
    Title, PostDate, ReadCount
From Basic --Join On
--Where
--Group By
--Having
Order By Num Desc
Go

--[3] 상세 : View.aspx
Select *
From Basic
Where Num = 5
Go

--[4] 수정 : Modify.aspx
Begin Tran
    Update Basic
    Set
        Name = '백두산',
        Email = 'b@b.com',
        Homepage = 'http://b.com/',
        Title = '새로운 제목',
        Content    = '<u>내용</u>',
        Encoding = 'HTML',
        ModifyDate = GetDate(),
        ModifyIP = '127.0.0.1'
    Where Num = 5
--RollBack Tran
Commit Tran
Go

--[5] 삭제 : Delete.aspx
Begin Transaction
    Delete Basic
    Where Num = 5
--RollBack Transaction
Commit Transaction
Go

--[6] 검색 : Search.aspx
Select *
From Basic
Where
    Name Like '%홍길동%'
    Or
    Title Like '홍%'
    Or
    Content Like '%3'
Go

--[7] 기본형 게시판(Basic)에 글을 작성하는 저장 프로시저 : WriteBasic
Create Proc dbo.WriteBasic
    @Name VarChar(25),
    @Email VarChar(100),
    @Title VarChar(150),
    @PostIP VarChar(15),
    @Content Text,
    @Password VarChar(20),
    @Encoding VarChar(10),
    @Homepage VarChar(100)    
--With Encryption
As
    Insert Basic
    (
        Name, Email, Title, PostIP, Content,
        Password, Encoding, Homepage
    )
    Values
    (
        @Name, @Email, @Title, @PostIP, @Content,
        @Password, @Encoding, @Homepage
    )
Go

--[8] 기본형 게시판(Basic)에서 데이터를 읽어오는 저장 프로시저 : ListBasic
Create Procedure dbo.ListBasic
As
    Select *
    From Basic
    Order By Num Desc
Go

--[9] 조회수 증가시켜주는 저장 프로시저 : UpdateReadCount
Create Proc dbo.UpdateReadCountBasic
    @Num Int
As
    Update Basic
    Set ReadCount = ReadCount + 1
    Where Num = @Num
Go

--[10] 해당 글을 세부적으로 읽어오는 저장 프로시저 : ViewBasic
Create Procedure dbo.ViewBasic
    @Num Int
As
    Update Basic
    Set ReadCount = ReadCount + 1
    Where Num = @Num

    Select *
    From Basic
    Where Num = @Num
Go

--[11] 해당 글에 대한 비밀번호 읽어오는 저장 프로시저 : ReadPassword
Create Proc dbo.ReadPasswordBasic
    @Num Int
As
    Select Password
    From Basic
    Where Num = @Num
Go

--[12] 해당 글 지우는 저장 프로시저 : DeleteBasic
Create Proc dbo.DeleteBasic
    @Password VarChar(20),
    @Num Int
As
    Declare @cnt Int
    -- 암호와 번호가 맞으면 1을 반환
    Select @cnt = Count(*) From Basic
    Where Num = @Num And Password = @Password

    If @cnt > 0
        Delete Basic Where Num = @Num And Password = @Password
    Else    
        Return -1
Go

--[13] 해당 글을 수정하는 저장 프로시저 : ModifyBasic
Create Proc dbo.ModifyBasic
    @Name VarChar(25), @Email VarChar(100),
    @Title VarChar(150), @ModifyIP VarChar(15),
    @Content Text,
    @Encoding VarChar(10), @Homepage VarChar(100),
    @Password VarChar(20), @Num Int
As
    Declare @cnt Int
    Select @cnt = Count(*) From Basic
    Where Num = @Num And Password = @Password

    If @cnt > 0  -- 넘겨져 온 번호와 암호가 맞는 데이터가 있다면...
        Update Basic
        Set
            Name = @Name, Email = @Email,
            Title = @Title, ModifyIP = @ModifyIP,
            ModifyDate = GetDate(), Content = @Content,
            Encoding = @Encoding, Homepage = @Homepage
        Where Num = @Num And Password = @Password
    Else
        Return -1 -- 암호가 틀리면 -1을 반환하자...
Go

--[14] 검색 저장 프로시저 : 동적 SQL문
Create Proc dbo.SearchBasic
    @SearchField VarChar(25),
    @SearchQuery VarChar(25)
As
    Declare @strSql VarChar(150) -- 변수 선언
    Set @strSql = '
    Select * From Basic
    Where '
        + @SearchField + ' Like ''%'
        + @SearchQuery + '%'' Order By Num Desc'
    --Print @strSql
    Exec (@strSql)
Go

SearchBasic ' 1 = 1; Drop Table Basic --', '메롱~'
Go

SearchBasic 'Name', '홍길동'
Go


--[12] 검색 저장 프로시저 : 정적 쿼리문
Alter Proc dbo.SearchBasic
     @SearchField VarChar(25),
     @SearchQuery VarChar(25)
As
    Set @SearchQuery = '%' + @SearchQuery + '%'
    SELECT *
    FROM Basic
    WHERE
     (
         CASE @SearchField
             WHEN 'Name' THEN Name
             WHEN 'Email' THEN Email
             WHEN 'Title' THEN Title
         ELSE
             @SearchQuery
         END
     )
     LIKE
     @SearchQuery
    Order By Num Desc
Go

--테스트URL : http://sample.redplus.net/WebBasic/Basic/List.aspx
--작성자 : 박용준(RedPlus)
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트


관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 31. 회원 가입 - 레드플러스 2007-06-22 6927
  30. 기본형 게시판 만들기(3계층으로 분리하지 않음) - 레드플러스 2007-06-18 8140
  30.1. 기본형 게시판용 테이블 및 저장 프로시저 구문 : Basic.sql (1) - 레드플러스 2007-06-18 7884
  Web.config 파일에 데이터베이스 연결 문자열 지정하기 - 레드플러스 2007-06-18 6179
현재글 30.1.1 기본형 게시판용 테이블 및 저장 프로시저 구문 : Basic.sql - 레드플러스 2008-01-03 6680
  30.2. 기본형 게시판 입력 : Write.aspx - 레드플러스 2007-06-18 6598
  30.2.1. 기본형 게시판 입력 : Write.aspx.cs - 레드플러스 2007-06-18 6256
  30.3. 기본형 게시판 입력 : List.aspx - 레드플러스 2007-06-18 7006
  30.3.1. 기본형 게시판 입력 : List.aspx.cs - 레드플러스 2007-06-18 6531
  30.4. 기본형 게시판 : 상세 보기 페이지 : View.aspx - 레드플러스 2007-06-19 5915
  30.4.1 기본형 게시판 : 상세 보기 페이지 : View.aspx.cs - 레드플러스 2007-06-19 5659
  30.5 기본형 게시판 : 수정하기 페이지 : Modify.aspx - 레드플러스 2007-06-19 5813
  30.5.1 기본형 게시판 : 수정하기 페이지 : Modify.aspx.cs - 레드플러스 2007-06-19 5634
  30.6. 기본형 게시판 만들기 : 삭제하기 페이지 : Delete.aspx - 레드플러스 2007-06-20 5444
  30.6.1. 기본형 게시판 만들기 : 삭제하기 페이지 : Delete.aspx.cs - 레드플러스 2007-06-20 4854
  30.7. 기본형 게시판 만들기 : 검색 결과 페이지 : Search.aspx - 레드플러스 2007-06-20 5748
  30.7.1. 기본형 게시판 만들기 : 검색 결과 페이지 : Search.aspx.c... - 레드플러스 2007-06-20 5955
  30.8. 전체 소스 (1) WebBasic.zip(31 KB) 레드플러스 2007-08-03 5976
다음글 29. 컨트롤 기반으로 간단한 입력,출력,상세,수정,삭제,검색 로직 구현 예제 WebBasic2005.zip(6 KB) 레드플러스 2007-06-15 6132
 
손님 사용자 Anonymous (손님)
로그인 Home