Presentation is loading. Please wait.

Presentation is loading. Please wait.

ASP.NET : Database 접근 2008 컴퓨터공학실험(Ⅰ)

Similar presentations


Presentation on theme: "ASP.NET : Database 접근 2008 컴퓨터공학실험(Ⅰ)"— Presentation transcript:

1 ASP.NET : Database 접근 2008 컴퓨터공학실험(Ⅰ)
3주 실습강의 ASP.NET : Database 접근 2008 컴퓨터공학실험(Ⅰ)

2 Preface 폼의 유효성 검사 : Field Validation ASP.NET에서 Access DB (MDB) 연결 / 조작
RequiredFieldValidator RegularExpressionValidator ValidationSummary ASP.NET에서 Access DB (MDB) 연결 / 조작 AccessDataSource (or SqlDataSource) GridView OleDbConnection, OleDbCommand, OleDbDataReader 이번 주에는 Microsoft Access DB(=MS Jet DB)를 사용하여 게시판을 만들면서, 저번 주에 이어서 Visual Studio 2005 툴의 적응력 향상에 중점을 두게 되겠습니다. 기본적인 Web Forms 이외에, Form에 내용이 올바르게 입력되고 있는지를 검사하는 Validator와, ADO.NET에서 OleDB 를 사용해서 DB에 접근하고, 조작하는 방법에 대해 다루고자 합니다.

3 DB 테이블 create table cee_w3_board (
seq int identity (1, 1) not null primary key clustered, writer varchar (20) not null , pwd varchar (20) not null , varchar (100) null , title varchar (200) not null , writedate smalldatetime not null default (getdate()), readed int not null default (0), mode tinyint not null , content varchar (8000) null ) 여기에 표기된 DB 테이블은 MSSQL이나 기타 RDBMS를 위한 테이블 정의이며, 이번 수업에서는 MS Access에서 미리 준비한 MDB 파일을 가지고 진행 할 것입니다.

4 MS JetDB : 테이블 구조 Access – 디자인 보기

5 Write.aspx – 레이아웃

6 Write.aspx 접근 방법 Store Form Data in Database Form → DB Column Binding
입력/검증 Form → DB Column Binding Store Form Data in Database 먼저 Form의 입력을 검증하는 부분을 완성 하고, 그 다음 Form 과 DB의 컬럼과 바인딩을 합니다. (어떻게 넘겨줄지를 결정.) 올바르게 바인딩이 되면 이 데이터를 어떻게 데이터베이스로 저장할 것인지에 대해 고민하는 방식으로 접근하도록 합니다.

7 Write.aspx – 웹폼 컨트롤 속성 형식 부분이 여기서는 라디오 버튼으로 되어 있는데, 라디오 버튼으로 구현하셔도 되고, 체크박스로 구현하셔도 됩니다.

8 Write.aspx – Validation 컨트롤 속성
이름, 제목, 내용, 비밀번호에는 RequiredFieldValidator를, 메일주소를 위해서 RegularExpressionValidator를 사용합니다.

9 Validator의 종류 / 기능 Regex를 사용한 Validator의 경우를 위해 Regex를 잠시 언급하고자 했는데,
RegularExpressionValidator 컨트롤의 속성 – “동작” – ValidationExpression 을 눌러보면 미리 만들어진 정규표현식이 준비되어 있기 때문에, 그 속에서 을 선택하면 관련된 정규표현식을 즉석에서 바로 사용할 수 있습니다. 다만 VS 2005에서 값이 아예 채워지지 않은 경우에는 식에 상관없이 (Regex)Validator가 검증을 하지 않기 때문에 값이 폼에 채워지지 않는 경우를 위해 부득이하게 RequiredFieldValidator를 병용해야 합니다. 병용하지 않을 경우에는, 을 넣지 않았을 때와 관련된 예외처리(list.aspx 쪽의 작성자 메일 링크 관련)가 필요합니다. 추가적인 Validator의 응용에 대해서는 다음의 페이지를 참조하시는 것도 좋을 것입니다.

10 Write.aspx – 데이터 컨트롤 AccessDataSource 컨트롤을 디자인 화면에서 추가시킨 뒤, 오른쪽 버튼을 누르면 “데이터 소스 구성”이 나타납니다.

11 Write.aspx – 데이터 소스 구성 (1/3)
이 슬라이드에서는 Sql파일을 연결하는 스크린 샷을 찍은 부분입니다. 굳이 AccessDataSource를 사용하지 않아도, SqlDataSource내에 MS Access를 위한 OleDB 커넥터가 준비되어 있기 때문에 어느 것을 사용해도 사실 문제는 없습니다.

12 Write.aspx – 데이터 소스 구성 (2/3)

13 Write.aspx – 데이터 소스 구성 (3/3)
데이터 삽입에 사용되는 INSERT 문의 예입니다. Write.aspx에서 사용되겠네요.

14 Write.aspx – 데이터 컨트롤 속성 데이터 소스 구성을 통하지 않고,
“데이터” – DataFile속성에 파일을 직접 지정해 주고, 각 쿼리 부분에 원하는 쿼리를 작성하여 설정을 완료할 수 있다. “동작” – DataSourceMode속성에는 DataSet과 DataReader가 있는데, GridView와 같은 컨트롤 에서는 DataSet을, ListBox와 같이 정렬, 페이징 등이 필요 없는 컨트롤에서는 DataReader로 설정하여 사용할 수 있다.

15 Write.aspx – 쿼리문 입력 AccessDataSource를 사용하면, Insert/Update/Delete/Select를 위한 쿼리를 작성 할 수 있습니다. 이들 중에서 Insert/Update/Delete는 Web Form과 적절한 조화를 이루어 손쉽게 값을 갱신/추가/삭제 할 수 있고, Select의 경우에는 DetailView나 GridView와 같은 컨트롤과 병용하여 손쉽게 사용할 수 있습니다. SQL(발음은 ANSI 표준에서 “es queue el” 로 발음. 많은 수의 비 영어권 개발자들이 siːkwəl- 이라고 부르기도 합니다.) 작성에 그다지 어려움을 겪지는 않겠지만, 조금 더 손쉽게 작성하는 데 도움이 될 것입니다. 출력의 여부가 SELECT – FROM 사이에 들어가는 컬럼을 결정하고, 정렬형식은 SQL문 마지막 위치에 ORDER BY~ 를 생성해 냅니다. 필터는 WHERE 절을 채워주게 됩니다.

16 Write.aspx – 파라메터 컬렉션 편집 직전 슬라이드에서 언급했듯, INSERT/UPDATE문을 Web Form(Control)과 손쉽게 연결 할 수 있습니다. 어떤 형식으로 전달할 것인지, 어떤 컨트롤을 보낼 것인지 등을 설정할 수 있습니다. 컨트롤 이외에도, 이 수업에서 다루지는 않을 것이지만 Cookie/Session과의 동기화, 그리고 웹 페이지의 Request QueryString 과의 연계도 가능합니다. (예: 주소로 view.aspx?n=1, 즉 C# Codebase 기준에서 접근할 때 Request.Params[“n”] 값과 연결이 가능합니다.)

17 Write.aspx – 코드 입력 및 완료 위의 코드는 직접적으로 파라미터를 넘겨주는 형식으로 구현한 것이고,
private void btnSubmit_Click(object sender, System.EventArgs e) { if(IsValid) dbCommandAddArticle.Parameters["writer"].Value = txtWriter.Text; dbCommandAddArticle.Parameters["pwd"].Value = txtPassword.Text; dbCommandAddArticle.Parameters[" "].Value = txt .Text; dbCommandAddArticle.Parameters["title"].Value = txtTitle.Text; dbCommandAddArticle.Parameters["content"].Value = txtContent.Text; dbCommandAddArticle.Parameters["mode"].Value = rdoMode.SelectedIndex; dbConnection.Open(); dbCommandAddArticle.ExecuteNonQuery(); dbConnection.Close(); Response.Redirect("list.aspx"); } 만약 Parameter 연결을 했을 경우, 다음과 같이 짧은 코드로 완성이 가능하다. protected void Button_Submit_Click(object sender, EventArgs e) if(IsValid) // 글 삽입 모드 AccessDataSource1.DataBind(); AccessDataSource1.Insert(); 위의 코드는 직접적으로 파라미터를 넘겨주는 형식으로 구현한 것이고, 아래의 코드는 Web Form – Parameter Collection과 연결한 경우, 필요한 코드를 구현한 것입니다.

18 List.aspx – 개발 접근 순서 DB에 저장된 게시물 목록을 가져오고, 각 게시물과 연결을 어떻게 해야 할 것인가?
DataSource 선택 / 컨트롤 배치 DB에 저장된 게시물 목록을 가져오고, 각 게시물과 연결을 어떻게 해야 할 것인가? 페이지 GridView – Access(or Sql)DataSource 연결 Paging – GridView 기본 사용? 직접 구현? 각 게시물 연결 게시물을 보기 위해 TemplateItem을 구현 작성자 메일 연결을 구현

19 List.aspx – 컨트롤 설정

20 List.aspx – DataSource : Select 구문

21 List.aspx – GridView 속성 GridView속성 에서는 “기타” 항목의 Column 에서 컬럼을 설정할 수 있고, “데이터” 항목에서 DataSourceID를 선택, 원하는 데이터 소스(AccessDataSource / SqlDataSource)를 선택할 수 있습니다. DataKeyNames에서는 GridView에서 참조할 데이터베이스의 컬럼 명을 추가하면 됩니다. 기본적인 레이아웃 / 스타일에 대한 수정은 다른 Web Form과 동일하며, “스타일” 항목에서 컬럼, 페이지 부분에 대한 개별적인 스타일을 설정할 수 있습니다. ASP.NET 2.0에서 GridView는 페이징에 대한 부분이 추가되었고, 따라서 개발자가 손수 페이징을 구현하는 것 이외의 좀 더 편한 구현이 가능하게 되었습니다. (속성 - “페이징” 항목을 참조하세요.)

22 List.aspx – GridView 필드 설정
속성 – 기타 – Columns 를 선택하면 필드를 수정할 수 있습니다. 수업에는 기본적으로 데이터를 바인딩해주는 BoundField와 개발자가 직접 열을 조작할 수 있는 TemplateField를 사용해서 진행하도록 할 것입니다.

23 List.aspx – 자동 서식 지정 서식의 디자인을 손쉽게 변경할 수 있습니다. 물론 한국적 센스와는 약간 거리가 있는 경우가 많지만요.

24 List.aspx – 데이터 그리드 템플릿 편집
템플릿 필드 내에 <ItemTemplate></ItemTemplate>를 추가하고, 그 안에 코드 비하인드(.cs) 파일의 함수를 호출하는 구문을 추가합니다.

25 List.aspx – 호출되는 메서드 작성 호출되는 코드 비하인드 내의 메서드 구현입니다.

26 View.aspx – 컨트롤 설정 “기본 “ 항목에서 각각의 Label을 추가하고,
다음 글 / 이전 글 보기 위해서 LinkButton을 두 개 추가. 그리고 수정 / 삭제 / 목록보기를 위해서 Button / 또는 LinkButton 을 사용하도록 합니다 View.aspx를 구현하기 위해서, OleDBConnection 을 다루는 방법에 대해 자세하게 다루게 될 것입니다.

27 View.aspx 구현 접근 과정 외부로 부터 게시물 번호를 받아와야 함.
게시물 번호 참조 외부로 부터 게시물 번호를 받아와야 함. View.aspx?n= → Request.Params[“n”] 게시물 출력 받아온 게시물 번호를 사용, 게시물을 DB로부터 가져옴 (SELECT 구문) 조회수 갱신 및 완성 조회수 갱신 (UPDATE 구문) 이전 / 다음 페이지 번호 가져오기

28 View.aspx – DB관련 개체 설정 OleDbConnection 하나 OleDbCommand 1
ConnectionString 설정 OleDbCommand 1 (Name) : dbCommandGetArticle Connection : dbConnection CommandText : SELECT writer, ,title,mode,content,readed,writeDate FROM cee_w3_board WHERE seq = ? Parameters : 하나 추가 ParameterName : seq SqlDbType : integer

29 View.aspx – DB관련 개체 설정 OleDbCommand 2
(Name) : dbCommandUpdateReadCount Connection : dbConnection CommandText : UPDATE cee_w3_board SET readed=readed+1 WHERE seq = ? Parameters : 하나 추가 ParameterName : seq SqlDbType : integer

30 View.aspx – DB관련 개체 설정 OleDbCommand 3 (Name) : dbCommandGetPrevArticle
Connection : dbConnection CommandText : SELECT top 1 seq, title FROM cee_w3_board WHERE seq > ? ORDER BY seq ASC; Parameters : 하나 추가 ParameterName :seq SqlDbType : integer

31 View.aspx – DB관련 개체 설정 OleDbCommand 4 (Name) : dbCommandGetNextArticle
Connection : dbConnection CommandText : SELECT top 1 seq, title FROM cee_w3_board WHERE seq < ? ORDER BY seq DESC Parameters : 하나 추가 ParameterName : seq SqlDbType : integer

32 View.aspx 세부 구현 (Page_Load : 1)
AccessDataSource 내의 ConnectionString에는 OleDB를 사용해서 해당 데이터베이스에 접근 할 수 있는 정보를 포함하고 있습니다. 이른바 Provider= 라는 설정값으로 OleDB 연결에 필요한 중간 프로바이더를 제공하고, DataFile= 이라는 설정값을 통해 실제 DB 파일의 위치를 제공 해 줍니다. 이 스트링 값을 직접 작성할 수도 있지만, 미리 AccessDataSource를 생성해서 설정 해 놓으면 간편하게 접근할 수 있습니다.

33 View.aspx 세부 구현 (Page_Load: 2)
조회수 갱신 부분과, 다음 게시물 번호를 얻어와서 링크를 생성하는 부분의 구현입니다.

34 View.aspx 세부 구현 (Page_Load: 3)

35 Delete.aspx – 컨트롤 설정

36 Delete.aspx – DB관련 개체 설정 OleDbConnection OleDbCommand
ConnectionString 설정 OleDbCommand (Name) : dbCommandDeleteArticle Connection : dbConnection CommandText : delete from cstVSBoard where seq = ? and pwd = ? Parameters : 두 개 추가

37 Delete.aspx – 소스 편집

38 글 수정 – Write.aspx 의 재구성

39 글 수정 – Write.aspx 재구성 접근 방법
새 글 쓰기 / 수정의 구분 게시물 번호를 넘겨 받으면 수정 그렇지 않으면 새 글 작성 페이지 수정의 경우 Page_Load 시점에서 기존의 글 내용을 읽어와야 함. 데이터베이스 삽입 새 글 쓰기 / 수정을 구분해서 INSERT / UPDATE를 사용. 수정부를 직접 구현? / DataBind를 지정? 글 수정 부분의 핵심은, Write.aspx를 재사용하는데 있어 어떻게 새 글 작성과, 수정을 구분할 것인지 결정하는 것입니다. OleDBConnection 을 이용하는 것은 이미 View.aspx 에서 충분히 다루었기 때문에, 그것의 복습 과정이라고 생각하시면 됩니다.

40 글수정 – DB관련 개체 추가(1/2) OleDbCommand 1
(Name) : dbCommandGetArticleForModify Connection : dbConnection CommandText : SELECT writer, , title, content, mode FROM cee_w3_board WHERE seq = ? Parameters : 하나 추가 ParameterName : seq SqlDbType : integer

41 글수정 – DB관련 개체 추가(2/2) OleDbCommand 2 (Name) : dbCommandModifyArticle
Connection : dbConnection CommandText : UPDATE cee_w3_board SET writer = ?, = ?, title = ?, content = ?, mode = ? WHERE seq = ? AND pwd = ? Parameters : 7개 추가

42 글 수정 – Write.aspx 구현 : Page_load (1)

43 글 수정 – Write.aspx 구현 : Page_load (2)

44 글 수정 – Write.aspx 세부 구현 : DataBind 사용
다음과 같이, AccessDataSource에 Update 구문을 작성하고, Web Form을 파라미터로 연결하여 데이터 바인딩을 한 뒤 손쉽게 업데이트를 할 수 있습니다.

45 글 수정 – Write.aspx 세부 구현 : 직접 구현시
한편, 직접 OleDbConnection개체를 생성하여 파라미터를 직접 넘겨주고, Update 구문을 수행할 수 있는 다음과 같은 구현도 가능합니다.


Download ppt "ASP.NET : Database 접근 2008 컴퓨터공학실험(Ⅰ)"

Similar presentations


Ads by Google