3. ASP
This presentation is the property of its rightful owner.
Sponsored Links
1 / 96

3. ASP 고급 실험 PowerPoint PPT Presentation


  • 448 Views
  • Uploaded on
  • Presentation posted in: General

3. ASP 고급 실험. Autumn, 2008 Keun Ho Ryu. 내용. 학습목표 ADO 객체를 이용하여 데이터베이스를 사용하고 이를 활용할 수 있다 . 학습내용 데이터베이스 SQL 데이터베이스와의 연결 ADODB 관련 객체 Connection 객체 , Command 객체 , RecordSet 객체. 객체의 종류. 스크립팅 객체 FileSystemObject, Dictionary 브라우저 객체 ASP 객체 Request, Response

Download Presentation

3. 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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3 asp

3. ASP 고급 실험

Autumn, 2008

Keun Ho Ryu


3 asp

내용

  • 학습목표

    • ADO 객체를 이용하여 데이터베이스를 사용하고 이를 활용할 수 있다.

  • 학습내용

    • 데이터베이스

    • SQL

    • 데이터베이스와의 연결

    • ADODB 관련 객체

      • Connection객체, Command객체, RecordSet객체


3 asp

객체의 종류

  • 스크립팅 객체

    • FileSystemObject, Dictionary

  • 브라우저 객체

  • ASP 객체

    • Request, Response

    • Server

    • Application, Session

    • ContextObject

  • ADO 객체


3 asp

데이터베이스(이름:Pubs)

데이터베이스(이름:Test)

데이터베이스(이름:ADO)

데이터베이스명

테이블명

Members

Board

번호

글쓴이

글내용

이름

아이디

비밀번호

필드명

Products

품명

일련번호

단가

재고수량

메뚜기

111111

5

1000

레코드

꼴뚜기

222222

5

2000

레코드 셋

망둥어

333333

5

3000

필드

필드

필드

필드

데이터베이스

  • 데이터베이스의 기본 개념


Ms sql server

MS-SQL Server

  • 데이터베이스 : Access, Oracle, MS-SQL 등

  • MS-SQL


Ms sql erver

MS-SQL erver

  • SystemTypes


Ms sql server1

MS-SQL Server

  • SystemTypes- 문자열 관련


Ms sql server2

MS-SQL Server

  • SystemTypes- 숫자 관련


Ms sql server3

MS-SQL Server

  • SystemTypes- 날짜 관련


Ms sql server4

MS-SQL Server

  • SQL-테이블 생성


Ms sql server5

MS-SQL Server

  • SQL-데이터 입력(삽입)


Ms sql server6

MS-SQL Server

  • SQL-데이터 질의(검색)


Ms sql server7

MS-SQL Server

  • SQL-데이터 질의의 조건(Where)에 사용되는 연산자


Ms sql server8

MS-SQL Server

  • SQL-데이터 수정(Update)


Ms sql server9

MS-SQL Server

  • SQL-데이터 삭제


Ms sql server10

MS-SQL Server

  • SQL-저장 프로시저 만들기


Ms sql server11

MS-SQL Server

  • SQL-저장 프로시저 실행


Ms sql server12

MS-SQL Server

  • SQL-저장프로시저 삭제


Ms sql server13

MS-SQL Server

  • SQL-테이블 삭제


3 asp

데이터베이스 연결 제공

  • 데이터베이스 연결의 대표적인 방법

    • ODBC(Open DataBase Connectivity)

      • 관계형 데이터베이스

    • OLEDB

      • 관계형 데이터베이스, 비관계형 데이터베이스

    • 기타

      • DAO, RDO  웹 환경에 적합하지 않음


3 asp

데이터베이스 연결-ODBC

  • ODBC설정 단계(1)


3 asp

데이터베이스 연결-ODBC

  • ODBC설정 단계(2)


3 asp

데이터베이스 연결-ODBC

  • ODBC설정 단계(3)


3 asp

데이터베이스 연결-ODBC

  • ODBC설정 단계(4)


Oledb

더블클릭

데이터베이스 연결-OLEDB

  • OLEDB설정 단계


Oledb1

데이터베이스 연결-OLEDB

  • OLEDB설정 단계


3 asp

ADO 객체 모델

  • ADO 객체 모델

    • 데이터베이스의 사용에 필요한 객체의 모음

    • ADO 객체의 종류


3 asp

ADO 객체 모델

  • Connection 객체의 기능

    • 데이터베이스와의 연결 설정

      • Open, Close

    • 데이터 소스에 SQL명령을 실행

      • Execute

    • 트랜잭션 처리

      • BeginTrams, CommitTrans, RollbackTrans

    • 에러 처리

      • Error


3 asp

ADO 객체 모델

  • Connection 객체의 메소드


3 asp

ADO 객체 모델

  • Connection 객체의 속성


3 asp

ADO 객체 모델

  • Connection 객체의 메소드

    • Open


3 asp

ADO 객체 모델

  • Connection 객체의 메소드

    • Execute

      • 반환값이 존재하지 않는 경우(Insert, Update, Delete)

      • 반환값이 존재하는 경우

반환값이 없는 SQL문,

반환값 있는 SQL문,

테이블이름,

저장프로시저

CommandText에 의해 영향을 받은 레코드의 개수


3 asp

ADO 객체 모델

  • ADO관련 상수 정의


3 asp

ADO 객체 모델

  • ADO관련 상수의 사용

    • Adovbs.inc의 상수 사용

    • 타입 라이브러리의 사용(Adovbs.inc의 사용보다 처리 속도가 빠름)  권장


3 asp

ADO 객체 모델

  • Connection 객체의 메소드

    • Close


3 asp

ADO 객체 모델

  • Connection 객체의 메소드

    • 트랜잭션 관련 처리


3 asp

ADO 객체 모델

  • 예제


3 asp

DB 연결

질의 수행

반환된 레코드셋의 처리

SQL문 문자열 만들기

SQL문 실행

(트랜잭션처리)

연결 끊기 및 객체 소멸


3 asp

ADO 객체 모델

  • Command 객체의 기능

    • SQL문과 저장 프로시저를 실행


3 asp

ADO 객체 모델

  • Command 객체의 메소드


3 asp

ADO 객체 모델

  • Command 객체의 속성


3 asp

ADO 객체 모델

  • Command 객체의 메소드

    • DB 연결(ActiveConnection 속성)

      • Connection 객체가 있는 경우

      • Connection 객체가 없는 경우


3 asp

ADO 객체 모델

  • Command 객체의 메소드

    • Execute

      • 반환값이 없는 경우

      • 반환값이 있는 경우(RS는 레코드 셋)


3 asp

ADO 객체 모델

  • Command 객체의 메소드

    • CreateParameter 메소드

객체의 이름

객체의 최대 크기

객체에 지정된 값

객체의 데이터 형식(SQL:DataTypeEnum상수)

char:adchar, varchar:adVarChar, int:adInteger, text:adVarChar 등

0: adParamUnknown, 속성을 알 수 없음을 표시

1: adParamInput, 입력 변수임을 표시(기본값)

2: adParamOutput, 출력 변수임을 표시

3: adParamInputOutput, 입력, 출력 동시 지원

4: adParamReturnValue, 반환 값임을 표시


3 asp

ADO 객체 모델

  • Command 객체의 메소드

    • Parameters 컬렉션의 메소드

    • 사용 형식의 예


3 asp

ADO 객체 모델

  • 예제


3 asp

저장 프로시저

생성


3 asp

ADO 객체 모델

  • RecordSet 객체의 기능

    • SQL문의 실행으로 반환되는 결과를 저장하는 역할

      • 저장된 RecordSet은 레코드가 하나 또는 그 이상의 레코드들의 집합

      • RecordSet을 이용하여 추가(AddNew), 수정(UpDate)등을 작업을 수행

      • 레코드 사이를 이동하면서 필요한 데이터를 읽어 들임


3 asp

ADO 객체 모델

  • RecordSet 객체의 기능

    • SQL문의 실행으로 반환되는 결과를 저장하는 역할

      • 저장된 RecordSet은 레코드가 하나 또는 그 이상의 레코드들의 집합

      • RecordSet을 이용하여 추가(AddNew), 수정(UpDate)등을 작업을 수행

      • 레코드 사이를 이동하면서 필요한 데이터를 읽어 들임


3 asp

RecordSet(RS)

Absolutepage=1

5

RS.BOF

Absolutepage=2

MoveFirst

5

PageSize=5

Absolutepage=3

MoveLast

RS.EOF

5

Absolutepage=4

1

PageCount=4

페이지 나누기 전

페이지 나눈 후


3 asp

RS.BOF

MoveFirst

MoveLast

RS.EOF

ADO 객체 모델

  • RecordSet 객체의 메소드


3 asp

ADO 객체 모델

  • RecordSet 객체의 속성


3 asp

ADO 객체 모델

  • RecordSet 객체의 메소드

    • Open

Command 객체, SQL문장,

테이블 이름,

저장 프로시저

기존의 Connection 객체,

연결 문자열

adLockReadOnly

adLockPessimistic

adLockOptimistic

adLockBatchOptimistic

adOpenStatic : 3

adOpenForwardOnly : 0

adOpenDynamic : 2

adOpenKeyset : 1 (페이징)


3 asp

데이터베이스 열기

레코드셋 열기

레코드셋 데이터 처리

레코드셋 종료

데이테베이스 연결 종료


2 ole db ado

2. OLE DB와 ADO

  • ADO 객체

    • OLE DB 제공자를 통해서 데이터를 다룸

  • OLE DB

    • 프로그램에서 여러 형태의데이터를 다룰 수 있도록 제공된 컴포넌트

    • 중간 역할을 하는 인터페이스

  • ADO 객체를 통해 데이터처리 요구 => OLE DB가 실제데이터 처리하여 요구사항을 넘겨줌

  • 데이터

  • 제공자

  • ADO

  • 객체

  • ODBC

  • 드라이버

  • OLE DB

DB


3 asp

. 데이터 제공자

  • 실제로 데이터를 처리해주는 드라이버와 엔진을 말함

  • ODBC 가 가장 대표적인 예

  • ADO 객체는 데이터 제공자가 지원하는 기능을 이용

. ADO 와 데이터 베이스

  • 데이터 베이스를 다루는 객체


3 ado

3. ADO 객체 모델

  • 데이터 베이스를 다루는 기본 과정

  • 데이터 베이스 연결 (어느 데이터 베이스에 연결할지를 지정)

    => DSN 을 통해서 지정하고 연결

    2. 명령 실행 : SQL 문을 실행하고나 명령실행

    => 레코드 검색, 추가, 삭제, 수정등

    3. 실행 결과 : 조건에 맞는 레코드 검색시 레코드 셋으로 가져옴

    (실제로 이용하는 값은 각 레코드가 가진 필드값)


3 asp

. ADO 객체 구성

  • ADO 객체 모델 : 데이터 베이스를 사용하는 데 필요한 객체

    • Connection 객체 : 데이터 베이스 연결

    • Command 객체 : SQL 쿼리 실행

    • Recordset 객체 : 검색해서 얻어진 레코드 집합

    • Record 객체

    • Stream 객체

    • Parameter 객체

    • Field 객체

    • Error 객체

  • Page 291 ADO 객체 모델 그림 참조


4 ado

4. ADO 객체

  • Connection 객체

  • Comand 객체

  • Recordset 객체

  • 각 객체마다 명령을 실행하고 결과를 받아옴


Connection

. Connection 객체

  • 데이터 소스와 연결

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


Command

. Command 객체

  • 데이터 소스에 데이터를 다루는 명령을 보낼때 사용

  • Connection 객에서도 SQL 명령을 보내서 실행 가능(명령 처리 단순)

  • 보통 SQL 실행결과로 레코드를 리턴하지 않는 경우에 많이 사용 (데이터 추가/수정/삭제 )


Recordset

. Recordset 객체

  • Connection 객체와 Command 객체를 이용해서 명령을 실행 한 다음 받아오는 결과는 레코드 셋 형태이고, Recordset 객체를 통해 데이터 다룸

  • 레코드 셋이란 여러 레코드를 담고 있는 객체

  • 선택된 레코드는 하나이며 레코드 선택을 바꾸어가면서 데이터 값을 가져오거나 변경 가능

  • 레코드 검색뿐만아니라 추가/삭제/수정도 가능


5 ado

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 파일에 한번만 선언하여 사용


3 asp

6. 데이터 소스 연결

  • 어디에 있는 데이터베이스를 사용할 것인가 선택하는 과정

    (어떤 종류의 데이터베이스 이며, 어디에 위치하는 지 등등의 정보필요)


3 asp

. 연결 문자열

  • 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=;


7 connection

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


Connection1

. Connection 객체 이용

  • 데이터 베이스를 이용할때 마다 필요한 객체므로 데이터베이스를 사용하는 빈도수가 높은 경우 처음에 미리 한번 생성해 두었다가 반복해서 사용하는 것이 효율

  • => Connection 객체를 생성한 다음 이것을 Session 변수 또는 Application 변수로 보관해 놓고 이용

  • Global.asa 파일에서 지정


Global asa session

. 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>


8 recordset

8. 데이터베이스 다루기-Recordset

  • ADO 객체 모델에서 가장 많이 사용하는 객체

  • 이용방법

    • Recordset 객체 생성

    • Open 메서드로 레코드셋 가져옴 (인자 : 테이블이름,DSN 지정)

Set rs = Server.CreateObject(“ADODB.Recordset”)

rs.Open “Member”,”WebDBs”

‘레코드셋 다루기

rs.Close

rs = Nothing


3 asp

. 레코드셋 얻어내는 방법

  • 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


Cursor

.커서(Cursor)와 커서타입

  • 커서 : 레코드 셋에서 현재 레코드를 가르키는 포인터

  • 커서 타입 : 커서를 옮기는 방식(레코드를 이동 => 디폴트값:adOpenForwardOnly)

    • adOpenStatic – 정적 커서(레코드셋의 복사본 제공, 모든 이동형태가능)

    • adOpenForwardOnly – 전진전용커서 (정적커서와 비슷, 이동은 앞으로만)

    • adOpenDynamic – 다이나믹커서(레코드셋 갱신 , 모든 이동형태 가능)

    • adOpenKeyset – 키셋 커서 (레코드셋 갱신(다른 사용자가 추가한 레코드만 볼수 없음), 모든 이동형태 가능)

    • 다이나믹하게 변하는 레코드 셋을 다루는 것이 관리하는 데 많은 작업을 요구

    • ADO 상수 포함후 사용


3 asp

. 락(lock)과 락 타입

  • 락(lock) : 한 사람이 사용하는 동안 다른 사람이 접근 불가능(한 사용자가 레코드를 바꾸기 전에 다른 사용자가 바꿀 수 없음)

  • 사용이 다 끝난다음 락(Lock)을 풀어줌

  • 락타입

    • adLockReadOnly: 데이터를 바꿀 수 없으며 읽을 수만 있음

    • adLockPessimistic: 레코드 단위로 락을 걸며, 레코드 편집을 하는 순간부터 레코드에 락을 건다.

    • adLockOptimistic : 레코드 단위로 락을 걸며, Update 메서드를 부르는 순간에만 락을 건다.

    • adLockBatchOptimistic : 배치 갱신 모드 요구


3 asp

. 레코드 셋 이동

  • 레코드 셋을 열고 난 후 레코드 포인터를 바꾸면서 데이터를 다룸

  • 레코드 이동 관련 Recordset 객체의 메서드/프로퍼티

    • EOF : 레코드셋 마지막을 읽었을 때 true 값을 가짐

    • MoveNext : 그 다음 레코드로 이동

    • MovePrevious : 이전 레코드로 이동


3 asp

. 레코드 필드 값

  • Recordset 객체의 Filed 콜렉션으로 접근

  • Filed 콜렉션은 디폴트 콜렉션으로 Filed콜렉션 이름 생략가능

    • rs.Fileds(“UserID”)

    • rs.(“UserID”)

  • 필드의 이름을 모르는 경우 인덱스로 접근 가능

    • rs.Fileds( 0 )

    • rs.( 0 )


3 asp

. 필드 이름과 값 보이기

  • 필드의 값 구하기 (.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

%>


3 asp

. 레코드 셋 가져오기

  • Recordset 객체의 Open 메서드를 이용하는 방법

  • Connection 객체의 Execute 메서드를 실행하고 결과를 리턴받는 방법


Recordset asp

. 레코드셋 관련 예제– 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

%>


3 asp

. 레코드셋 관련 예제 결과


Recordset2 asp

. 레코드셋 관련 예제– 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

%>


3 asp

. 레코드셋 관련 예제 결과


Recordset3 asp

. 레코드셋 관련 예제– 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

%>


3 asp

. 레코드셋 관련 예제 결과


Showall asp

. 레코드셋 활용예 – 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" )

%>


3 asp

. 레코드셋 활용예 – ..이어서

<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>"


3 asp

. 레코드셋 활용예 – ..이어서

' 필드 값 보여주기 레코드셋 끝을 읽을 때까지 반복 실행

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>


3 asp

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

9. 레코드셋 활용예


  • Login