Connection 객체

Connection 객체는 데이터 저장소와 연결할 수 있도록 해준다.

OLE DB 제공자의 종류, 데이터 소스 종류, 접속 정보와 그 데이터 저장소와 접속하는데만 적용되는 특정한 사항 등과 같은 정보들을 가지고 데이터 저장소와 연결한다.

데이터 저장소와 접속하기 위해 꼭 Connection 객체를 생성할 필요는 없다.

Connection 객체 없이도 Command, RecordSet, Record 객체에서도 데이터 저장소에 연결할 수 있다.

단, 하나의 OLE DB 제공자에 대해 여러 개의 명령들을 실행시키려고 한다면 명시적으로 Connection 객체를 생성하는 것이 더욱 효율적일 것이다.

Connection 객체는 데이터 저장소와의 연결 생성 역할 뿐만 아니라 명령을 실행시킬 수도 있다.

삽입, 갱신, 삭제 및 레코드세트를 반환하는 명령도 실행시킬 수 있다.

다만, Connection 객체로 만들어진 레코드세트와 달리 RecordSet 객체의 Open 메소드로 만들어진 레코드세트는 커서 타입과 락 타입을 자유롭게 변경할 수 있다.

Connection 객체로 만들어진 레코드세트는 항상 전진 전용, 읽기 전용 레코드세트를 얻게 된다.

따라서, 간단한 조회나 레코드세트를 반환받지 않는 명령에 주로 사용된다.

<%
'커넥션 객체 생성/오픈
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn
 
'간단한 조회
Set Rs = objConn.Execute("SELECT * FROM Customers")
 
'트랜잭션 시작
objConn.BeginTrans
 
     '레코드셋 반환 없는 삽입/갱신/삭제 명령 실행
     objConn.Execute("Delete From Customers WHERE id = 1")
     objConn.Execute("Update Products Set unit = 0 WHERE WHERE id = 1")
 
If objConn.Errors.Count > 0 Then
     objConn.RollbackTrans
Else
     objConn.CommitTrans
End If
 
objConn.Close
Set objConn = Nothing
%>

 

Command 객체

Command 객체는 데이터 저장소에 대한 명령들을 실행시킨다.

명령들을 실행시키고 레코드세트를 반환받는 이외에도 출력 파라미터들과 반환되는 값들을 이용해서 다른 추가 정보들을 제공받을 수 있다.

일반적으로, Command 객체는 어떠한 레코드세트도 반환시키지 않는 명령들을 실행시키거나 인자(Parameter)의 입력을 필요로 하는 명령들에 주로 사용한다.

<%
'Command 객체 생성
Set objCmd = Server.CreateObject("ADODB.Command")
 
With objCmd
     .Activeconnection = strConn
 
     '레코드셋 반환
     .CommandText = "SELECT TOP 10 * FROM Customers"
     Set Rs = .Execute
 
     '삽입/갱신/삭제 명령 실행
     .CommandText = "Update Products Set unit = 0 WHERE WHERE id = 1"
     .Execute cntRecord, , adExecuteNoRecords
 
     '저장프로시저 실행
     .CommandText = "up_insertItem"
     .CommandType = adCmdStoredProc
     .Parameters.Append .CreateParameter("@code", adChar, adParamInput, 8, "ABCDEFGH")
     .Parameters.Append .CreateParameter("@name", adVarChar, adParamInput, 20, "가나다라")
     .Parameters.Append .CreateParameter("@seq", adInt, adParamOutput, , 0)
     .Execute
     new_seq = .Parameters("@seq").Value
End With
 
Set objCmd = Nothing
 
Response.Write "총 "& cntRecord &"건이 수정되었습니다."
Response.Write "신규 아이템 번호 : "& new_seq
%>

 

RecordSet 객체

Connection 객체나 Command 객체를 이용해서 명령을 실행하면 그 명령에 대한 데이터 값들이 반환되게 되는데 이것들은 레코드세트 형태를 가지고 있으며 이러한 형태의 데이터를 다루는 객체가 RecordSet 객체이다.

<%
'객체 생성
Set objRs = Server.CreateObject("ADODB.RecordSet")
 
'열기
With objRs
     '실행할 명령
     .Source = "SELECT TOP 10 id, name FROM Customers"
 
     '연결 생성
     .ActiveConnection = strConn
 
     '커서타입 - 전진전용
     .CursorType = adOpenForwardOnly
 
     '락타입 - 읽기전용
     .LockType = adLockReadOnly
 
     '레코드셋 열기
     .Open
End With
 
Do Until objRs.EOF Then
     Response.Write objRs(0) &","& objRs("name") &"<br>"
 
     '다음 레코드로 이동
     objRs.MoveNext
Loop
 
Set objRs = Nothing
%>

RecordSet 객체는 레코드를 추가, 삭제, 수정할 수 있는 메소드들을 제공한다.

RecordSet 객체의 메소드들을 사용하여 데이터를 변경하려면 adLockReadOnly 이외의 락타입을 사용해야한다.

Update 메소드
<%
'객체 생성
Set objRs = Server.CreateObject("ADODB.RecordSet")
 
'현재 레코드 값 바꾸기
With objRs
     .Open sql, strConn, adOpenDynamic, adLockOptimistic, adCmdText
 
     Do Until .EOF
           IF .Fields("id") = "yoon" Then
               .Fields("homepage") = "www.devholic.net"
               .Update
     End If
 
     .MoveNext
     Loop
End With
%>

 

AddNew 메소드
<%
'객체 생성
Set objRs = Server.CreateObject("ADODB.RecordSet")
 
With objRs
     .Open sql, strConn, adOpenDynamic, adLockOptimistic, adCmdText
 
     .AddNew
     .Fields("id") = "yoon"
     .Fields("name") = "DEVHolic"
     .Fields("email") = "yoon@devholic.net"
     .Update
End With
%>

Delete 메소드는 레코드세트에서 레코드를 삭제한다. 어떤 레코드들이 삭제되는가는 옵션 인수에 따라 다르다.

Delete 메소드
<%
objRs.Delete adAffectCurrent '-- 현재 레코드 삭제 (생략시 디폴트)
 
objRs.Delete adAffectGroup '-- 현재 필터와 매치되는 모든 레코드 삭제
 
objRs.Delete adAffectAll '-- 레코드세트 안의 모든 레코드 삭제
%>

 

Stream 객체

Stream 객체는 파일이나 자원의 실제적인 내용을 액세스하게 한다.

Record 객체나 RecordSet 객체들과 함께 웹 서버에 있는 파일이나 전자메일 메시지들을 액세스할 수 있을 뿐만 아니라 내용까지 액세스할 수 있게 한다.

예를들면 ADO를 사용하여 전자메일 클라이언트를 만들어 메일 서버에 액세스할 수 있으며, 데이터 세트를 XML 형태의 스트림으로 액세스할 수 있고, 이진 데이터를 다룰 수도 있다.

Stream 객체를 사용하여 데이터베이스로부터 가져오는 이미지 등과 같은 BLOB 데이터를 처리할 수 있다.

 

Fields 컬렉션

Fields 컬렉션은 레코드세트나 레코드와 연관되어 있는 Field 객체들을 포함한다.

관계형 데이터베이스와 같이 레코드세트를 기반으로 하는 구조화된 데이터의 경우 필드들은 데이터의 컬럼에 해당되고, 구조화되지 않은 데이터의 경우에는 객체의 속성들이 해당된다.

 

Parameters 컬렉션

Parameters 컬렉션은 저장된 명령들 안에 있는 파라미터들을 나타낸다.

파라미터들이 가장 많이 사용되는 것은 데이터베이스에 있는 저장 프로시저들과 함께 사용되는 경우이다.

만약 저장 프로시저로부터 레코드세트를 제외한 특정한 값을 반환받으려 한다면 출력 파라미터를 지정하여 사용할 수 있다.

서버의 성능에 영향을 미치는 레코드 세트를 반환하지 않고 특정 값만을 반환하기 때문에 서버의 성능 향상에 도움이 된다.

 

Errors 컬렉션

Errors 컬렉션은 명령에 의해 마지막으로 생성된 ADO나 OLE DB 제공자 에러에 대한 정보를 포함하고 있으며 Connection 객체에 의해서만 액세스될 수 있다.

 

Properties 컬렉션

Properties 컬렉션은 데이터 제공자에 따라 가지고 있는 기능들을 사용할 수 있게 한다.