1 --[0] 기본형 게시판(Basic)용 테이블 설계
  2
--[0] 기본형 게시판(Basic)용 테이블 설계
  2 --[!] Drop Table dbo.Basic
  3
--[!] Drop Table dbo.Basic
  3 Create Table dbo.Basic
  4
Create Table dbo.Basic
  4 (
  5
(
  5 Num Int Identity(1, 1) Not Null Primary Key,         --번호
  6
    Num Int Identity(1, 1) Not Null Primary Key,         --번호
  6 Name VarChar(25) Not Null,                --이름
  7
    Name VarChar(25) Not Null,                --이름
  7 Email VarChar(100) Null,                 --이메일    
  8
    Email VarChar(100) Null,                 --이메일    
  8 Title VarChar(150) Not Null,                --제목
  9
    Title VarChar(150) Not Null,                --제목
  9 PostDate DateTime Default GetDate() Not Null,        --작성일    
 10
    PostDate DateTime Default GetDate() Not Null,        --작성일    
 10 PostIP VarChar(15) Not Null,                --작성IP
 11
    PostIP VarChar(15) Not Null,                --작성IP
 11 Content Text Not Null,                    --내용
 12
    Content Text Not Null,                    --내용
 12 Password VarChar(20) Not Null,                --비밀번호
 13
    Password VarChar(20) Not Null,                --비밀번호
 13 ReadCount Int Default 0,                --조회수
 14
    ReadCount Int Default 0,                --조회수
 14 Encoding VarChar(10) Not Null,                --인코딩(HTML/Text/Mixed)
 15
    Encoding VarChar(10) Not Null,                --인코딩(HTML/Text/Mixed)
 15 Homepage VarChar(100) Null,                --홈페이지
 16
    Homepage VarChar(100) Null,                --홈페이지
 16 ModifyDate SmallDateTime Null,                --수정일    
 17
    ModifyDate SmallDateTime Null,                --수정일    
 17 ModifyIP VarChar(15) Null                --수정IP
 18
    ModifyIP VarChar(15) Null                --수정IP
 18 )
 19
)
 19 Go
 20
Go
 20 21
 21 --[1] 입력 : Write.aspx
 22
--[1] 입력 : Write.aspx
 22 Insert Basic
 23
Insert Basic
 23 Values
 24
Values
 24 (
 25
(
 25 '홍길동',
 26
    '홍길동',
 26 'h@h.com',
 27
    'h@h.com',
 27 '홍길동입니다.(냉무)',
 28
    '홍길동입니다.(냉무)',
 28 GetDate(),
 29
    GetDate(),
 29 '127.0.0.1',
 30
    '127.0.0.1',
 30 '안녕하세요.',
 31
    '안녕하세요.',
 31 '1234',
 32
    '1234',
 32 0,
 33
    0,
 33 'Text',
 34
    'Text',
 34 'http://www.a.com/',
 35
    'http://www.a.com/',
 35 NULL,    --널
 36
    NULL,    --널
 36 ''    --빈(Empty)
 37
    ''    --빈(Empty)
 37 )
 38
)
 38 Go
 39
Go
 39 40
 40 --[2] 출력 : List.aspx
 41
--[2] 출력 : List.aspx
 41 Select 
 42
Select 
 42 Num, Name, Email, 
 43
    Num, Name, Email, 
 43 Title, PostDate, ReadCount
 44
    Title, PostDate, ReadCount
 44 From Basic --Join On
 45
From Basic --Join On
 45 --Where 
 46
--Where 
 46 --Group By
 47
--Group By
 47 --Having
 48
--Having
 48 Order By Num Desc
 49
Order By Num Desc
 49 Go
 50
Go
 50 51
 51 --[3] 상세 : View.aspx
 52
--[3] 상세 : View.aspx
 52 Select *
 53
Select *
 53 From Basic
 54
From Basic
 54 Where Num = 5
 55
Where Num = 5
 55 Go
 56
Go
 56 57
 57 --[4] 수정 : Modify.aspx
 58
--[4] 수정 : Modify.aspx
 58 Begin Tran
 59
Begin Tran
 59 Update Basic
 60
    Update Basic
 60 Set
 61
    Set
 61 Name = '백두산',
 62
        Name = '백두산',
 62 Email = 'b@b.com',
 63
        Email = 'b@b.com',
 63 Homepage = 'http://b.com/',
 64
        Homepage = 'http://b.com/',
 64 Title = '새로운 제목',
 65
        Title = '새로운 제목',
 65 Content    = '내용',
 66
        Content    = '내용',
 66 Encoding = 'HTML',
 67
        Encoding = 'HTML',
 67 ModifyDate = GetDate(),
 68
        ModifyDate = GetDate(),
 68 ModifyIP = '127.0.0.1'
 69
        ModifyIP = '127.0.0.1'
 69 Where Num = 5
 70
    Where Num = 5
 70 --RollBack Tran
 71
--RollBack Tran
 71 Commit Tran
 72
Commit Tran
 72 Go
 73
Go
 73 74
 74 --[5] 삭제 : Delete.aspx
 75
--[5] 삭제 : Delete.aspx
 75 Begin Transaction
 76
Begin Transaction
 76 Delete Basic
 77
    Delete Basic
 77 Where Num = 5
 78
    Where Num = 5
 78 --RollBack Transaction
 79
--RollBack Transaction
 79 Commit Transaction
 80
Commit Transaction
 80 Go
 81
Go
 81 82
 82 --[6] 검색 : Search.aspx
 83
--[6] 검색 : Search.aspx
 83 Select *
 84
Select *
 84 From Basic
 85
From Basic
 85 Where
 86
Where
 86 Name Like '%홍길동%'
 87
    Name Like '%홍길동%'
 87 Or 
 88
    Or 
 88 Title Like '홍%'
 89
    Title Like '홍%'
 89 Or
 90
    Or
 90 Content Like '%3'
 91
    Content Like '%3'
 91 Go
 92
Go
 92 93
 93 --[7] 기본형 게시판(Basic)에 글을 작성하는 저장 프로시저 : WriteBasic
 94
--[7] 기본형 게시판(Basic)에 글을 작성하는 저장 프로시저 : WriteBasic
 94 Create Proc dbo.WriteBasic
 95
Create Proc dbo.WriteBasic
 95 @Name VarChar(25), 
 96
    @Name VarChar(25), 
 96 @Email VarChar(100), 
 97
    @Email VarChar(100), 
 97 @Title VarChar(150), 
 98
    @Title VarChar(150), 
 98 @PostIP VarChar(15), 
 99
    @PostIP VarChar(15), 
 99 @Content Text, 
100
    @Content Text, 
100 @Password VarChar(20), 
101
    @Password VarChar(20), 
101 @Encoding VarChar(10), 
102
    @Encoding VarChar(10), 
102 @Homepage VarChar(100)    
103
    @Homepage VarChar(100)    
103 --With Encryption
104
--With Encryption
104 As
105
As
105 Insert Basic
106
    Insert Basic
106 (
107
    (
107 Name, Email, Title, PostIP, Content, 
108
        Name, Email, Title, PostIP, Content, 
108 Password, Encoding, Homepage
109
        Password, Encoding, Homepage
109 )
110
    )
110 Values
111
    Values
111 (
112
    (
112 @Name, @Email, @Title, @PostIP, @Content, 
113
        @Name, @Email, @Title, @PostIP, @Content, 
113 @Password, @Encoding, @Homepage
114
        @Password, @Encoding, @Homepage
114 )
115
    )
115 Go
116
Go
116 117
117 --[8] 기본형 게시판(Basic)에서 데이터를 읽어오는 저장 프로시저 : ListBasic
118
--[8] 기본형 게시판(Basic)에서 데이터를 읽어오는 저장 프로시저 : ListBasic
118 Create Procedure dbo.ListBasic
119
Create Procedure dbo.ListBasic
119 As
120
As
120 Select * 
121
    Select * 
121 From Basic 
122
    From Basic 
122 Order By Num Desc
123
    Order By Num Desc
123 Go
124
Go
124 125
125 --[9] 조회수 증가시켜주는 저장 프로시저 : UpdateReadCount
126
--[9] 조회수 증가시켜주는 저장 프로시저 : UpdateReadCount
126 Create Proc dbo.UpdateReadCountBasic
127
Create Proc dbo.UpdateReadCountBasic
127 @Num Int
128
    @Num Int
128 As
129
As
129 Update Basic 
130
    Update Basic 
130 Set ReadCount = ReadCount + 1 
131
    Set ReadCount = ReadCount + 1 
131 Where Num = @Num
132
    Where Num = @Num
132 Go
133
Go
133 134
134 --[10] 해당 글을 세부적으로 읽어오는 저장 프로시저 : ViewBasic
135
--[10] 해당 글을 세부적으로 읽어오는 저장 프로시저 : ViewBasic
135 Create Procedure dbo.ViewBasic
136
Create Procedure dbo.ViewBasic
136 @Num Int
137
    @Num Int
137 As
138
As
138 Update Basic 
139
    Update Basic 
139 Set ReadCount = ReadCount + 1 
140
    Set ReadCount = ReadCount + 1 
140 Where Num = @Num
141
    Where Num = @Num
141 142
142 Select *
143
    Select *
143 From Basic 
144
    From Basic 
144 Where Num = @Num
145
    Where Num = @Num
145 Go
146
Go
146 147
147 --[11] 해당 글에 대한 비밀번호 읽어오는 저장 프로시저 : ReadPassword
148
--[11] 해당 글에 대한 비밀번호 읽어오는 저장 프로시저 : ReadPassword
148 Create Proc dbo.ReadPasswordBasic
149
Create Proc dbo.ReadPasswordBasic
149 @Num Int
150
    @Num Int
150 As 
151
As 
151 Select Password 
152
    Select Password 
152 From Basic 
153
    From Basic 
153 Where Num = @Num
154
    Where Num = @Num
154 Go
155
Go
155 156
156 --[12] 해당 글 지우는 저장 프로시저 : DeleteBasic
157
--[12] 해당 글 지우는 저장 프로시저 : DeleteBasic
157 Create Proc dbo.DeleteBasic
158
Create Proc dbo.DeleteBasic
158 @Password VarChar(20),
159
    @Password VarChar(20),
159 @Num Int
160
    @Num Int
160 As
161
As
161 Declare @cnt Int
162
    Declare @cnt Int
162 -- 암호와 번호가 맞으면 1을 반환
163
    -- 암호와 번호가 맞으면 1을 반환
163 Select @cnt = Count(*) From Basic 
164
    Select @cnt = Count(*) From Basic 
164 Where Num = @Num And Password = @Password
165
    Where Num = @Num And Password = @Password
165 166
166 If @cnt > 0 
167
    If @cnt > 0 
167 Delete Basic Where Num = @Num And Password = @Password
168
        Delete Basic Where Num = @Num And Password = @Password
168 Else    
169
    Else    
169 Return -1
170
        Return -1
170 Go
171
Go
171 172
172 --[13] 해당 글을 수정하는 저장 프로시저 : ModifyBasic
173
--[13] 해당 글을 수정하는 저장 프로시저 : ModifyBasic
173 Create Proc dbo.ModifyBasic
174
Create Proc dbo.ModifyBasic
174 @Name VarChar(25), @Email VarChar(100), 
175
    @Name VarChar(25), @Email VarChar(100), 
175 @Title VarChar(150), @ModifyIP VarChar(15), 
176
    @Title VarChar(150), @ModifyIP VarChar(15), 
176 @Content Text, 
177
    @Content Text, 
177 @Encoding VarChar(10), @Homepage VarChar(100),
178
    @Encoding VarChar(10), @Homepage VarChar(100),
178 @Password VarChar(20), @Num Int
179
    @Password VarChar(20), @Num Int
179 As
180
As
180 Declare @cnt Int
181
    Declare @cnt Int
181 Select @cnt = Count(*) From Basic
182
    Select @cnt = Count(*) From Basic
182 Where Num = @Num And Password = @Password
183
    Where Num = @Num And Password = @Password
183 184
184 If @cnt > 0  -- 넘겨져 온 번호와 암호가 맞는 데이터가 있다면...
185
    If @cnt > 0  -- 넘겨져 온 번호와 암호가 맞는 데이터가 있다면...
185 Update Basic 
186
        Update Basic 
186 Set 
187
        Set 
187 Name = @Name, Email = @Email,
188
            Name = @Name, Email = @Email,
188 Title = @Title, ModifyIP = @ModifyIP,
189
            Title = @Title, ModifyIP = @ModifyIP,
189 ModifyDate = GetDate(), Content = @Content,
190
            ModifyDate = GetDate(), Content = @Content,
190 Encoding = @Encoding, Homepage = @Homepage
191
            Encoding = @Encoding, Homepage = @Homepage
191 Where Num = @Num And Password = @Password
192
        Where Num = @Num And Password = @Password
192 Else
193
    Else
193 Return -1 -- 암호가 틀리면 -1을 반환하자...
194
        Return -1 -- 암호가 틀리면 -1을 반환하자...
194 Go
195
Go
195 196
196 --[14] 검색 저장 프로시저 : 동적 SQL문
197
--[14] 검색 저장 프로시저 : 동적 SQL문
197 Create Proc dbo.SearchBasic
198
Create Proc dbo.SearchBasic
198 @SearchField VarChar(25),
199
    @SearchField VarChar(25),
199 @SearchQuery VarChar(25)
200
    @SearchQuery VarChar(25)
200 As
201
As
201 Declare @strSql VarChar(150) -- 변수 선언
202
    Declare @strSql VarChar(150) -- 변수 선언
202 Set @strSql = '
203
    Set @strSql = '
203 Select * From Basic 
204
    Select * From Basic 
204 Where ' 
205
    Where ' 
205 + @SearchField + ' Like ''%' 
206
        + @SearchField + ' Like ''%' 
206 + @SearchQuery + '%'' Order By Num Desc'
207
        + @SearchQuery + '%'' Order By Num Desc'
207 --Print @strSql
208
    --Print @strSql
208 Exec (@strSql)
209
    Exec (@strSql)
209 Go
210
Go
210 211
211 SearchBasic ' 1 = 1; Drop Table Basic --', '메롱~'
212
SearchBasic ' 1 = 1; Drop Table Basic --', '메롱~'
212 Go
213
Go
213 214
214 SearchBasic 'Name', '홍길동'
215
SearchBasic 'Name', '홍길동'
215 Go
216
Go
216 217
217 218
218 --[12] 검색 저장 프로시저 : 정적 쿼리문
219
--[12] 검색 저장 프로시저 : 정적 쿼리문
219 Alter Proc dbo.SearchBasic
220
Alter Proc dbo.SearchBasic
220 @SearchField VarChar(25),
221
     @SearchField VarChar(25),
221 @SearchQuery VarChar(25)
222
     @SearchQuery VarChar(25)
222 As
223
As
223 Set @SearchQuery = '%' + @SearchQuery + '%'
224
    Set @SearchQuery = '%' + @SearchQuery + '%'
224 SELECT *
225
    SELECT *
225 FROM Basic
226
    FROM Basic
226 WHERE
227
    WHERE
227 (
228
     (
228 CASE @SearchField 
229
         CASE @SearchField 
229 WHEN 'Name' THEN Name
230
             WHEN 'Name' THEN Name
230 WHEN 'Title' THEN Title
231
             WHEN 'Title' THEN Title
231 WHEN 'Content' THEN Content
232
             WHEN 'Content' THEN Content
232 ELSE 
233
         ELSE 
233 234
234 @SearchQuery
235
             @SearchQuery
235 END
236
         END
236 ) 
237
     ) 
237 LIKE 
238
     LIKE 
238 @SearchQuery
239
     @SearchQuery
239 Order By Num Desc
240
    Order By Num Desc
240 Go
241
Go
241 242
242 --테스트URL : http://sample.redplus.net/WebBasic/Basic/List.aspx
243
--테스트URL : http://sample.redplus.net/WebBasic/Basic/List.aspx
243 --작성자 : 박용준(RedPlus)
--작성자 : 박용준(RedPlus)