96
Chungbuk National University 2008 인인인 인인 3. ASP 인인 인인 Page 1 3. ASP 인인 인인 Autumn, 2008 Keun Ho Ryu

3. ASP 고급 실험

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

Page 1

3. ASP 고급 실험

Autumn, 2008

Keun Ho Ryu

Page 2: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

내용

학습목표 ADO 객체를 이용하여 데이터베이스를

사용하고 이를 활용할 수 있다 . 학습내용

데이터베이스 SQL 데이터베이스와의 연결 ADODB 관련 객체

Connection 객체 , Command 객체 , RecordSet 객체

Page 3: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

객체의 종류 스크립팅 객체

FileSystemObject, Dictionary

브라우저 객체

ASP 객체 Request, Response Server Application, Session ContextObject

ADO ADO 객체객체

window

frame

document

location

history

form

link

image

area

anchor

applet

plugins

layer

textarea

text

fileUpload

password

hidden

submit

reset

radio

checkbox

button

select option

window

frame

document

location

history

form

link

image

area

anchor

applet

plugins

layer

textarea

text

fileUpload

password

hidden

submit

reset

radio

checkbox

button

select option

navigator

plugins

mimeType

navigator

plugins

mimeType

Page 4: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

데이터베이스

데이터베이스의 기본 개념데이터베이스 ( 이름 :Pubs)데이터베이스 ( 이름 :Test)

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

비밀번호아이디이름

Members

… 글내용글쓴이번호

Board

20005222222꼴뚜기

333333

111111

일련번호

30005망둥어

10005메뚜기

재고수량단가품명

Products

테이블명 데이터베이스명

필드필드필드필드 …

레코드

레코드 셋

필드명

Page 5: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server

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

Page 6: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL erver

SystemTypes

Page 7: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SystemTypes- 문자열 관련

분류 데이터형식 설 명

문자열

char유니코드가 아닌 고정 길이 문자 데이터 ( 최대 8,000자 )

varchar유니코드가 아닌 가변 길이 문자 데이터 ( 최대 8,000자 )

text 유니코드가 아닌 가변 길이 데이터 ( 최대 231-1 자 )

유니코드문자열

nchar 고정 길이 유니코드 데이터 ( 최대 4,000 자 )

nvarchar 가변 길이 유니코드 데이터 ( 최대 4,000 자 )

ntext 가변 길이 유니코드 데이터 ( 최대 230-1 자 )

이진문자열

binary 고정 길이 이진 데이터 ( 최대 8,000 바이트 )

varbinary

가변 길이 이진 데이터 ( 최대 8,000 바이트 )

image 가변 길이 이진 데이터 ( 최대 231-1 바이트 )

Page 8: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SystemTypes- 숫자 관련

분류 데이터 형식 설 명

숫자( 정수 )

bigint 정수 데이터 ( 범위 : -263 ~ 263-1)

int 정수 데이터 ( 범위 : -231  ~  231-1)

smallint 정수 데이터 ( 범위 : -215  ~  215-1)

tinyint 정수 데이터 (0 ~255)

bit 정수 데이터 (1 또는 0 값 )

decimal 고정 정밀도 및 배율 숫자 데이터 (-1038+1 ~ 1038–1)

numeric decimal 과 기능이 같음

숫자( 실수 )

float부동 정밀도 숫자 데이터( 범위 : -1.79E + 308 ~ 1.79E + 308)

real부동 정밀도 숫자 데이터(-3.40E + 38 에서 3.40E + 38)

Page 9: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SystemTypes- 날짜 관련

분류 데이터 형식 설 명

날짜datetime

날짜 및 시간 데이터 (1753 년 1 월 1 일에서 9999 년 12 월 31일까지 1/300 초의 정확성을 가짐 )

smalldatetime

날짜 및 시간 데이터 (1900 년 1 월 1 일에서 2079 년 6 월 6일까지 1 분의 정확성을 가짐 )

Page 10: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SQL- 테이블 생성

CREATE TABLE 테이블명 (      필드명 데이터형 [IDENTITY][ 널값 허용 여부 ][Primary Key],      필드명 데이터형 [IDENTITY][ 널값 허용 여부 ][Primary Key],     ...)

Page 11: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server

SQL- 데이터 입력 ( 삽입 )INSERT [INTO]    테이블명 ( 필드리스트 )     VALUES ( 필드값리스트 )

Page 12: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SQL- 데이터 질의 ( 검색 )

SELECT 필드리스트    FROM 테이블명    [WHERE 검색조건 ]    [ORDER BY 필드 [ASC | DESC]

Page 13: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SQL- 데이터 질의의 조건 (Where) 에 사용되는

연산자 분류

연산자의 종류 및 설명

연산자 설 명

산술 연산자 +( 더하기 ), -( 빼기 ), *( 곱하기 ), /( 나누기 ), %( 나머지반환 )

비트 연산자 &( 비트 단위 AND), |( 비트 단위 OR), ^( 비트 단위 XOR)

비교 연산자

=( 같음 ), >( 보다 큼 ), <( 보다 작음 ), >=( 크거나 같음 ), <=(작 거 나 같 음 )<>( 같지 않음 ), !>( 보다 크지 않음 ), !<( 보다 작지 않음 ), !=( 같지 않음 )

논리 연산자

ALL 모든 비교 집합이 TRUE 인 경우 TRUE

AND 두 개의 부울 식이 모드 TRUE 인 경우 TRUE

ANY 비교 집합 중 어느 하나가 TRUE 인 경우 TRUE

BETWEEN 피연산자가 범위 안에 있는 경우 TRUE

EXISTS 하위 쿼리에 행이 포함된 경우 TRUE

IN 피연산자가 식 목록 중 하나와 동일한 경우 TRUE

LIKE 피연산자가 패턴과 일치하는 경우 TRUE

NOT 다른 모든 부울 연산자의 값을 반대로 변경

OR 한 개의 부울 식이 TRUE 인 경우 TRUE

SOME 비교 집합 중 일부가 TRUE 인 경우 TRUE

Page 14: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SQL- 데이터 수정 (Update)

UPDATE 테이블명     SET 필드명 = 표현식    [WHERE 수정조건 ]

Page 15: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SQL- 데이터 삭제

DELETE [FROM] 테이블명    [WHERE 삭제조건 ]

Page 16: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SQL- 저장 프로시저 만들기

CREATE PROC[EDUER] 프로스저명 [; 번호 ][{@ 입력인자 데이터형식 }]ASSQL 문장들 ......

Page 17: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SQL- 저장 프로시저 실행

EXEC[UTE]] 프로시저명 [; 번호 ] | {@ 입력인자의 값 }

Page 18: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SQL- 저장프로시저 삭제

DROP PROC[EDURE] 프로스저명

Page 19: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

MS-SQL Server SQL- 테이블 삭제

Page 20: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

데이터베이스 연결 제공

데이터베이스 연결의 대표적인 방법 ODBC(Open DataBase Connectivity)

관계형 데이터베이스 OLEDB

관계형 데이터베이스 , 비관계형 데이터베이스 기타

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

Page 21: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

데이터베이스 연결 -ODBC

ODBC 설정 단계 (1)

Page 22: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

데이터베이스 연결 -ODBC

ODBC 설정 단계 (2)

Page 23: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

데이터베이스 연결 -ODBC

ODBC 설정 단계 (3)

Page 24: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

데이터베이스 연결 -ODBC

ODBC 설정 단계 (4)

Page 25: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

데이터베이스 연결 -OLEDB

OLEDB 설정 단계

더블클릭

Page 26: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

데이터베이스 연결 -OLEDB

OLEDB 설정 단계

Page 27: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

ADO 객체 모델 데이터베이스의 사용에 필요한 객체의 모음 ADO 객체의 종류

객체의 종류 설 명

Connection

데이터베이스와의 연결하고 SQL 문을 실행 .

Command데이터베이스와의 연결하고 SQL 문을 실행 .여러 가지 명령 처리 방법 존재 .

Recordset 데이터베이스 질의를 통해 얻은 레코드 셋을 저장 .

Record레코드 셋 , 디렉터리 , 모든 파일 시스템 파일에서 한 행 (Row) 을 유지

Stream Binary 데이터 또는 텍스트를 읽고 , 쓰고 , 조작 .

Page 28: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Connection 객체의 기능 데이터베이스와의 연결 설정

Open, Close

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

트랜잭션 처리 BeginTrams, CommitTrans, RollbackTrans

에러 처리 Error

Page 29: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Connection 객체의 메소드메소드 설 명

BeginTrans 새로운 트랜잭션을 시작

Cancel 비동기적인 작업들을 취소

Close 기존 열린 연결 종료

CommitTrans 수정 내용을 저장하고 트랙잭션을 종료

Execute SQL 문장 , 저장 프로시저 실행

Open 데이터 소스에 연결

OpenSchema 제공자 (Provider) 로부터 데이터베이스 스키마 획득

RollbackTrans 수정 내용을 취소하고 트랜잭션을 종료

Page 30: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Connection 객체의 속성속성 설 명

Attributes 기존 트랜잭션이 끝난 뒤 새로운 트랜잭션의 시작 여부를 제어

ConnectionString 데이터 소스 연결을 생성하는 데 필요한 정보

CommandTimeout 명령을 시도한 다음 기다리는 시간 ( 초 )

ConnectionTimeout

연결을 시도한 다음 연결될 때까지 기다리는 시간 ( 초 )

DefaultDatabase Connection 개체에 대해 기본적인 데이터베이스를 선언

Provider 연결 제공자 정보 표시

State 개체의 상태 표시

Version ADO 버전 표시

IsolationLevel 트랜잭션이 시작되었을 때 트랜잭션의 Isolation 수준을 결정

Mode 연결된 데이터에 대한 수정 권한을 설정

Page 31: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Connection 객체의 메소드 Open

Connection 객 체 .Open [ConnectionString], [UserID], [Password], [Option]

Connection 객체 .Provider = 공급자Connection 객체 .ConnectString="UserID= 사용자계정 ;password= 암호 "Connection 객체 .OpenConnection 객체 .DefaultDatabase = 데이터베이스명

Page 32: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Connection 객체의 메소드 Execute

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

반환값이 존재하는 경우

Connection 객 체 .Execute CommandText, [RecordsAffected], [Options]

Set RecordSet 객체 =Conncetion 객체 .Execute(CommandText,                   [RecordsAffected], [Options])또는또는Set RS=Server.CreateObject("ADODB.RecordSet")    ......RS=Conncetion 객 체 .Execute(CommandText, [RecordsAffected], [Options])

상 수 값 설 명

adCmdUnknown

8 CommandText 가 알 수 없는 명령 형식

adCmdText 1CommandText 가 SQL 문 장 과 같 은 명 령 의 텍스트

adCmdTable 2CommandText 가 레 코 드 셋 의 근 거 가 되 는 테이블

adCmdStoreProc

4 CommandText 가 저장 프로시저

반환값이 없는 SQL 문 ,반환값 있는 SQL 문 ,

테이블이름 , 저장프로시저

CommandText 에 의해 영향을 받은

레코드의 개수

Page 33: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델 ADO 관련 상수 정의

상 수 값 설 명

adCmdUnknown 8 CommandText 가 알 수 없는 명령 형식

adCmdText 1 CommandText 가 SQL 문장과 같은 명령의 텍스트

adCmdTable 2 CommandText 가 레코드셋의 근거가 되는 테이블

adCmdStoreProc 4 CommandText 가 저장 프로시저

Page 34: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델 ADO 관련 상수의 사용

Adovbs.inc 의 상수 사용

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

<!--#include virtual="adovbs.inc" -->

<!--METADATA TYPE="typelib" NAME="ADODB Type Library"    FILE = "C:\Program Files\Common Files\SYSTEM\ADO\msado15.dll"-->

Page 35: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Connection 객체의 메소드 Close

Connection 객체 .Close ‘ 연결만 닫음Connection 객체 = Nothing ‘객체를 소멸시킴

Page 36: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Connection 객체의 메소드 트랜잭션 관련 처리Connection 객체 .[BeginTrans | CommitTrans | RollbackTrans]

Page 37: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

예제

Page 38: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험  BoardWrite.asp

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647

<HTML><Script Language="VBScript">Sub btnSend_OnClick  If(WriteForm.Writer.value = "") Then     alert "이름을 입력해 주세요 ..."     Exit Sub  End If       If(WriteForm.Title.value = "") Then     alert "제목을 입력해 주세요 ..."     Exit Sub  End If            If(WriteForm.Contents.value = "") Then     alert "글을 작성해 주세요 ..."     Exit Sub  End If  

  If(WriteForm.pwd.value = "") Then     alert "비번은 수정 / 삭제시 필요합니다 ."     Exit Sub  End If          WriteForm.submitEnd Sub</Script><Body><Form Name="WriteForm" Method="Post" action="BoardDB.asp"><Table><Caption>새글쓰기 </Caption><Tr><Td>글쓴이 </Td>     <Td><input type="text" name="Writer" size="20"></Td></Tr><Tr><Td>e-mail</Td>     <Td><input type="text" name="Email" size="30"></Td></Tr><Tr><Td>homepage</Td>         <Td><input type="text" name="Homepage" size="30"></Td></Tr><Tr><Td>글제목 </Td>             <Td><input type="text" name="Title" size="30"></Td></Tr><Tr><Td>글내용 </Td>             <Td>     <textarea wrap="hard" name="Contents" rows="10" cols="50">         </textarea></Td></Tr><Tr><Td>비밀번호 </Td>             <Td><input type="password" name="pwd" size="8"><br></pre></Td></Tr><Tr><Td Colspan="2">      <Center><input type="button" value="글올리기 " name="btnSend">   <input type="reset" value="다시쓰기 " name="reset"><br></Center></Td></Tr></Table></Form></BODY></HTML>

Page 39: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

  BoardDB.asp

12345678910

<%Option ExplicitDim Writer, Email, Homepage, Title, Pwd, Contents,

strConnect, SQLDim objCon, RS, intNumberWriter=request("Writer")Email=request("Email")Homepage=request("Homepage")Title=request("Title")Pwd=request("pwd")Contents=request("Contents")

Page 40: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험  BoardDB.asp

1213141516171819202122232425262728293031323334353637383940414243444546

Set objCon=Server.CreateObject("ADODB.Connection")objCon.Provider="SQLOLEDB.1"strConnect="Password=sa;User ID=sa;Data Source=(local);Initial Catalog=ADO;"objCon.ConnectionString=strConnectobjCon.Open

Set RS=objCon.Execute("Select Max(num) from Board")

If IsNull(RS(0)) Then    intNumber=1Else    intNumber=rs(0)+1End If

SQL="Insert Into Board(Writer, Email, Homepage, Title, Pwd, num, "SQL=SQL & "Writeday, ReadNum, Contents) Values"SQL=SQL & "('" & Writer & "' ,'" SQL=SQL & Email & "','" SQL=SQL & Homepage & "','" SQL=SQL & Title & "','" SQL=SQL & pwd & "',"SQL=SQL & intNumber & ",'"SQL=SQL & now() & "', 0 , '"SQL=SQL & Contents & "')"

objCon.BeginTrans  objCon.Execute SQLobjCon.CommitTrans  'objCon.RollbackTrans    RS.close  objCon.Close  set Rs=Nothing  set objCon=Nothing

Response.Write "성공 "  'Server.Transfer("BoardList.asp")%>

DB 연결

질의 수행

반환된 레코드셋의 처리

SQL 문 문자열 만들기

연결 끊기 및 객체 소멸

SQL 문 실행( 트랜잭션처리 )

Page 41: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Command 객체의 기능 SQL 문과 저장 프로시저를 실행

Page 42: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Command 객체의 메소드메 소 드 설 명

CreateParameterParameters 컬렉션에 새로운 Parameter 객체 생성

Execute 명령어 실행

Cancel 비동기적인 명령 작업을 취소

Page 43: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Command 객체의 속성속성 설 명

ActiveConnection Command 객체에서 사용하는 Connection 객체

CommandTimeout 명령을 시도한 다음 기다리는 시간 ( 초 )

CommandText 실행할 SQL 문

CommandType 실행할 명령어의 타입

Prepared 명령문을 실행하기 전에 컴파일 된 버전의 저장 여부를 결정

Properties Command 객체의 모든 속성 등을 저장하는 컬렉션

State Command 객체의 상태

Page 44: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Command 객체의 메소드 DB 연결 (ActiveConnection 속성 )

Connection 객체가 있는 경우

Connection 객체가 없는 경우

Set objCom=Server.Create("ADO.Command")  objCom.ActiveConnection = "" 연결문자열연결문자열 ""

  Set objCon=Server.Create("ADO.Connection")  Set objCom=Server.Create("ADO.Command")  objCon.Open = " 연결 문자열 "  objCom.ActiveConnection = objConobjCon

Page 45: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

Command 객체의 메소드 Execute

반환값이 없는 경우

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

Command 객 체 .Execute([RecoedAffected], [Parameters][Parameters], [Options])

Set RS=Command 객 체 .Execute([RecoedAffected], [Parameters][Parameters], [Options]) 

Page 46: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델 Command 객체의 메소드

CreateParameter 메소드Set parameter     = Command 객 체 .CreateParameter([Name], [Type], [Direction], [Size], [Value])

객체의 데이터 형식 (SQL:DataTypeEnum 상수 )char:adchar, varchar:adVarChar, int:adInteger,

text:adVarChar 등 0: adParamUnknown, 속성을 알 수 없음을 표시 1: adParamInput, 입력 변수임을 표시 ( 기본값 )

2: adParamOutput, 출력 변수임을 표시 3: adParamInputOutput, 입력 , 출력 동시 지원

4: adParamReturnValue, 반환 값임을 표시

객체의 이름 객체의 최대 크기

객체에 지정된 값객체에 지정된 값

Page 47: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델 Command 객체의 메소드

Parameters 컬렉션의 메소드

사용 형식의 예

메소드 설 명

Append 컬렉션에 Parameter 객체를 추가

Delete 컬렉션에 Parameter 객체를 제거

Refresh 컬렉션의 Parameter 정보 얻어옴

• @AA 매개변수에 대한 정의 ( 저장 프로스저에서 정의 )  Command 객 체 .Parameters.Append Command 객체 .CreateParemeter("@AA",                                   adVarChar, adParamInput, 50, " 안녕하쇼 ")• @BB 매개변수에 대한 정의 ( 저장 프로스저에서 정의 )  Command 객 체 .Parameters.Append Command 객체 .CreateParemeter("@BB",                                   adInteger, adParamInput, , 5)

Page 48: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

예제

Page 49: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

저장 프로시저저장 프로시저생성생성

Page 50: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

Set objCom=Server.CreateObject("ADODB.Command")objCom.ActiveConnection=objCon

objCom.CommandText = "MaxQuery"objCom.CommandType = adCmdStoredProc

Set RS=objCom.Execute If IsNull(RS(0)) Then    intNumber=1Else    intNumber=RS(0) + 1End If

Set objCon=Server.CreateObject("ADODB.Connection")objCon.Provider="SQLOLEDB.1"strConnect="Password=sa;User ID=sa;Data Source=(local);Initial Catalog=ADO;"objCon.ConnectionString=strConnectobjCon.Open

요청 자료 넘겨 받기요청 자료 넘겨 받기Writer=request("Writer") / Email=request("Email") / Homepage=request("Homepage")Title=request("Title") / Pwd=request("pwd") / Contents=request("Contents")

Page 51: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

  objCon.Close  set Rs=Nothing  set objCon=Nothing  set objCom=NothingResponse.Write "성공 " 'Server.Transfer("BoardList.asp")%>

objCom.Parameters.refresh

objCom.CommandText = "WriteInsert"objCom.CommandType = adCmdStoredProcobjCom.Parameters.Append objCom.CreateParameter("@Writer", adVarChar, adParamInput, 12, Writer)objCom.Parameters.Append objCom.CreateParameter("@Email", adVarChar, adParamInput, 50, Email)objCom.Parameters.Append objCom.CreateParameter("@Homepage",adVarChar,adParamInput,50,Homepage)objCom.Parameters.Append objCom.CreateParameter("@Title", adVarChar, adParamInput, 20, Title)objCom.Parameters.Append objCom.CreateParameter("@Pwd", adVarChar, adParamInput, 8, Pwd)objCom.Parameters.Append objCom.CreateParameter("@Num", adInteger, adParamInput, ,intNumber)objCom.Parameters.Append objCom.CreateParameter("@WriteDay", adVarChar, adParamInput, 30, now())objCom.Parameters.Append objCom.CreateParameter("@ReadNum", adInteger, adParamInput,,0)objCom.Parameters.Append objCom.CreateParameter("@Contents", adVarchar, adParamInput, 50, Contents)

objCon.BeginTrans  objCom.Execute cntRecordsAffected, , adExecuteNoRecordsobjCon.CommitTrans  'objCon.RollbackTrans 

Page 52: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

Page 53: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

RecordSet 객체의 기능 SQL 문의 실행으로 반환되는 결과를 저장하는 역할 저장된 RecordSet 은 레코드가 하나 또는 그

이상의 레코드들의 집합 RecordSet 을 이용하여 추가 (AddNew), 수정

(UpDate) 등을 작업을 수행 레코드 사이를 이동하면서 필요한 데이터를 읽어

들임

Page 54: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

RecordSet 객체의 기능 SQL 문의 실행으로 반환되는 결과를 저장하는 역할 저장된 RecordSet 은 레코드가 하나 또는 그

이상의 레코드들의 집합 RecordSet 을 이용하여 추가 (AddNew), 수정

(UpDate) 등을 작업을 수행 레코드 사이를 이동하면서 필요한 데이터를 읽어

들임

Page 55: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

RS.BOF

RS.EOF

PageSize=5

페이지 나누기 전 페이지 나눈 후

5

5

5

1

Absolutepage=1

Absolutepage=2

Absolutepage=3

Absolutepage=4

PageCount=4

RecordSet(RS)

MoveFirst

MoveLast

Page 56: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

RecordSet 객체의 메소드

RS.BOF

RS.EOF

MoveFirst

MoveLast

메소드 설 명

Open 커서 열기

Close 열린 개체 닫기

AddNew 새로운 레코드 생성

Delete 현재 레코드 삭제

Update 기존 레코드 변경 사항 저장

Move 현재 레코드 포인터를 이동

MoveFirst 처음 레코드로 이동

MoveLast 마지막 레코드로 이동

MoveNext 다음 레코드로 이동

MovePrevious 이전 레코드로 이동

Page 57: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

RecordSet 객체의 속성속성 설 명

AbsolutePage 현재 레코드가 위치한 절대 페이지

AbsolutePosition

현재 레코드가 순서 위치

ActiveConnection

레코드셋에 있는 Connection 개체

BOF 현재 레코드 위치가 첫 번째 레코드에 있으면 TRUE

EOF 마지막 레코드 다음에 레코드 위치가 있으면 TRUE

CursorType 커서 타입

LockType 락 타입

PageSize 하나의 페이지를 구성하는 레코드 수 지정

PageCount 레코드셋이 가지고 있는 데이터 페이지 수

RecordCount 현재 레코드셋에 있는 레코드 수

Filter 레코드셋에 대한 데이터 필터를 설정하거나 반환

RecordCount 현재 레코드셋 내에 있는 레코드의 개수

Page 58: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

ADO 객체 모델

RecordSet 객체의 메소드 OpenRecordSet.Open Source ActiveConnection, [Cursor 타입 ], [Lock 타입 ], [옵션 ]

Command 객체 , SQL 문장 ,

테이블 이름 ,저장 프로시저

기존의 Connection 객체 ,

연결 문자열adOpenStatic : 3

adOpenForwardOnly : 0adOpenDynamic : 2

adOpenKeyset : 1 (페이징 )

adLockReadOnlyadLockPessimisticadLockOptimistic

adLockBatchOptimistic

Page 59: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

Page 60: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

<%Option ExplicitDim page, strConnect, objCon, RS, SQL, TotalPage, i' 페이징의 적용page=request("page")if page="" then  page=1end if

Set objCon=Server.CreateObject("ADODB.Connection")objCon.Provider="SQLOLEDB.1"strConnect="Password=sa;User ID=sa;Data Source=(local);Initial Catalog=ADO;"objCon.ConnectionString=strConnectobjCon.Open

Set RS=Server.Createobject("ADODB.RecordSet")'RecordSet을 열기 전에 PageSize 지정Rs.Pagesize=5' 커서 타입 반드시 지정해야 페이징 됨SQL="Select * From Board Order By num Desc"RS.Open SQL, objCon, 1%>

Page 61: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험<HTML><BODY><Table border="1">  <Caption><center>  <%If RS.BOF or RS.EOF Then %>     등록된 글이 없습니다 .   <%Else     Totalpage=RS.Pagecount ' 전체 페이지수 대입 (( 레코드 수 /PageSize) 올림 )     Rs.Absolutepage=page   '지정된 페이지의 첫 레코드로 위치 이동    %>    단순게시판 <a href="BoardWrite.asp">(새글 )</a>  </Center></Caption>        <Th> 번호 </Th><Th> 글쓴이 </Th><Th> 제목 </Th><Th> 조회수 </Th><Th> 날짜</Th>    <%     i=1    Do until RS.EOF or i>RS.Pagesize    %>  <Tr><Td><%=RS("num")%></Td>      <Td><A href="mailto:<%=RS("Email")%>"><%=RS("Writer")%></A></Td>      <Td>      <A href="Contents.asp?idx=<%=RS("idx")%>"><%=RS("Title")%></A></Td>      <Td><%=RS("Readnum")%></Td>      <Td><%=Year(RS("Writeday")) & "/" %>          <%=Month(RS("Writeday")) & "/" %>          <%=Day(RS("Writeday"))%></Td>      </Tr>      <%      RS.Movenext      i=i+1    Loop                        

    RS.Close    objCon.Close    Set RS=Nothing    Set objCon=Nothing  %></Table>

Page 62: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험                    <%If Cint(page) > 1 Then%>      <A href="BoardList.asp?page=<%=Page-1%>"> 이전</A> |   <%End If%>   <%If Cint(Page) <> Cint(Totalpage) then       For i=1 To Totalpage %>       <A href="BoardList.asp?Page=<%=i%>"><%=i%></A> |           <%           Next       %>       <A href="BoardList.asp?page=<%=page+1%>">다음</A>   <%End If%>   <%=Page%>/<%=Totalpage%>Pages <Br>     <Form method="post" action="search_result.asp">     <Select name="search">     <Option value="Title">글제목 </option>     <Option value="Writer">글쓴이 </option>     <Option value="Contents">글내용 </option>     </Select>     <Input type="text" name="searchstring" size="20">     <Input type="submit" value="검색 ">     </Form>   <%End If%></Center></Body></Html>

Page 63: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

Page 64: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

데이터베이스 열기

레코드셋 열기

레코드셋 데이터 처리

레코드셋 종료

데이테베이스 연결 종료

Page 65: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

2. OLE DB 와 ADO

ADO 객체 OLE DB 제공자를 통해서 데이터를 다룸

OLE DB

프로그램에서 여러 형태의데이터를 다룰 수 있도록 제공된 컴포넌트 중간 역할을 하는 인터페이스

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

ADO

객체OLE DB

ODBC

드라이버

데이터제공자

DB

Page 66: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. 데이터 제공자

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

. ADO 와 데이터 베이스데이터 베이스를 다루는 객체

Page 67: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

3. ADO 객체 모델

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

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

=> DSN 을 통해서 지정하고 연결2. 명령 실행 : SQL 문을 실행하고나 명령실행 => 레코드 검색 , 추가 , 삭제 , 수정등3. 실행 결과 : 조건에 맞는 레코드 검색시 레코드 셋으로

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

Page 68: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. ADO 객체 구성

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

Page 291 ADO 객체 모델 그림 참조

Page 69: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

4. ADO 객체

Connection 객체 Comand 객체 Recordset 객체

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

Page 70: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. Connection 객체

데이터 소스와 연결

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

Page 71: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. Command 객체

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

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

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

Page 72: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. Recordset 객체

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

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

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

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

Page 73: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

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

Page 74: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

6. 데이터 소스 연결

어디에 있는 데이터베이스를 사용할 것인가 선택하는 과정( 어떤 종류의 데이터베이스 이며 , 어디에 위치하는 지 등등의

정보필요 )

Page 75: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 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=;

Page 76: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

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

Page 77: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. Connection 객체 이용

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

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

Global.asa 파일에서 지정

Page 78: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

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

Page 79: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

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

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

Recordset 객체 생성 Open 메서드로 레코드셋 가져옴 ( 인자 : 테이블이름 ,DSN

지정 )

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

rs.Open “Member”,”WebDBs”

‘ 레코드셋 다루기rs.Close

rs = Nothing

Page 80: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 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

Page 81: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. 커서 (Cursor) 와 커서타입

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

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

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

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

adOpenDynamic – 다이나믹커서 ( 레코드셋 갱신 , 모든 이동형태 가능 ) adOpenKeyset – 키셋 커서 ( 레코드셋 갱신 ( 다른 사용자가 추가한

레코드만 볼수 없음 ), 모든 이동형태 가능 ) 다이나믹하게 변하는 레코드 셋을 다루는 것이 관리하는 데 많은 작업을

요구 ADO 상수 포함후 사용

Page 82: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. 락 (lock) 과 락 타입 락 (lock) : 한 사람이 사용하는 동안 다른 사람이 접근 불가능 (

한 사용자가 레코드를 바꾸기 전에 다른 사용자가 바꿀 수 없음 )

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

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

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

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

adLockBatchOptimistic : 배치 갱신 모드 요구

Page 83: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. 레코드 셋 이동

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

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

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

MoveNext : 그 다음 레코드로 이동 MovePrevious : 이전 레코드로 이동

Page 84: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. 레코드 필드 값

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

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

rs.Fileds(“UserID”) rs.(“UserID”)

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

rs.Fileds( 0 ) rs.( 0 )

Page 85: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 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

%>

Page 86: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. 레코드 셋 가져오기

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

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

Page 87: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. 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%>

Page 88: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. 레코드셋 관련 예제 결과

Page 89: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. 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%>

Page 90: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. 레코드셋 관련 예제 결과

Page 91: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. 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%>

Page 92: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

. 레코드셋 관련 예제 결과

Page 93: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. 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" )%>

Page 94: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 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>"

Page 95: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 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>

Page 96: 3. ASP  고급 실험

Chungbuk National University

2008 인터넷 실험 3. ASP 고급 실험

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

9. 레코드셋 활용예