C++Builder ADO Programming (1) - ADO의 개념

Similar documents
초보자를 위한 ADO 21일 완성

C++Builder ADO Programming (5) - ADO Transaction, Errors

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Microsoft PowerPoint - chap01-C언어개요.pptx

DBMS & SQL Server Installation Database Laboratory

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

FileMaker 15 ODBC 및 JDBC 설명서

FileMaker ODBC 및 JDBC 가이드

RHEV 2.2 인증서 만료 확인 및 갱신

Windows 8에서 BioStar 1 설치하기


쉽게 풀어쓴 C 프로그래밊

C++Builder ADO Programming (6) - Dive to TADOCommand

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

JVM 메모리구조

Microsoft Word - src.doc

컴퓨터관리2번째시간


목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

JAVA PROGRAMMING 실습 05. 객체의 활용

C++ Builder ADO Programming (3) - ConnectionString Core

untitled

untitled

untitled

윈도우시스템프로그래밍

PowerPoint 프레젠테이션

Windows 10 General Announcement v1.0-KO

[Brochure] KOR_TunA

MVVM 패턴의 이해

단계

PowerPoint Presentation

Microsoft PowerPoint - Windows CE Programming_2008 [호환 모드]

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

윈도우시스템프로그래밍

Network Programming

ALTIBASE 사용자가이드 Templete

SIGIL 완벽입문

2 단계 : 추상화 class 오리 { class 청둥오리 extends 오리 { class 물오리 extends 오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim();

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

untitled

<31302DB1E8BDC2B1C72E687770>

TTA Journal No.157_서체변경.indd

금오공대 컴퓨터공학전공 강의자료

목차 데모 홖경 및 개요... 3 테스트 서버 설정... 4 DC (Domain Controller) 서버 설정... 4 RDSH (Remote Desktop Session Host) 서버 설정... 9 W7CLIENT (Windows 7 Client) 클라이얶트 설정

쉽게 풀어쓴 C 프로그래밍

Web Application Hosting in the AWS Cloud Contents 개요 가용성과 확장성이 높은 웹 호스팅은 복잡하고 비용이 많이 드는 사업이 될 수 있습니다. 전통적인 웹 확장 아키텍처는 높은 수준의 안정성을 보장하기 위해 복잡한 솔루션으로 구현

<B3EDB4DC28B1E8BCAEC7F6292E687770>

어댑터뷰

Microsoft Word - 문필주.doc

Dialog Box 실행파일을 Web에 포함시키는 방법

대규모 자바스크립트 웹어플리케이션개발하기 with BackboneJS and RequireJS 넷스루개발 2 팀이병주

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2000) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2000 Exchange Server 2003 GFI MailEssentials 14 for

PowerPoint Presentation

JDBC 소개및설치 Database Laboratory

제8장 자바 GUI 프로그래밍 II

PCServerMgmt7

Chap7.PDF

Microsoft PowerPoint - 권장 사양

슬라이드 1

Microsoft SQL Server 그림 1, 2, 3은 Microsoft SQL Server 데이터베이스소프트웨어의대표적인멀티플렉싱시나리오와라이선싱요구사항을나타냅니다. ( 참고 : Windows Server와 Exchange Server CAL 요구사항은해당서버에대

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

Windows Live Hotmail Custom Domains Korea

목 차 DEXTUpload Pro 소개 시스템 요구 사항 기능 및 특징 시스템 구성도 벤치마킹 적용 효과 유지보수 안내 담당자 안내

이 드리는 혜택 완벽 을 위한 발환경 : Team Foundation Server 200 & CAL 제공 최저의 비용으로 구현을 위해 Visual Studio Team Foundation Server 200 서버 라이센스와 CAL이 에 포함되어 있습니다 을 모든 팀원이


JAVA PROGRAMMING 실습 08.다형성

vRealize Automation용 VMware Remote Console - VMware

untitled

arcplan Enterprise 6 Charting Facelifts

untitled

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

C# Programming Guide - Types

제11장 프로세스와 쓰레드

Spring Boot

PowerPoint Presentation

제목을 입력하세요.

PowerPoint Presentation

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

View Licenses and Services (customer)

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

로거 자료실

Microsoft SQL Server 2005 포켓 컨설턴트 관리자용

SANsymphony-V

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

03. ADO 닷넷 ADO 닷넷이란? ADO(ActiveX Data Objects) 의닷넷버전 비연결방식 (Discected Mdel) 제공 데이터베이스와연결후필요한데이터를가져온후에, 접속을바로끊고나서도데이터를계속해서처리할수있는방법이필요 자원을계속많이확보가능 자료의처리

ALTIBASE 사용자가이드 Templete

sms_SQL.hwp

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

歯부장

PowerPoint 프레젠테이션

Windows Server 2012

Corporate PPT Template

Cloud Friendly System Architecture

Microsoft PowerPoint - 04-UDP Programming.ppt

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Level 학습 성과 내용 1수준 (이해) 1. 기본적인 Unix 이용법(명령어 또는 tool 활용)을 습득한다. 2. Unix 운영체계 설치을 익힌다. 모듈 학습성과 2수준 (응용) 1. Unix 가상화 및 이중화 개념을 이해한다. 2. 하드디스크의 논리적 구성 능력

thesis

Transcription:

C++Builder ADO Programming (1) ADO 의개념 ADO 란? 1. ActiveX Data Object 의줄임말로 Microsoft 사의최신데이터접근기술을말한다. 2. OLEDB 에기반한고수준인터페이스이다. 고수준의인터페이스이므로 OLEDB 보다훨씬간단한객체모 델을가지며 OLEDB 의복잡함을감추고기능들만을노출시킨일종의래퍼 (wrapper) 라할수있다. OLEDB 란? 1. Microsoft사의 UDA(Universal Data Access) 전략에핵심이되는아키텍쳐로 COM 기반의저수준프로그래밍인터페이스이다. 2. 조직의모든부분들로부터얻을수있는데이터에대한접근을제공한다. 좀더자세하게는데이터소비자와데이터공급자라는두가지구성요소를이용해서데이터원본에대한연결성, 접근성을제공한다. 3. 클라이언트 / 서버나웹기반어플리케이션들은데이터를사용하는입장에서데이터소비자가된다. 데이터공급자는데이터원본들로부터데이터를얻고정보를해석하고그것을공용인터페이스를통해데이터소비자에게제공하는역할을한다. 여기서데이터소비자는데이터가어떻게접근, 처리되는지를알필요가없으며그러한기능은 OLEDB 자체에숨겨져있다. 4. OLEDB에깔린개념은 ODBC에깔려있는것과비슷하다. 그러나 OLEDB는 ODBC보다훨씬더넓은범위의데이터원본에접근할수있게해준다. OLEDB는 ODBC를통한데이터연결을지원하므로 ODBC 의모든능력들을제공한다. 따라서하나의 OLEDB 층을만들어두고기존의 ODBC 연결들을통해서기존 Database들에연결할수도있다. 이말은데이터소비자인어플리케이션은 OLEDB 공급자로 ODBC 에접근할수있다는말이며이때가능하면단일한 OLEDB 층을통하는것이더효율적이라는것을말한다. 5. 여기서중요한것은 OLEDB는관계형데이터베이스뿐만아니라비관계형데이터원본들 ( 전자우편이나스프레드시트, 디렉터리서비스, 파일시스템등등 ) 을포함한모든종류에대한데이터에대한고성능접근방식을제공한다는점이다. 이는 ODBC만으로는얻을수없는능력이다. OLEDB를이용하면간단하고표준적인수단을이용해서다종다양한정보에접근하고정보를조회, 조작할수있기때문에 ( 이것이 Microsoft의 UDA전략이다 ), OLEDB는 Microsoft가이전에제시한 DAO나 RDO( 이미물건너간기술이다 ) 같은데이터접근기술및전략보다훨씬나은것이라고할수있다. 6. 아래의그림 1-1 은위에서설명한내용을요약하여잘보여주고있다.

여기서 RDBMS는흔히 ORACLE, MS-SQL Server 정도가될수있으나별말을하지않은경우앞으로계속 MS-SQL Server를대상으로설명하는것으로한다. ORACLE은 MS-SQL Server와는근본적으로다른 RDBMS이고그에대한내용또한방대하므로상황에맞게주를달거나별도의장에서설명하기로한다. 훌륭한로컬 Database중의하나인 Access의경우도그럴것이다. ADO 객체모델 일단위에서 ADO가개발자들에게 OLEDB를사용하여데이터베이스프로그래밍을하기위한효과적인인터페이스를제공하며 COM 기반의 ActiveX 데이터객체들의집합이라는것을알았을것이다. 이말은즉스크립트언어를사용하는웹환경에서의개발뿐만아니라 C++ Builder와같은 4GL RAD 툴들을사용하는전통적인개발환경에서도 ADO를사용할수있다는말이된다. 실제로 C++ Builder에서 OLEDB 기술을사용하기위해 ADO탭에총 7개의 VCL화된 Component가있다. ( 정식명칭은 ADO Express Component이다.) 여기서는 COM 에기반한 ADO 자체의객체모델과 C++ Builder 내에서 VCL 화된클래스구조를살펴보기로 하자. ADO 버전 2.5를기준으로했을때 ADO는위그림과같이총 5개의클래스 ( 직사각형이클래스이다 ) 와여러컬렉션들과 Property, Method, 또이그림에서는소개되지않았지만여러이벤트들로구성되어있다. 이것들은이후의장에서자세하게설명될것이며어떻게 C++ Builder 내에서 VCL화되어있으며서로어떤관련이있는지또어떻게사용해야하는지를필자의코드와개발경험을통해설명할것이다. ADO 2.5는 windows 2000 Server를설치할때자동적으로함께설치되고 MS-SQL Server 2000을설치하게되면 2.6 버전이설치된다. 필자가이강의를진행하는시점에서벌써 MDAC 2.7 버전이발표되었고 ADO 또한 2.7 버전으로업그레이드가되었다. 하지만여기서는버전 2.5를기본으로강의가진행될것이다. 업그레이드된내용과아울러추가된내용을알고싶은분들은 Microsoft의홈페이지를참고하길바란다.

관련링크는 http://www.microsoft.com/data/ 이며여기에서마이크로소프트의최신데이터접근기술들과각종기술지원및그들의 UDA 전략을알아볼수있을것이다. 위의직사각형들은본질적으로 COM의클래스모듈이므로그것들의 CLSID(Class Identifier) 또는 IID(Interface Identifier) 와 VCL화된 Component의상호관계를알아보는것도좋을것이다. 직사각형이름 CLSID or IID VCL Component Connection ADODB.Connection TADOConnection Command ADODB.Command TADOCommand Stream ADODB.Stream ADO 탭에존재하지않는다 Record ADODB.Record ADO 탭에존재하지않는다. Recordset ADODB.Recordset TADODataSet TADOTable TADOQuery TADOStoredProc 다음은 VCL 클래스계층구조이다. ( Developer s Guide 에서참조 ) 위의표와그림에서중요한부분은 ADODB.Recordset 클래스가 VCL Component에서는 4개의 Component 로각각사용될수있다는것이다. 그림을보면이중에서 TADOTable, TADOQuery, TADOStoredProc Component들은 C++ Builder의 Data Access 탭에있는 TTable, TQuery, TStoredProc 와기본적으로같은성격을가지는 Component들임을쉽게짐작할수있다. 이들은모두 TDataSet으로부터파생된클래스이기에당연한이야기이며 ( 실제로 TTable, TQuery, TStoredProc 들은각각 TDataSet --- TBDEDataSet --- TDBDataSet 의계층구조를가진다 ) 따라서그들은 TDataSet의모든특징들을공유한다. 이말은어플리케이션내에서 TTable, TQuery, TStoredProc를사용해프로그래밍을한것처럼이들 3개의 Component들도거의비슷하게별무리없이사용할수있다. (Data Controls 탭의 Component들과 TDataSource Component 를이용하여데이터를표현, 조작할수있다는말이다 ) 미리말해두지만이파트의강의에서는앞의 TTable, TQuery, TStoredProc 들과 TDataSource, Data Controls 탭들의 Component들을사용하는프로그래밍방법

을자세하게설명하지는않을것이다. ( 여러개의폼과데이터모듈을포함하는일반적인 Win32 Database Application을말하는것이다. 하지만중요한코딩기법은미리말을하고소개가될것이다 ) 이것은어떻게보면너무많이언급된문제와방법들로서대부분의책이나매뉴얼에아주자세하게설명되어있다. 그리고그것에대한사항은다른파트에서자세하게다룰것이다. 아무튼이파트는 Microsoft사의 Windows DNA라는하부구조와 Multi-tier 내에서 Enterprise급의어플리케이션을개발할때 C++ Builder로 ADO Programming 방법론을한번고찰해보고그것에초점을맞출것이다. 그리고또한가지중요한부분은 ADO 탭에 Component가존재하지않는 ADODB.Record 와 ADODB.Stream 객체이다. 이두가지객체는 ADO가비관계형이나반구조적데이터에접근, 조작, 관리하기위해버전 2.5부터추가된객체들이다. ADODB.Record 객체는주로파일시스템이나디렉터리구조들에대한접근성을제공하는객체이고 ADODB.Stream 객체는단순한파일 I/O 기능뿐만아니라말그대로데이터를영속화시키는작업들 ( 주로 VCL의 TPersistent나 TStream 객체들과비슷한일을한다 ) 을한다. 이객체들은아주막강해서별도의다른 Component 없이 ADO만으로도 Local 내지는 Remote 컴퓨터상의파일시스템에접근 ( 대체로 URL을통해서 ) 하고그파일시스템을관리 ( 파일시스템의내용을알아내거나파일의복사, 이동, 삭제 ) 할수있게해주며파일을읽고쓰며 ( 파일 I/O 기능 ) 데이터를영속화하거나메모리상에서의직접전송도가능하게하는아주막강한객체이다. 필자가생각하기에이 Component가 ADO Express에추가되지않은것은매우안타까운일이라고생각한다. (ADO Express Component를제작할때이전 ADO버전이반영되지않았나어설프게추측해보며다음버전의 ADO Express 와 C++ Builder 6 에는반드시두객체가추가되기를바란다. 그러나당장아쉬운대로 5에서변통할수있는방법은설명도할것이다. 또한이기능들은전통적인개발툴엔당연히존재하는장점이기도하다.) Database에연결하여데이터를관리조작하는작업들은나머지 Component들의몫이다. TADOConnection 와 TRDSConnection 객체는연결에관계하고 TADOCommand는명령을데이터베이스에전달하며, ADO 객체모델의핵심인제일중요한 TADODataSet은말그대로데이터레코드셋이다. ( 미리얘기한대로앞에서거론한 3개의레코드셋 Component들은자주사용하지않을것임을알려둔다 ) 그러면 ADO를 C++ Builder Database Application 의아키텍쳐모델로사용하게될경우어떤장점을얻게되며또불리한점은무엇이있는지알아보자. ADO 를사용할때장점 (Developer Guide 에서참조 ) 솔직히이 ADO라는데이터베이스접근아키텍쳐는인터넷과어플리케이션서버들, 그리고 COM을사용할때적합하다. 열거해보면, 1. BDE를대체할수있다. 즉어플리케이션작성시, Borland Database Engine을사용할필요가없다는것이다. 특히어플리케이션을배포할때상대적으로무거운부분을차지하는 BDE를추가하지않아도되는사실에공감하는개발자들도많이있으리라본다. 2. 인터넷에적합하고배포가쉽다. 단적으로 Microsoft의웹서버인 IIS 상에서돌아가는스크립트언어인 ASP에서같은회사의 Database(Access, MS-SQL) 를접근, 조작하는데많이사용되고있고설정도스크립트내에서직접사용되거나 include 되는방법으로또는간단한 ODBC DSN Setting으로이루어진다. 그사항은 C++ Builder Database Application들 ( 일반 Win32 Application, ISAPI, ActiveX Server, Asp Object등등 ) 에도같이적용된다. 3. 서류가방모델과 XML을지원한다. 이것들은이후의장에서아주비중있는이슈로서아주자세하고밀도있게구체적인코드와함께설명될것이다. XML의잠재력과가능성에대해서언급하는것은바보스러울정도이다. 이미이기술은거의모든벤더들에의해서채용되고있으며국제적인표준으로서광범위한지원을받고있다. 이후의장에서 ADO 레코드셋을 XML로영속화시키고 XML을레코드셋으로불러들여작업하는방법이나클라이언트에전송하는방법, 서류가방모델의핵심구조인단절된레코드셋에서 XML을사용하는방법이나서버객체내에서사용하는문제등, Multi-tier 환경에서 Enteprise급어플리케이션을작성할때유용한방법들을살펴볼것이다.

4. OLE Database( 예를들면 Access 나 MS-SQL) 에연결, 접근하는경우 BDE 보다나은성능을제공한다. 아마도같은회사에서만든것이니그럴것이라고생각할뿐이다. 흥미있는사람은테스트를해보아도좋을것이다. 적어도 Microsoft는그렇게떠들고있다. ADO 를사용할때단점 (Developer Guide 에서참조 ) 1. 단지 Windows 플랫폼에서만사용가능하다. 당연한얘기이다. 그리고 ADO는지나치게 Microsoft 제품지향적이다. 2. BDE 보다낮은제어성을제공한다. BDE Administrator의각 Database들의 Alias 설정들의세부사항들을한번본다면이말이쉽게이해될것이다. 3. MIDAS와같이작동하지않는다. 대신 ADO 내에는 RDS 기술이라는것이있다. RDS는 MIDAS와비슷한분산환경에서의개발기술로이후의장에서설명하기로한다. 4. OLE Database Provider들이항상신뢰성있고만능은아니라는점이다. 이것은 ADO를개발과정에아키텍쳐로도입하기전에항상그적합성을체크해보아야한다는이야기이다. ORACLE과 SYBASE등다른비 Microsoft 계의 RDBMS와 ADO와의궁합이대표적인사항이될것이다. 이것역시이후의장에서알아보기로하자. 이상 ADO의장점이나단점에대해서몇가지정도를알아보았다. 어느기술이더좋다또는어떤접근방법을채택하는것이더좋다라는사실에관한논의는이장의목적이아니다. 하지만그것은프로젝트나개발에들어가기앞서신중하게고려해야되며실제개발에들어갔을때의추가적인부담에관여한문제이다. 굳이자신의효과적인방법이있는데도불구하고무리하게새로운기술을배우고적용하는문제에욕심을낼필요는없으며또한반대로더나은방법이있는데에도불구하고그것에대해관심을가지지않는것도개발자의올바른태도가아니라고생각한다. 여기서중요한것은단지 ADO라는기술이있으며여러분은 아이런접근방식도있구나 하고한번보는것, 경험을늘려가는것이중요한것이라고생각한다. 최근에현실적으로업계의주도자인 Microsoft는 ADO의.Net 버전인 ADO.Net을소개했다. Microsoft는누군가는세상을이끌어야한다며개발자들을레밍처럼절벽으로막몰고있는데그런점에서본다면이강의는약간우울한결말이기대되는변주곡의시작일수있다. 하지만같이하다보면혹시알겠는가? 절벽에서점프해날아서다른땅에멋지게도달할수있을지! 시작은짧을수록좋다. 왜냐하면일의반을빨리해치울수있기때문이다. 자, 그럼어서빨리우리의레밍에게 Borland의딱지가붙은아주멋진날개달린신발을주도록하자 ~ = ㅅ =;; Mortalpain