1 / 33

11 장 . ASP 와 데이터 베이스

11 장 . ASP 와 데이터 베이스. 1. ADO 객체 모델 2. DSN 과 데이터 베이스 연결 3. 레코드셋. 2. OLE DB 와 ADO. ADO 객체 OLE DB 제공자를 통해서 데이터를 다룸 OLE DB 프로그램에서 여러 형태의데이터를 다룰 수 있도록 제공된 컴포넌트 중간 역할을 하는 인터페이스 ADO 객체를 통해 데이터처리 요구 => OLE DB 가 실제데이터 처리하여 요구사항을 넘겨줌. 데이터 제공자. ADO 객체. ODBC 드라이버. OLE DB. DB.

pascal
Download Presentation

11 장 . ASP 와 데이터 베이스

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 11장 . ASP 와 데이터 베이스 1. ADO 객체 모델 2. DSN 과 데이터 베이스 연결 3. 레코드셋

  2. 2. OLE DB와 ADO • ADO 객체 • OLE DB 제공자를 통해서 데이터를 다룸 • OLE DB • 프로그램에서 여러 형태의데이터를 다룰 수 있도록 제공된 컴포넌트 • 중간 역할을 하는 인터페이스 • ADO 객체를 통해 데이터처리 요구 => OLE DB가 실제데이터 처리하여 요구사항을 넘겨줌 • 데이터 • 제공자 • ADO • 객체 • ODBC • 드라이버 • OLE DB DB

  3. . 데이터 제공자 • 실제로 데이터를 처리해주는 드라이버와 엔진을 말함 • ODBC 가 가장 대표적인 예 • ADO 객체는 데이터 제공자가 지원하는 기능을 이용 . ADO 와 데이터 베이스 • 데이터 베이스를 다루는 객체

  4. 3. ADO 객체 모델 • 데이터 베이스를 다루는 기본 과정 • 데이터 베이스 연결 (어느 데이터 베이스에 연결할지를 지정) => DSN 을 통해서 지정하고 연결 2. 명령 실행 : SQL 문을 실행하고나 명령실행 => 레코드 검색, 추가, 삭제, 수정등 3. 실행 결과 : 조건에 맞는 레코드 검색시 레코드 셋으로 가져옴 (실제로 이용하는 값은 각 레코드가 가진 필드값)

  5. . ADO 객체 구성 • ADO 객체 모델 : 데이터 베이스를 사용하는 데 필요한 객체 • Connection 객체 : 데이터 베이스 연결 • Command 객체 : SQL 쿼리 실행 • Recordset 객체 : 검색해서 얻어진 레코드 집합 • Record 객체 • Stream 객체 • Parameter 객체 • Field 객체 • Error 객체 • Page 291 ADO 객체 모델 그림 참조

  6. 4. ADO 객체 • Connection 객체 • Comand 객체 • Recordset 객체 • 각 객체마다 명령을 실행하고 결과를 받아옴

  7. . Connection 객체 • 데이터 소스와 연결 • Connection 객체도 데이터 베이스에 연결만 하는 기능만 있는 것이 아니라 데이터베이스에 연결하여 명령을 실행하고 그 결과를 보여줄 수 있는 메서드도 지원함

  8. . Command 객체 • 데이터 소스에 데이터를 다루는 명령을 보낼때 사용 • Connection 객에서도 SQL 명령을 보내서 실행 가능(명령 처리 단순) • 보통 SQL 실행결과로 레코드를 리턴하지 않는 경우에 많이 사용 (데이터 추가/수정/삭제 )

  9. . Recordset 객체 • Connection 객체와 Command 객체를 이용해서 명령을 실행 한 다음 받아오는 결과는 레코드 셋 형태이고, Recordset 객체를 통해 데이터 다룸 • 레코드 셋이란 여러 레코드를 담고 있는 객체 • 선택된 레코드는 하나이며 레코드 선택을 바꾸어가면서 데이터 값을 가져오거나 변경 가능 • 레코드 검색뿐만아니라 추가/삭제/수정도 가능

  10. 5. ADO 상수 • ADO 객체에서 사용하는 상수 값들은 파일 하나로 정의 되어 있음 • 파일 이름은 adovbs.inc => VBScript 를 이용해서 필요한 상수 정의 • 파일 포함 방법 • <!- - include file=“adovbs.inc”- -> • C:/Program Files / Common Files/System/ado 폴더에 존재 • 자바스크립트를 사용하는 파일이라면 adojavas.inc 파일을 포함 • 상수 파일을 포함하지 않고 타입 라이브러리를 선언해 주면 상수를 별도로 파일로 포함하지 않고서도 바로 사용가능 • <! - - MetaData Type=“typelib” file=“c:/program files/Common Files/System/ado/msado15.dll - -> • 데이터베이스를 사용하는 웹애플리케이션인 경우 DB 사용이 여러 페이지에 걸쳐 일어나므로 모든 페이지에서 사용할 수 있도록 Global.asa 파일에 한번만 선언하여 사용

  11. 6. 데이터 소스 연결 • 어디에 있는 데이터베이스를 사용할 것인가 선택하는 과정 (어떤 종류의 데이터베이스 이며, 어디에 위치하는 지 등등의 정보필요)

  12. . 연결 문자열 • DSN 없이 연결 문자열을 구성해서 DB에 연결 • 1. ODBC 로 연결(ODBC드라이버선택(“SQL Server”),서버이름,데이터베이스 이름, 사용자 ID,암호지정) => Driver={SQL Server};Server=(local);Database=Pubs;UID=sa;PWD=; • 2. OLE DB 제공자 이용(OLE DB제공자 지정(“SQLOLEDB”), 데이터 소스에 서버이름, 데이터베이스이름,사용자 ID, 암호 지정) • Provider=SQLOLEDB;Data Source=(local);Initial Catalog=WebDBs; UserId=sa;Password=; => Provider=SQLOLEDB;Data Source =(local); Database=Pubs;UID=sa;PWD=;

  13. 7. 데이터 베이스 연결– Connection 객체 • Connection객체의 ProgID => ADODB.Connection • Connection객체를 생성한 다음, 사용하고자 하는 데이터 소스를 열어 연결(Connection 객체의 open 메서드 이용 => 연결 문자열은 데이터 소스 이름이나 드라이버 이름으로 구성한 연결 문자열을 주어도 됨) • Set DBConn = Server.CreateObject(“ADODB. Connection”) • DBConn.Open “WebDBs” • DB 처리 • Connection 객체 사용이 끝났으면 연결을 닫고 변수에 Nothing을 할당함으로 사용하고 있던 리소스를 해제 • DBConn .Close • DBConn = Nothing

  14. . Connection 객체 이용 • 데이터 베이스를 이용할때 마다 필요한 객체므로 데이터베이스를 사용하는 빈도수가 높은 경우 처음에 미리 한번 생성해 두었다가 반복해서 사용하는 것이 효율 • => Connection 객체를 생성한 다음 이것을 Session 변수 또는 Application 변수로 보관해 놓고 이용 • Global.asa 파일에서 지정

  15. . Global.asa – Session 변수 사용예 <script language="vbscript" runat="server"> Sub Session_OnStart() ' Connection 객체 생성 및 열기 Set Session( "WebDB" ) = Server.CreateObject("ADODB.Connetion") Session( "WebDB" ).open "WebDBs" End Sub Sub Session_OnEnd() ' Connection 객체 닫기 및 소멸 Set Session( "WebDB" ).Close Set Session( "WebDB" ) = Nothing End Sub </script>

  16. 8. 데이터베이스 다루기-Recordset • ADO 객체 모델에서 가장 많이 사용하는 객체 • 이용방법 • Recordset 객체 생성 • Open 메서드로 레코드셋 가져옴 (인자 : 테이블이름,DSN 지정) Set rs = Server.CreateObject(“ADODB.Recordset”) rs.Open “Member”,”WebDBs” ‘레코드셋 다루기 rs.Close rs = Nothing

  17. . 레코드셋 얻어내는 방법 • Recordset 객체를 생성하여 Open 메서드를 이용해서 가져오는 방법 • Connection 객체를 생성한 다음 SQL 문을 실행하여 그 결과로 레코드셋을 가져오는 방법 set DBConn = Server.CreateObject("ADODB.Connetion") DBConn.Open"DSN=WebDBs;UID=sa;PWD=;" sql = “select * from titles” set rs = DBConn.Execute(sql) DBConn.Close DBConn = Nothing

  18. .커서(Cursor)와 커서타입 • 커서 : 레코드 셋에서 현재 레코드를 가르키는 포인터 • 커서 타입 : 커서를 옮기는 방식(레코드를 이동 => 디폴트값:adOpenForwardOnly) • adOpenStatic – 정적 커서(레코드셋의 복사본 제공, 모든 이동형태가능) • adOpenForwardOnly – 전진전용커서 (정적커서와 비슷, 이동은 앞으로만) • adOpenDynamic – 다이나믹커서(레코드셋 갱신 , 모든 이동형태 가능) • adOpenKeyset – 키셋 커서 (레코드셋 갱신(다른 사용자가 추가한 레코드만 볼수 없음), 모든 이동형태 가능) • 다이나믹하게 변하는 레코드 셋을 다루는 것이 관리하는 데 많은 작업을 요구 • ADO 상수 포함후 사용

  19. . 락(lock)과 락 타입 • 락(lock) : 한 사람이 사용하는 동안 다른 사람이 접근 불가능 (한 사용자가 레코드를 바꾸기 전에 다른 사용자가 바꿀 수 없음) • 사용이 다 끝난다음 락(Lock)을 풀어줌 • 락타입 • adLockReadOnly: 데이터를 바꿀 수 없으며 읽을 수만 있음 • adLockPessimistic: 레코드 단위로 락을 걸며, 레코드 편집을 하는 순간부터 레코드에 락을 건다. • adLockOptimistic : 레코드 단위로 락을 걸며, Update 메서드를 부르는 순간에만 락을 건다. • adLockBatchOptimistic : 배치 갱신 모드 요구

  20. . 레코드 셋 이동 • 레코드 셋을 열고 난 후 레코드 포인터를 바꾸면서 데이터를 다룸 • 레코드 이동 관련 Recordset 객체의 메서드/프로퍼티 • EOF : 레코드셋 마지막을 읽었을 때 true 값을 가짐 • MoveNext : 그 다음 레코드로 이동 • MovePrevious : 이전 레코드로 이동

  21. . 레코드 필드 값 • Recordset 객체의 Filed 콜렉션으로 접근 • Filed 콜렉션은 디폴트 콜렉션으로 Filed콜렉션 이름 생략가능 • rs.Fileds(“UserID”) • rs.(“UserID”) • 필드의 이름을 모르는 경우 인덱스로 접근 가능 • rs.Fileds( 0 ) • rs.( 0 )

  22. . 필드 이름과 값 보이기 • 필드의 값 구하기 (.value 사용) • rs.Filed( 0 ).value • 필드의 이름 구하기 (.name 사용) • rs.Filed( 0 ).name • 레코드셋에 필드 개수 (count 사용) 구하여 레코드의 전체 필드 이름/값 구하기 <% for i=0 to rs.fileds.count-1 Response.Write rs.fields(i).name Response.Write rs.fields(i).value next %>

  23. . 레코드 셋 가져오기 • Recordset 객체의 Open 메서드를 이용하는 방법 • Connection 객체의 Execute 메서드를 실행하고 결과를 리턴받는 방법

  24. . 레코드셋 관련 예제– Recordset.asp <% set DBConn = Server.CreateObject("ADODB.Connection") DBConn.Open"DSN=WebDBs;UID=sa;PWD=;" ' SQL 문을 실행, 레코드셋 객체를 얻는다. set rs = DBConn.Execute( "select * from titles" ) while not rs.EOF Response.Write rs("title_id") & "," & rs("title") & "<br>" ' 다음 레코드로 이동 rs.MoveNext wend ' 데이터베이스 닫기 DBConn.Close set DBConn = Nothing %>

  25. . 레코드셋 관련 예제 결과

  26. . 레코드셋 관련 예제– Recordset2.asp <% set DBConn = Server.CreateObject("ADODB.Connection") DBConn.Open"Driver={SQL Server};Server=(local);Database=Pubs;UID=sa;PWD=;" ' SQL 문을 실행, 레코드셋 객체를 얻는다. set rs = DBConn.Execute( "select * from titles" ) while not rs.EOF Response.Write rs("title_id") & "," & rs("title") & "<br>" ' 다음 레코드로 이동 rs.MoveNext wend ' 데이터베이스 닫기 DBConn.Close set DBConn = Nothing %>

  27. . 레코드셋 관련 예제 결과

  28. . 레코드셋 관련 예제– Recordset3.asp <% set DBConn = Server.CreateObject("ADODB.Connection") DBConn.Open"Provider=SQLOLEDB;Data Source =(local); Database=Pubs;UID=sa;PWD=;" ' SQL 문을 실행, 레코드셋 객체를 얻는다. set rs = DBConn.Execute( "select * from titles" ) while not rs.EOF Response.Write rs("title_id") & "," & rs("title") & "<br>" ' 다음 레코드로 이동 rs.MoveNext wend ' 데이터베이스 닫기 DBConn.Close set DBConn = Nothing %>

  29. . 레코드셋 관련 예제 결과

  30. . 레코드셋 활용예 – ShowAll.asp <html> <link href="../common/basic.css" rel=stylesheet type=text/css> <body> <h3> 테이블 보기 </h3> <hr> <% ' Connection 객체를 DB와 연결 Set DBConn = Server.CreateObject("ADODB.Connection") DBConn.Open"DSN=WebDBs;UID=sa;PWD=;" ' SQL 질의 실행 및 Recordset 저장 Set rs = DBConn.Execute( "select title_id,title,type from titles" ) %>

  31. . 레코드셋 활용예 – ..이어서 <table border> <% ' 필드 이름 보여주기 Response.Write "<tr bgColor=#f3f3f3>" For index =0 to ( rs.fields.count-1 ) Response.Write "<td><b>" & rs.fields(index).name & "</b></td>" Next Response.Write "</tr>"

  32. . 레코드셋 활용예 – ..이어서 ' 필드 값 보여주기 레코드셋 끝을 읽을 때까지 반복 실행 while Not rs.eof Response.Write "<tr bgColor=#f3f3f3>" for i=0 to (rs.fields.count-1) Response.Write "<td>" & rs( i ) & "</td>" next Response.Write "</tr>" ' 다음 레코드로 이동합니다. rs.MoveNext wend ' 레코드셋과 연결을 닫는다. rs.close DBConn.close %> </table> </body> </html>

  33. 9. 레코드셋 활용예 -결과 9. 레코드셋 활용예

More Related