방명록 애플리케이션 설계
목표 : http://www.guestbook.com/ -> 한줄짜리 홈페이지 출력되도록...
Windows Server 레벨( -> 실제 배포(서비스)할 때 사용됨)
- 이번에는 "Windows Server 2003"에서 10가지 실행
- 설치
- 서비스 가동
- hostname, ipconfig /all, ping
- 사용자
- net user GuestBook Pa$$w0rd /add
- NTFS
- 입주공간
- 보안
- Everyone, IUSR_인터넷게스트계정, Network Service, 해당사용자권한
- 암호화
- 압축
- 할당량
- 최대1GB
- 공유
- UNC
- IIS
- 홈디렉터리
- 가상 디렉터리(응용프로그램설정)
- FTP
- DNS
- 기타
- 메일 서비스
- SMTP(25)
- POP3(110)
- guestbook@guestbook.com
- 아웃룩 익스프레스에서 보내고, 받고 테스트, 외부로는 잘 안나감…(방화벽때문에)
- 미디어 서비스
- Windows Server 2003 초기버전에는 포함. 2003 이후로는 빠짐…
- Windows 7 K, KN
- 백업
- 부분 백업 : 지정한 시간에 지정된 폴더만…
- 원격
SQL Server 레벨
- 설치 및 환경구성
- 인스턴스 : (local)
- 데이터베이스
- DB명 : GuestBook
- 로그인사용자
- UID : GuestBook
- PWD : Pa$$w0rd
- OLE DB 설정
- GuestBook.udl
- 테이블 설계
- GuestBooks
- 개념적 설계
- 노트
- 논리적 설계
- ER-WIN, VISIO
- 물리적 설계
16. SQL
- 입력, 출력, 상세, 수정, 삭제, 검색
17. T-SQL
- 예시 데이터 100건 입력
18. 개체
- Stored Procedure
- AddGuestBook
- GetGuestBooks
19. DTS
- Zip 테이블
20. 백업 및 복원
- 전체 백업
Visual Studio 레벨
21. 설치
- .NET 3.5
22. 새 웹 사이트
- GuestBook
23. Web.config
- <connectionStrings> 섹션에 4가지 값 기록
- Server, Data Source
- Database, Initial Catalog
- Uid, User ID
- Pwd, Password
24. 입력
- SqlDataSource 컨트롤 : Insert 쿼리
25. 출력
- SqlDataSource 컨트롤 : Select 쿼리
====================================================================================
GuestBook.sql
-- 방명록테이블설계
Create Table GuestBooks
(
ItemID Int Identity(1, 1) Primary Key,
Name VarChar(25) Not Null,
Content VarChar(8000) Not Null,
Password VarChar(20) Not Null,
PostData SmallDateTime Default(GetDate()),
PostIP VarChar(15) Null
)
Go
-- 예시문6개타이핑~~
-- 입력
-- 샘플데이터100개입력
Declare @i Int
Set @i = 1
While @i <= 100
Begin
If @i % 2 = 0
Begin
Insert Into GuestBooks Values('홍길동', '안녕', '1234', GetDate(), '127.0.0.1')
End
Else
Begin
Insert Into GuestBooks Values('지리산', '방가', '1234', GetDate(), '127.0.0.1')
End
Set @i = @i + 1
End
Go
Select Count(*) From GuestBooks
Go
-- 출력
Select * From GuestBooks Order By ItemID Asc
Go
-- 상세
Select * From GuestBooks Where ItemID = 1
Go
-- 수정
Update GuestBooks Set Name = '제시카' Where Name = '홍길동'
Go
-- 삭제
Delete GuestBooks Where ItemID = 1 And (1 <> 1)
Go
-- 검색
Select * From GuestBooks Where Name Like '제%'
Go
-- 6개저장프로시저생성하세요~~~
-- 입력저장프로시저
Create Proc AddGuestBook
@Name VarChar(25),
@Content VarChar(8000),
@Password VarChar(20),
@PostIP VarChar(15)
As
Insert Into GuestBooks Values(@Name, @Content, @Password, GetDate(), @PostIP)
Go
-- 출력저장프로시저
Create Proc GetGuestBooks
As
Select * From GuestBooks Order By ItemID Desc
Go
-- 상세저장프로시저
Create Proc GetGuestByItemID
@ItemID Int
As
Select * From GuestBooks Where ItemID = @ItemID
Go
-- 수정저장프로시저
Create Proc UpdateGuest
@Name VarChar(25),
@ItemID Int
As
Update GuestBooks Set Name = @Name Where ItemID = @ItemID
Go
-- 삭제저장프로시저
Create Proc DeleteGuest
@ItemID Int
As
Delete GuestBooks Where ItemID = @ItemID
Go
-- 검색저장프로시저
Create Proc SearchGuest
@SearchText VarChar(50)
As
Declare @sql VarChar(100)
Set @sql = '
Select * From GuestBooks Where Name Like ''' + @SearchText + '%''
'
Exec(@sql)
Go
SearchGuest '제'
====================================================================================
Visual Studio 레벨
- 설치 : .NET 3.5
- 새 웹 사이트 : GuestBook으로 이름지정하여 생성
- Web.config : SQL Server 레벨의 데이터베이스 연결문자열 설정
a. <connectionStrings> 섹션에 4가지 값 기록
i. Server, Data Source
ii. Database, Initial Catalog
iii. Uid, User ID
iv. Pwd, Password
- 웹 폼 생성
- 입력 페이지 작성
a. SqlDataSource 컨트롤 : Insert 쿼리
- 출력(검색) 페이지 작성
b. SqlDataSource 컨트롤 : Select 쿼리
Visual Studio를 열고 [파일] - [새로 만들기] - [웹사이트]클릭 -> [ASP.NET 웹 사이트]로 선택하고 "저장위치(저장폴더)"는 "C:\...\GuestBook폴더"로 지정한다.("GuestBook폴더가 없으면, [ASP.NET 웹 사이트]로 선택하여 만들 때 GuestBook폴더를 만든다.")
[Default.aspx 디자인]
아래그림과 같이 웹페이지를 디자인한다. 그림에서 [SqlDataSource - SqlDataSource2]는 위에 있는 "이름", "내용", "암호", "IP주소" 각각의 4개 텍스트 박스의 값을 입력받아서(insert) 담는 그릇에 해당되며, [SqlDataSource - SqlDataSource2]의 "속성"중 "InsertQuery"속성을 클릭하면 속성을 바꾸는버튼(...)이 뜨는데 여기서 "InsertQuery "속성을 변경해줘야한다.
[web.config]
아래그림의 코드에서 "name", "connectionString에서 'server', 'database', 'uid', 'pwd'와", 그리고 "providerName"을 아래와 같이 입력하였다.
[Default.aspx.cs]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 처음 로드시에 IP주소 미리 세팅
if (!Page.IsPostBack)
{
this.txtPostIP.Text = Request.UserHostAddress; // IP주소 받아서 초기화
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
// 저장
this.SqlDataSource2.Insert();
// 새로 요청
this.GridView1.DataBind();
}
}
<실행결과>
아래실행결과에서 '이름', '내용', '암호', 'IP주소' 각각의 4개 텍스트 박스에 "한라산"과 "백두산"의 각각의 정보("Name", "Content", "Password", "PostIP"에 해당하는 정보)를 입력하여 "글 남기기"버튼을 누르면 그림과 같이 "한라산"과 "백두산"의 입력(insert)한 정보가 (GridView에)출력된다.