370 likes | 601 Views
인터넷 IV – 5 주차. 2005, 계원조형예술대학 멀티미디어 디자인과. 순서. AOD 2.1 Connection 객체 2.2 Command 객체 2.3 RecordSet 객체 미니프로젝트. ADO( Activex Database Object). ADO 란 ?. Activex Database Object 의 약어 윈도우 환경에서 프로그램을 개발할 때 데이터베이스를 제어하기 위해 사용 되는 데이터베이스 객체이다 . ADO 의 계층도. Connection 객체. Command 객체.
E N D
인터넷 IV – 5주차 2005, 계원조형예술대학 멀티미디어 디자인과
순서 • AOD 2.1 Connection 객체 2.2 Command 객체 2.3 RecordSet 객체 • 미니프로젝트
ADO란? • Activex Database Object의 약어 • 윈도우 환경에서 프로그램을 개발할 때 데이터베이스를 제어하기 위해 사용되는 데이터베이스 객체이다. • ADO의 계층도 Connection 객체 Command 객체 RecordSet 객체
Connection 객체 • 응용프로그램에서 데이터베이스를 연결하기 위해 사용된다. • 연결할 서버와 데이터베이스를 설정한다. • 작업단계 • 데이터베이스를 생성(테이블작성) • ODBC등록 (DSN, 로그인이름, 암호) • 형식 Set 객체명=Server.CreateObject(“ADODB.Connection”) 객체명.Open(“DSN명”)
Connection 객체(계속) • Connectioin 객체의 메소드 • Open : 데이터 원본에 대한 연결을 오픈한다. • Close : 열려있는 객체 및 이와 관련된 모든 종속 객체를 닫는다. • Execute : CommandText 속성에 지정된 SQL문 또는 저장 프로시저를 실행한다. • 예제 Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ("access_1") SQLString = "INSERT INTO abc(name) VALUES ('" & name & "')" Conn.Execute SQLString Conn.Close
RecordSet 객체 • Connection 객체에서 데이터원본과 연결하고 SQL문을 실행한 후 RecordSet객체를 생성한다. • RecordSet객체는 데이터베이스를 연결하고 명령을 수행한 결과값(레코드의 집합)을 받아올 때 만들어 진다. • 데이터베이스에 저장된 데이터 중 응용에서 필요한 데이터들만 가져와서 처리하는데, 이때 사용되는 객체가 RecordSet 객체이다.
RecordSet 객체(계속) • 형식 SetCon객체이름= Server.CreateObject("ADODB.Connection") Set레코드객체이름= Server.CreateObject("ADODB.RecordSet") Con객체이름.Open (“DSN명”) Sql명 = "Select 필드명 From 테이블명" 레코드객체이름.Open Sql명, Con객체이름
RecordSet 객체(계속) • 메서드 • Move : 현재 레코드가 위치한 곳에서부터 한쪽방향으로 레코드 이동(+,-로 설정) • MoveFirst : 현재 레코드 포인터를 맨 처음 레코드로 이동 • MoveLast :현재 레코드 포인터를 맨 마지막을 이동 • MoveNext :현재의 레코드 포인터를 한 레코드 다음으로 이동 • MovePrevious : 현재 레코드 포인터를 한 레코드 앞으로 이동
RecordSet 객체(계속) • 속성 • BOF(Begin Of File)/EOF(End Of File) : 레코드의 처음/마지막을 알리는 속성 • AbsolutePage : 현재레코드가 포함될 페이지를 지정한다. • PageCount : Recordset객체에 들어있는 데이터의 페이지 수를 나타낸다 • PageSize : Recoreset객체에서 하나를 구성하는 레코드의 수를 나타낸다. • RecordCount : Recordset객체의 현재 레코드 수를 나타낸다.
RecordSet 객체(계속) • 예제 Set Conn = Server.CreateObject("ADODB.Connection") Set Rs = Server.CreateObject("ADODB.RecordSet") Conn.Open ("access_1") SQLString = "Select name, addr From abc" Rs.Open SQLString, Conn
1단계: DB 파일 생성하기 • DB 명 : minicyworld • Table 명: member • 기본키 : email
2단계 : ODBC를 등록한다 • DNS 명: cyworld • 제어판 관리도구 데이터원본(ODBC) 시스템DSN [추가]버튼
2단계 : ODBC를 등록한다 • DNS 명: cyworld • 제어판 관리도구 데이터원본(ODBC) 시스템DSN [추가]버튼
3단계 : ASP 프로그래밍 하기 • Minicyworld DB에 있는 member 테이블에 레코드가 삽입되도록 회원가입 페이지 작성 • regist.asp (회원가입 폼) • regist_ok.asp (회원가입 처리) • Member 테이블에 등록된 회원 email과 비밀번호로 로그인하는 페이지 작성 • login.asp (로그인 폼) • login_ok.asp (로그인 처리) • 회원찾기 페이지 작성 • member_search.asp
3단계-0: 회원가입 흐름도 회원가입버튼 클릭 regist.asp regist_ok.asp 회원가입 버튼 클릭 가입메시지확인 버튼 클릭 로그아웃 버튼 클릭 logout.asp login.asp member_search.asp 회원찾기클릭 검색버튼 클릭 로그인 버튼 클릭 login_ok.asp
3단계-1-1: 회원가입 폼 작성하기 • regist.asp <FORM name="registForm" method= "post" action="regist_ok.asp"> email1 email2 userPwd1 userPwd2 userName phone
3단계-1-2: 회원가입 처리 작성하기 • regist_ok.asp • 회원가입 처리를 하는데 필요한 변수 선언하기 Option Explicit 'Connection 객체 변수 Dim objDBConn Dim strSQL Dim strEmail, strUserName, strUserPwd, strPhone
3단계-1-2: 회원가입 처리 작성하기 • regist_ok.asp • Request 객체를 이용하여 전송되어온 값 가져오기 strEmail = Request.Form("email1") & "@" & Request.Form("email2") strUserName = Request.Form("userName") strUserPwd = Request.Form("userPwd1") strPhone = Request.Form("phone")
3단계-1-2: 회원가입 처리 작성하기 • regist_ok.asp • 쿼리(SQL)문 편집하기 strSQL = "INSERT INTO member ( email, password, name, phone )" strSQL = strSQL & " VALUES (" strSQL = strSQL & "'" & strEmail & "'," strSQL = strSQL & "'" & strUserPwd & "'," strSQL = strSQL & "'" & strUserName & "'," strSQL = strSQL & "'" & strPhone & "')" INSERT INTO member (email, password, name, phone ) VALUES (‘mloh@dreamwiz.com’, ‘1111’, ‘오미림’, ‘011-111-1111’)
3단계-1-2: 회원가입 처리 작성하기 • regist_ok.asp • Minicyworld DB의 member 테이블로 쿼리문 전송하기 Set objDBConn = Server.CreateObject("ADODB.Connection") objDBConn.Open ("cyworld") objDBConn.Execute strSQL objDBConn.Close Set objDBConn = nothing %> <script language="javascript"> <!-- alert("등록되었습니다"); location.href="login.asp"; //--> </script>
3단계-2-1: 로그인 폼 작성하기 • login.asp • 이 페이지에서 로그인 폼과 로그인 후 환영 메세지가 나오는 부분을 동시에 처리하고 있다. • Session 정보를 이용 • Session이 유효하지 않을 때는 로그인 화면이 • Session이 유효할 때는 로그인이 된 후의 화면이 보여지도록
3단계-2-1: 로그인 폼 작성하기 • login.asp <FORM name="loginForm" method="post" action="login_ok.asp"> userEmail userPwd
3단계-2-1: 로그인 폼 작성하기 • login.asp • Session 정보 이용하기 <% If Session("id") = "" Then %> 로그인 폼 <% Else %> <%=Session("name")%>님, 환영합니다.
3단계-2-2: 로그인 처리 작성하기 • login_ok.asp • 로그인 처리를 하는데 필요한 변수 선언 <% Option Explicit Dim strUserEmail, strUserPwd Dim strSQL Dim objDBConn, objRs %>
3단계-2-2: 로그인 처리 작성하기 • login_ok.asp • Request 객체를 이용하여 전송되어온 값 가져와 쿼리문 만들기 <% strUserEmail = Request.Form( "userEmail" ) strUserPwd = Request.Form( "userPwd" ) strSQL = "SELECT name FROM member " strSQL = strSQL & "WHERE email='" & strUserEmail & "' " strSQL = strSQL & "AND password='" & strUserPwd & "'“ %> SELECT name FROM member WHERE email=‘mloh@dreamwiz.com’ AND password=‘1111’
3단계-2-2: 로그인 처리 작성하기 • login_ok.asp • Minicyworld DB의 member 테이블로 쿼리문 전송하고 결과값 반환받기 • Session 생성하여 사용자 email과 이름 정보 저장하기 • 로그인 처리가 끝난 후 login.asp로 되돌아가도록 한다.
3단계-2-2: 로그인 처리 작성하기 <% Set objDBConn = Server.CreateObject("ADODB.Connection") Set objRs = Server.CreateObject("ADODB.RecordSet") objDBConn.Open ("cyworld") objRs.Open strSQL, objDBConn If Not objRs.BOF or Not objRs.EOF then Session("id")=strUserEmail Session("name")=objRS("name") Session.TimeOut = 30 End If objDBConn.Close Set objDBConn = Nothing %> <SCRIPT> location.href="login.asp" </SCRIPT>
3단계-3-1: 회원찾기 • member_search.asp • 회원검색 폼과 회원검색 처리를 한 파일에서 담당한다. • Hidden 객체 searchFlag 를 사용한 이유가 무엇인지 생각해보자. <FORM name=“searchForm" method="post" action=“member_search.asp"> userName
3단계-3-2: 회원찾기 폼 • member_search.asp • 회원검색에 필요한 변수 선언 <% Option Explicit Dim objDBConn Dim objRs Dim strSQL Dim strUserName, strSearchFlag %> SELECT name FROM member WHERE email=‘mloh@dreamwiz.com’ AND password=‘1111’
3단계-3-2: 회원찾기 폼 <HTML> <HEAD> < TITLE>어서오세요.</TITLE> </HEAD> <BODY> <FORM name="searchForm" method="post" action="member_search.asp"> <TABLE cellspacing="0" style="font-size:10pt"> <TR> <TD bgcolor="#DCDCDC" align="center" width=500> 이 름 <INPUT type="text" name="userName" size=20 maxlength=10> <INPUT type="hidden" name="searchFlag"> <INPUT type="button" value=" 검색 " onClick="document.searchForm.searchFlag.value='true';document.searchForm.submit();"> </TD> </TR> <TR> <TD height=50> </TD> </TR> </TABLE> </BODY> </HTML>
3단계-3-2: 회원찾기 처리 • member_search.asp • Request 객체를 이용하여 전송되어온 값 가져와 쿼리문 만들기 <% strUserName = Request.Form( "userName" ) strSearchFlag = Request.Form( "searchFlag" ) strSQL = "SELECT email, name, phone FROM member " strSQL = strSQL & "WHERE name='" & strUserName & "' " %> SELECT email, name, phone FROM member WHERE email=‘오미림’
3단계-3-2: 회원찾기 처리 • member_search.asp • Minicyworld DB로 쿼리문 전송 및 결과 받기 <% 'Connection 객체 생성 Set objDBConn = Server.CreateObject("ADODB.Connection") 'RescordSet 객체 생성 Set objRs = Server.CreateObject("ADODB.RecordSet") 'DB 열기 objDBConn.Open ("cyworld") 'SQL문 전송 및 결과 반환받기 objRs.Open strSQL, objDBConn %>
3단계-3-2: 회원찾기 처리 • member_search.asp • 반환 결과(RecordSet)으로 검색 결과 화면 작성하기 • 검색된 레코드가 있으면 화면에 나열하고 • 검색된 레코드가 없으면 메시지를 출력한다.
<% If (objRs.BOF or objRs.EOF) AND strSearchFlag = "true" then %> <TR> <TD align=center>조건을 만족하는 결과가 없습니다.<BR>다시 검색해주세요. </TD> </TR> <% Else Do Until objRs.EOF %> <TR> <TD align="center"> <TABLE width=80%><TR> <TD> <%=objRs("name")%></TD> <TD> <%=objRs("phone")%></TD> <TD> <%=objRs("email")%></TD> </TR></TABLE> </TD> </TR> <% objRs.MoveNext Loop End If objRs.Close Set objRs = Nothing objDBConn.Close Set objDBConn = Nothing %>
과제 • Member 테이블에 성별과 생년, 월, 일 모두 4개의 필드를 추가한다. • 회원가입 시에도 성별과 생년, 월, 일을 입력 받을 수 있도록 regist.asp와 regist_ok.asp 파일을 수정한다. • 회원검색에서 이름, 성별, 생년을 모두 선택해야만 검색이 되도록 member_search.asp 파일을 수정한다.