Presentation is loading. Please wait.

Presentation is loading. Please wait.

웹 프로그래밍 HTML, 자바스크립트, ASP를 중심으로

Similar presentations


Presentation on theme: "웹 프로그래밍 HTML, 자바스크립트, ASP를 중심으로"— Presentation transcript:

1 웹 프로그래밍 HTML, 자바스크립트, ASP를 중심으로
12주. ADO 컴포넌트 2 최황규, 하진영 공저

2 What is ADO? Microsoft technology ActiveX Data Objects
Automatically installed with Microsoft IIS Programming interface to access data in a database

3 Accessing a Database from an ASP Page
Create an ADO connection to a database Open the database connection Create an ADO recordset Open the recordset Extract the data you need from the recordset Close the recordset Close the connection

4 데이터베이스에 연결하기 위해 Connection 객체의 Open 메소드 사용
<%        Set Object_Name = Server.CreateObject("ADODB.Connection") %> 데이터베이스에 연결하기 위해 Connection 객체의 Open 메소드 사용 <%        Connection.Open Connection_Name, UserID, Password %>

5 데이터베이스에 연결하기 위해 Connection 객체의 Open 메소드 사용
<%        Connection.Open Connection_Name, UserID, Password %> Connection_Name에는 ODBC DSN을 적어준다. ODBC DSN은 SQL Server Database로의 ODBC 연결을 나타내는 이름이다. (WebDB) ODBC 연결을 만드는 법은 이 자료의 맨 끝에 있음 (10주차 내용 반복)

6 Connection 객체 연결을 끊기 위해서는 Close 메소드의 사용 <% '--- 객체 사용 후 연결 끊기
<%   '--- 객체 사용 후 연결 끊기        Conn.Close        '--- 객체 리소스 해제        Set Conn = Nothing %>

7 Connection 데이터베이스 연결 예제 11-1 ConnectionOpen.asp <html>
<html> <title>Connection 객체 Open 메소드</title><center><h2> <%        '-- 연결객체 만들기        Set Conn  = Server.CreateObject("ADODB.Connection")        '-- DB 연결        Conn.Open "WebDB", "sa", "123"        '-- DB 상태 체크        if Conn.State <> 1 Then                Response.Write "데이터베이스 연결 실패..."        else                Response.Write "데이터베이스 연결 성공..."        end if        '-- 연결 종료        Conn.Close        '-- Conn 객체 해제        Set Conn = Nothing %> </html>

8 준비 작업 SQL Server Mangagement Studio를 실행시키고 로그인
"새 쿼리"를 클릭한 후 편집창에 CreateAndPopulateStudents.sql 파일의 내용을 붙여넣기 "!실행" 클릭 "테이블"을 오른쪽 버튼 클릭하여 "새로고침" 선택  dbo.Students 테이블이 만들어 졌음을 확인 편집창

9 CreateAndPopulateStudens.sql CREATE TABLE Students (
이름 nvarchar(10) NOT NULL, 학과 nvarchar(10), 학번 nvarchar(20) NOT NULL, 학년 nvarchar(50), PRIMARY KEY(학번) ) INSERT INTO students VALUES ('김하나', '컴퓨터정보통신', ' ', '2') INSERT INTO students VALUES ('김둘', '컴퓨터정보통신', ' ', '2') INSERT INTO students VALUES ('김셋', '컴퓨터정보통신', ' ', '3') INSERT INTO students VALUES ('김넷', '컴퓨터과학', ' ', '4') INSERT INTO students VALUES ('이다섯', '컴퓨터정보통신', ' ', '1') INSERT INTO students VALUES ('이여섯', '컴퓨터정보통신', ' ', '2') INSERT INTO students VALUES ('박일곱', '전자통신', ' ', '2') INSERT INTO students VALUES ('박여덟', '전기전자', ' ', '3') INSERT INTO students VALUES ('최아홉', '컴퓨터과학', ' ', '2') INSERT INTO students VALUES ('정열', '컴퓨터정보통신', ' ', '2') SELECT * FROM students

10 준비 작업 "dbo.Students"를 오른쪽 버튼 클릭한 후 "상위 200개행 편집" 선택  테이블 내용 확인

11 실행 html, asp 파일들을 inetpub\wwwroot 디렉토리에 저장하고 웹브라우저로 읽음

12 RecordSet <% Set conn = Server.CreateObject("ADODB.Connection")
RecordSet2.asp <% Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" Set rs = Server.CreateObject("ADODB.RecordSet") 'RecordSet 객체 생성 rs.Open "SELECT * FROM Students", conn '쿼리 실행 결과가 rs에 저장됨 for each x in rs.Fields 'rs.Fields는 쿼리 결과 열들로 이루어진 배열 '각 열에 대해 아래 명령을 실행 Response.Write(x.name) Response.Write(" = ") Response.Write(x.value & "<br />") next %>

13

14 RecordSet When you first open a Recordset Record pointer will point to the first record BOF and EOF properties are False (If there are no records, BOF and EOF property are True)

15 RecordSet3.asp <html><body> <% Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM Students", conn do until rs.EOF for each x in rs.Fields Response.Write(x.name) Response.Write(" = ") Response.Write(x.value & "<br />") next Response.Write("<br />") rs.MoveNext loop %> rs.close conn.close </body></html>

16

17 RecordSet4.asp <html><body> <% Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM Students", conn %> <table border="1" width="100%"> <%do until rs.EOF%> <tr> <%for each x in rs.Fields%> <td><%Response.Write(x.value)%></td> <%next rs.MoveNext%> </tr> <%loop rs.close conn.close </table> </body></html>

18

19 RecordSet5.asp <html><body> <% Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM Students", conn %> <table border="1" width="100%"> <tr> <%for each x in rs.Fields response.write("<th>" & x.name & "</th>") next%> </tr> <%do until rs.EOF%> . . . <%loop rs.close conn.close </table> </body></html>

20

21 RecordSet6.asp <html><body> <%
Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" Set rs = Server.CreateObject("ADODB.RecordSet") sql="SELECT 이름, 학과 FROM Students WHERE 학과 LIKE '컴퓨%'" rs.Open sql, conn %> <table border="1" width="100%"> <tr> <%for each x in rs.Fields response.write("<th>" & x.name & "</th>") next%> </tr> <%do until rs.EOF%> <%for each x in rs.Fields%> <td><%Response.Write(x.value)%></td> <%next rs.MoveNext%> <%loop rs.close conn.close </table> </body></html> RecordSet6.asp

22

23 sql="SELECT 이름, 학과, 학년 FROM Students ORDER BY 학년 DESC"

24

25 RecordSet8.asp <html><body> <%
Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" set rs = Server.CreateObject("ADODB.recordset") rs.Open "Select * from Students", conn p=rs.GetRows(2,0) ' (how many records to copy, record number to start on) response.write(p(0,0)) response.write("<br />") response.write(p(0,1) & "<br /><br />") response.write(p(1,0)) response.write(p(2,0)) rs.close conn.close %> </body></html>

26 add_form.html <html><body>
<form method="post" action="demo_add.asp"> <table> <tr> <td>이름:</td> <td><input name="name"></td> </tr><tr> <td>학과:</td> <td><input name="dept"></td> <td>학번:</td> <td><input name="id"></td> <td>학년:</td> <td><input name="grade"></td> </tr> </table> <br /><br /> <input type="submit" value="추가"> <input type="reset" value="취소"> </form> </body></html>

27 demo_add.asp <html><body> <%
Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" sql="INSERT INTO students " sql=sql & " VALUES " sql=sql & "('" & Request.Form("name") & "'," sql=sql & "'" & Request.Form("dept") & "'," sql=sql & "'" & Request.Form("id") & "'," sql=sql & "'" & Request.Form("grade") & "')" on error resume next conn.Execute sql, recaffected if err<>0 then Response.Write("No update permissions!") else Response.Write("<h3>" & recaffected & " record added</h3>") end if conn.close %> </body></html>

28

29 update_form.asp 뒷장에 계속 <html><body> <%
Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM Students", conn %> <h2>List Database</h2> <table border="1" width="100%"> <tr> for each x in rs.Fields response.write("<th>" & x.name & "</th>") next </tr> 뒷장에 계속

30 <% do until rs.EOF %>
<tr> <form method="post" action="demo_update.asp"> <% for each x in rs.Fields if x.name="학번" then%> <td> <input type="submit" name="학번" value="<%=x.value%>"> </td> <%else%> <td><%Response.Write(x.value)%></td> <%end if next %> </form> <%rs.MoveNext%> </tr> loop conn.close </table> </body></html>

31 demo_update.asp 뒷장에 계속 <html><body>
<h2>Update Record</h2> <% Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM Students", conn sid=Request.Form("학번") if Request.form("이름")="" then set rs=Server.CreateObject("ADODB.Recordset") rs.open "SELECT * FROM Students WHERE 학번='" & sid & "'",conn %> <form method="post" action="demo_update.asp"> <table> <%for each x in rs.Fields%> <tr> <td><%=x.name%></td> <td><input name="<%=x.name%>" value="<%=x.value%>"></td> </tr> <%next%> </table> <br /><br /> <input type="submit" value="Update record"> </form> 뒷장에 계속

32 demo_update.asp <% else sql="UPDATE Students SET "
sql=sql & "이름='" & Request.Form("이름") & "'," sql=sql & "학과='" & Request.Form("학과") & "'," sql=sql & "학번='" & Request.Form("학번") & "'," sql=sql & "학년='" & Request.Form("학년") & "'" sql=sql & " WHERE 학번='" & sid & "'" on error resume next conn.Execute sql if err<>0 then response.write("No update permissions!") response.write("Record " & cid & " was updated!") end if conn.close %> </body></html>

33 delete_form.asp 뒷장에 계속 <html><body> <%
Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM Students", conn %> <h2>List Database</h2> <table border="1" width="100%"> <tr> for each x in rs.Fields response.write("<th>" & x.name & "</th>") next </tr> 뒷장에 계속

34 delete_form.asp <% do until rs.EOF %> <tr>
<form method="post" action="demo_delete.asp"> <% for each x in rs.Fields if x.name="학번" then%> <td> <input type="submit" name="학번" value="<%=x.value%>"> </td> <%else%> <td><%Response.Write(x.value)%></td> <%end if next %> </form> <%rs.MoveNext%> </tr> loop conn.close </table> </body></html>

35 demo_delete.asp 뒷장에 계속 <html><body>
<h2>Delete Record</h2> <% Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" Set rs = Server.CreateObject("ADODB.RecordSet") sid=Request.Form("학번") if Request.form("이름")="" then set rs=Server.CreateObject("ADODB.Recordset") rs.open "SELECT * FROM Students WHERE 학번='" & sid & "'",conn %> <form method="post" action="demo_delete.asp"> <table> <%for each x in rs.Fields%> <tr> <td><%=x.name%></td> <td><input name="<%=x.name%>" value="<%=x.value%>"></td> <%next%> </tr> </table> <br /><br /> <input type="submit" value="Delete record"> </form> 뒷장에 계속

36 demo_delete.asp <% else sql="DELETE FROM Students"
sql=sql & " WHERE 학번='" & sid & "'" on error resume next conn.Execute sql if err<>0 then response.write("No update permissions!") response.write("Record " & cid & " was deleted!") end if conn.close %> </body></html>

37 sort.asp 뒷장에 계속 <html><body>
<table border="1" width="100%" bgcolor="#fff5ee"> <tr> <th align="left" bgcolor="#b0c4de"> <a href="sort.asp?sort=이름">이름</a> </th> <a href="sort.asp?sort=학과">학과</a> <a href="sort.asp?sort=학번">학번</a> <a href="sort.asp?sort=학년">학년</a> </tr> <% if request.querystring("sort")<>"" then sort=request.querystring("sort") else sort="이름" end if 뒷장에 계속

38 sort.asp Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "WebDB", "sa", "123" Set rs = Server.CreateObject("ADODB.RecordSet") sql="SELECT * FROM Students ORDER BY " & sort rs.Open sql,conn do until rs.EOF response.write("<tr>") for each x in rs.Fields response.write("<td>" & x.value & "</td>") next rs.MoveNext response.write("</tr>") loop rs.close conn.close %> </table> </body></html>

39 filter.asp <html><body> <%
Set conn = Server.CreateObject("ADODB.Connection") conn.Open "WebDB", "sa", "123" set rs=Server.CreateObject("ADODB.recordset") sql="SELECT DISTINCT 학과 FROM Students ORDER BY 학과" rs.Open sql,conn dpt=request.form("dept") %> <form method="post" action="filter.asp"> 학과 선택 <select name="dept"> <% do until rs.EOF response.write("<option") if rs.fields("학과")=dept then response.write(" selected") end if response.write(">") response.write(rs.fields("학과")) rs.MoveNext loop rs.Close set rs=Nothing %> </select> <input type="submit" value="학과 소속 학생 출력"> </form>

40 filter.asp <% if dpt<>"" then
sql="SELECT 이름, 학과, 학년 FROM Students WHERE 학과='" & dpt & "'" set rs=Server.CreateObject("ADODB.Recordset") rs.Open sql,conn %> <table width="100%" cellspacing="0" cellpadding="2" border="1"> <tr> <th>이름</th> <th>학과</th> <th>학년</th> </tr> do until rs.EOF response.write("<tr>") response.write("<td>" & rs.fields("이름") & "</td>") response.write("<td>" & rs.fields("학과") & "</td>") response.write("<td>" & rs.fields("학년") & "</td>") response.write("</tr>") rs.MoveNext loop

41 filter.asp rs.close conn.Close set rs=Nothing set conn=Nothing%>
</table> <% end if %> </body></html>

42 ODBC 설정 (10주 자료 반복)

43 10.9 ODBC 설정 ODBC (Open DataBase Connectivity)
DBMS에 관계없이 윈도우 환경하에 데이터베이스에 연결하여 사용할 수 있도록 개발한 표준 데이터베이스에 연결하기 위해 DSN 설정이 필요 DSN (Data Source Name) 데이터가 있는 곳을 알려주는 이름

44 10.9 ODBC 설정 제어판->관리도구->데이터원본으로 시작

45 10.9 ODBC 설정 ‘시스템 DSN 설정’ 탭 선택

46 10.9 ODBC 설정 ‘SQL Server’ 항목 선택 후 마침

47 10.9 ODBC 설정 데이터 원본에 사용할 이름 ‘WebDB’를 사용 연결할 SQL Server 를 (local)로 지정
(local)\SQLEXPRESS .\SQLEXPRESS IP_address\SQLEXPRESS

48 10.9 ODBC 설정 ‘사용자가 입력한 로그인 ID 및 암호를 사용하는 SQL Server 인증 사용’ 선택
로그인 ID (sa)와 암호 설정

49 10.9 ODBC 설정 ‘기본 데이터베이스를 다음으로 변경’ 체크 후 WebDB 선택

50 10.9 ODBC 설정 SQL Server 시스템 메시지 언어를 Korean으로 선택하고 마침

51 10.9 ODBC 설정 데이터 원본 테스트를 선택하여 테스트가 성공적인지를 확인

52 10.9 ODBC 설정 ODBC 데이터 원본 관리자에서 추가된 WebDB 의 DSN이 추가된 것을 확인


Download ppt "웹 프로그래밍 HTML, 자바스크립트, ASP를 중심으로"

Similar presentations


Ads by Google