ActiveX 데이터 객체

ActiveX Data Objects

컴퓨팅에서 Microsoft의 ActiveX Data Objects(ADO)는 데이터 소스에 액세스하기 위한 COM(Component Object Model) 개체 세트로 구성됩니다.MDAC(Microsoft Data Access Components)의 일부로서 프로그래밍 언어와 OLE DB(데이터베이스에 관계없이 균일한 방식으로 데이터 저장소에 액세스하는 수단) 사이미들웨어 계층을 제공합니다.ADO를 통해 개발자는 데이터베이스 구현 방법을 몰라도 데이터에 액세스하는 프로그램을 작성할 수 있습니다. 개발자는 연결을 위해 데이터베이스를 인식해야 합니다.ADO를 사용할 때 데이터베이스에 액세스하기 위해 SQL에 대한 지식이 필요하지 않지만 ADO를 사용하여 SQL 명령을 직접 실행할 수 있습니다(단, 사용되는 데이터베이스 유형에 따라 달라짐).

Microsoft는 1996년 10월에 ADO를 도입하여 이 소프트웨어를 RDO(Remote Data Objects) DAO(Data Access Objects) 등 데이터 소스에 액세스하기 위한 마이크로소프트의 초기 개체 계층의 후속 제품으로 포지셔닝했습니다.

ADO는 4개의 컬렉션과 12개의 오브젝트로 구성되어 있습니다.

ADO 컬렉션

필드
이 컬렉션에는 필드 개체 집합이 포함되어 있습니다.Collection은 Recordset 개체 또는 Record 개체에서 사용할 수 있습니다.Recordset 개체에서 필드 집합을 구성하는 각 필드 개체는 해당 레코드 세트 개체의 열에 해당합니다.Record 개체에서 필드는 트리 구조의 네임스페이스(인터넷 퍼블리싱용 Microsoft OLE DB Provider와 같은 반구조화된 데이터 공급자에 사용됨)를 가리키는 절대 또는 상대 URL이거나 해당 Record 개체와 연관된 기본 스트림 개체에 대한 참조로 사용할 수 있습니다.
특성.
개체는 개체의 속성 컬렉션에 포함된 두 개 이상의 속성 개체를 가질 수 있습니다.
파라미터
명령 개체에는 미리 정의된 동작을 변경하는 여러 개의 매개 변수 명령이 있을 수 있으며 각 매개 변수 개체는 명령 개체의 매개 변수 컬렉션에 포함됩니다.
에러
공급자가 생성한 모든 오류는 오류 개체 모음으로 전달되며 오류 모음 자체는 Connection 개체에 포함됩니다.ADO 작업에서 오류가 발생하면 컬렉션이 지워지고 컬렉션에 오류 개체의 새 그룹이 생성됩니다.

ADO 오브젝트

연결
연결 개체는 OLE DB를 통해 ADO가 데이터 저장소에 연결하는 것입니다.연결 개체는 세션에 대한 정보를 저장하고 데이터 저장소에 연결하는 방법을 제공합니다.데이터 저장소에 따라 연결 설정 방법이 다르므로 특정 OLE DB 공급자의 연결 개체에서 일부 방법이 지원되지 않을 수 있습니다.연결 개체는 연결을 키 값 쌍의 목록으로 지정하는 연결 문자열(예: "Provider="SQLOLEDB";Data Source=)을 사용하여 'Open' 메서드를 사용하여 데이터스토어에 연결합니다.TheSqlServer', 초기 카탈로그='북풍';통합 보안='SSPI';")이 연결 문자열의 시작은 연결 개체에 필요한 데이터스토어 연결 유형을 식별해야 합니다.
  • OLE DB 제공자(예: SQLOLEDB)로, "timeout=" 구문을 사용한다.
  • "file name=" 구문을 사용한 파일 이름;
  • "Remote provider=" 및 "Remote server=" 구문을 사용한 원격 공급자 및 서버(RDS 참조) 또는
  • "URL=" 구문을 사용한 절대 URL
명령어
연결 객체가 데이터 소스에 대한 세션을 확립한 후 명령 객체를 통해 명령이 데이터 공급자에게 전송됩니다.명령 개체는 명령을 사용하여 공급자에게 직접 SQL 쿼리를 전송할 수 있습니다.텍스트 속성. 매개 변수 개체 또는 매개 변수 컬렉션을 사용하여 매개 변수화된 쿼리 또는 저장 프로시저를 전송하거나 쿼리를 실행하고 Execute 메서드를 통해 결과를 데이터 집합 개체로 반환합니다.Stream, RecordSet 또는 Connection 개체와 같은 다른 개체와 관련하여 Command 개체에서 사용할 수 있는 다른 메서드가 몇 가지 있습니다.
레코드 세트
레코드 세트는 레코드 그룹이며 기본 테이블에서 또는 테이블에 대한 쿼리의 결과로 가져올 수 있습니다.RecordSet 개체에는 필드 컬렉션과 속성 컬렉션이 포함됩니다.필드 컬렉션은 테이블 내의 대응하는 열인 필드 오브젝트 세트입니다.속성 컬렉션은 OLE DB 공급자의 특정 기능을 정의하는 속성 개체 집합입니다.RecordSet에는 RecordSet 내에 존재하는 데이터를 검사하기 위한 다양한 메서드와 속성이 있습니다.레코드의 값을 변경한 후 Update 또는 UpdateBatch 메서드를 호출하여 레코드 세트 내의 레코드를 업데이트할 수 있습니다.
즉각적인
레코드 집합은 adLockOptimistic 또는 adLockPessimistic 잠금을 사용하여 잠깁니다.레코드가 변경되고 Update 메서드가 호출된 후 데이터는 데이터 원본에서 업데이트됩니다.
집단
레코드 집합은 adLockBatchOptimistic을 사용하여 잠기고 Update가 호출될 때마다 데이터가 임시 버퍼로 업데이트됩니다.마지막으로 UpdateBatch가 호출되면 데이터는 데이터 소스로 완전히 업데이트됩니다.이렇게 하면 모든 것이 메모리에서 수행되고 문제가 발생하면 UpdateCancel이 호출되어 업데이트가 데이터 소스로 전송되지 않는다는 장점이 있습니다.
거래.
OLE DB 공급자가 허용할 경우 트랜잭션을 사용할 수 있습니다.트랜잭션을 시작하기 위해 프로그래머는 BeginTrans 메서드를 호출하고 필요한 업데이트를 수행합니다.모두 완료되면 프로그래머는 CommitTrans 메서드를 호출합니다.RollbackTrans를 호출하여 트랜잭션 내에서 이루어진 변경을 취소하고 데이터베이스를 트랜잭션 시작 전 상태로 롤백할 수 있습니다.
기록.
이 개체는 데이터베이스 내의 하나의 레코드를 나타내며 필드 컬렉션을 포함합니다.RecordSet은 Record 객체의 컬렉션으로 구성됩니다.
개울.
스트림은 주로 RecordSet 개체에서 사용되며 바이트 스트림을 읽고 쓰는 수단입니다.대부분 레코드 세트를 XML 형식으로 저장하거나 명령 대신 OLE DB 공급자에게 명령을 보내는 데 사용됩니다.텍스트 객체 및 이진 또는 텍스트 파일의 내용을 포함합니다.
파라미터
파라미터는 일반적인 기능의 동작을 변경하는 수단입니다.를 들어 저장 프로시저는 필요한 작업에 따라 서로 다른 파라미터를 전달할 수 있습니다.이것을 파라미터화 명령이라고 부릅니다.
들판
각 Record 개체에는 여러 필드가 포함되어 있으며 RecordSet 개체에는 대응하는 Field 개체도 있습니다.RecordSet 객체의 Field 객체는 참조하는 데이터베이스 테이블의 열에 해당합니다.
소유물
이 개체는 OLE DB 공급자에 고유하며 공급자가 구현한 기능을 정의합니다.속성 오브젝트는 빌트인 속성(ADO에 의해 이미 구현되어 있기 때문에 변경할 수 없거나 기본 데이터 공급자에 의해 정의된 동적 속성일 수 있으며 변경할 수 있습니다.
에러
ADO 사용 중 OLE DB 공급자 오류가 발생하면 오류 컬렉션에 오류 개체가 생성됩니다.그러나 다른 오류는 Error 개체에 들어가지 않습니다.예를 들어 RecordSet 또는 Field 객체의 데이터를 조작할 때 발생하는 오류는 Status 속성에 저장됩니다.

기본 사용법

ADO 를 사용해 데이터에 액세스 해 조작할 수 있도록 하려면 , 몇개의 기본적인 순서가 필요합니다.

  1. 데이터베이스에 연결할 연결 개체를 만듭니다.
  2. 데이터를 수신할 레코드 세트개체를 만듭니다.
  3. 연결을 엽니다.
  4. 레코드 세트를 열고 원하는 테이블 이름 또는 SQL 문을 매개 변수로 전달하여 레코드 세트를 채웁니다.
  5. 가져온 데이터에 대해 원하는 모든 검색/처리를 수행합니다.
  6. Update 또는 UpdateBatch 메서드를 사용하여 데이터 변경(있는 경우)을 커밋합니다.
  7. 레코드 세트를 닫습니다.
  8. 연결을 닫습니다.

ASP의 예

다음 예시는 ADO를 사용하여 "Phonebook"이라는 테이블에서 "Name" 필드를 선택하는 ASP의 예입니다. 여기서 "PhoneNumber"는 "555-5555"와 같습니다.

어둡다 접속, 마이 레코드 세트, 이름. 세트 접속 = 서버.create object(작성("ADODB.접속") 세트 마이 레코드 세트 = 서버.create object(작성("ADODB. 레코드 세트")  접속.열다. 마이데이터소스 마이 레코드 세트.열다. "전화 번호부", 접속  마이 레코드 세트.발견하다 "전화번호 = '555-5555'" 이름. = 마이 레코드 세트.필드.아이템("이름") 마이 레코드 세트.가까운.  세트 마이 레코드 세트 = 아무 것도 없어요. 세트 접속 = 아무 것도 없어요. 

이는 Recordset 객체의 기능 대신 일반 SQL을 사용하는 다음 ASP 코드와 동일합니다.

어둡다 접속, 마이 레코드 세트, 이름. 세트 접속 = 서버.create object(작성("ADODB. 연결") 접속.열다. 마이데이터소스 세트 마이 레코드 세트 = 접속.실행하다("전화번호부에서 이름 선택 WHERE 전화번호 = '555-5555'") 이름. = 마이 레코드 세트(0) 

소프트웨어 지원

ADO는 바이너리 COM 인터페이스에 바인딩을 지원하는 모든 개발 언어로 지원됩니다.이러한 언어에는 ASP, Dellphi, PowerBuilderVBA(Visual Basic for Applications)가 포함됩니다.ADO 지원이 dBase Plus 8(ADO 포함)에 추가되었습니다.

레거시

ADO.NET은 ADO를 C#/와 같은 방법으로 대체했습니다.Windows 애플리케이션 개발을 타겟으로 하는 프라이머리 모드로서 NET이 C/Win32를 대체했습니다.ADO.NET은 ADO와 동일한 설계 패턴을 따르기 때문에 ADO 개발자는 로 이동할 때 쉽게 전진할 수 있습니다.NET 프레임워크

「 」를 참조해 주세요.

레퍼런스

외부 링크