티스토리 뷰

반응형

= devpia 강좌란에서 퍼온 자료임 =

 

 

 

안녕하세요.. 

이금우 입니다.

저번 2번의 강좌에 이어 이번에도

XML 을 다루는 비베 프로그래밍을 해보겠습니다.

먼저 이번에는 ADO 2.5가 필 수 이구요.. 2.0은 안됩니다.

그리고 XML 파서를 위해서

익스플로러 5.0 이상이 설치 되어 있어야 합니다.

SQL 서버 혹은 mdb 도 괜찮구요..

이러한 것이 준비가 되어 잇어야 합니다

비졀베직은 당근 있어야 겠지요.. ^^

이번 강좌에서 해볼 내용은 SQL 서버에 있는

Pubs 라는 데이터베이스로에 있는 

Authors 테이블의 내용을 XML파일로 생성하는 겁니다. 

그럼 강좌를 시작하겠습니다.

참고로 본 강좌는

MSDN 온라인 컬럼을 참고로 제작하였습니다.

===============================================================

ADO 2.5 을 사용해야 하는 이유가 있습니다..

Microsoft ADO(ActiveX Data Objects) 2.0은

Recordset 개체를 파일에 쓰거나 

읽어 올 때 모두 ADTG(Advanced Data Table Gram) 형식으로

저장할 수 있습니다. 이 기능을 사용하면

Recordset을 디스크 파일에 저장했다가

나중에 파일에서 다시 열어 볼 수 있습니다.

ADO 2.1은 Recordset 개체를 XML 형식으로

저장할 수 있게 함으로써 

Recordset 저장을 확장했지만 제한된 XML 지원 때문에 계층적 

Recordset 개체나 변경이 보류된 Recordset 개체의 저장을 지원할 수 없었습니다.

ADO 2.5의 XML 지원은 이러한 제한을 없앴습니다. 더욱이 ADO 2.5는 ADO Stream 

개체, IIS 5.0 Response 개체, XML DOM Document 개체 등 IStream을 지원하는 

모든 개체를 XML 및 ADTG 형식으로 저장할 수 있습니다. 뿐만 아니라, 이번 릴리스

에서는 Internet Information Server(IIS) 5.0에서 ADO 2.5와 ASP(Active 

Server Pages), RDS(Remote Data Service) 2.5와 ASP의 통합을 기본적으로 제공합니다


Recordset 저장은 Microsoft® OLE DB Persistence Provider를 통해 ADO

(ActiveX® Data Objects)에 구현되어 있습니다. 이 제공자는 저장된 XML 파일이

나 ADO에 의해 생성된 스키마 정보가 포함된 스트림에서 전달 전용, 읽기 전용 행 집합을 생성합니다. 마찬가지로,

이 제공자는 ADO Recordset을 가져와, XML을 생성하고, IStream 인터페이스를 구현하는 파일 또는 개체에

이를 저장할 수 있습니다. (실제로 파일은 IStream을 지원하는 개체의 다른 예입니다.) ADO 2.5는 XML을 

Recordset으로 로드하기 위해 Internet Explorer 5에 포함된 파서를 사용하므로 Msxml.dll이 필요합니다.

ADO 2.0과 2.1은 플랫 파일로만 Recordset을 저장할 수 있었으나, ADO 2.5에서는 Recordset 개체를

IStream 인터페이스를 구현하는 모든 개체로 저장할 수 있습니다. 이러한 개체 중 하나가 ADO 2.5의

새로운 Stream 개체입니다. Recordset 개체를 저장하고 로드할 수 있는 IStream 구현을 작성하면 비동기 반입이나

프리 스레딩을 지원할 필요가 없습니다. Recordset 개체를 IStream 개체에서 로드할 때는 비동기 모드에서 로드할 수 없습니다. 

데이터를 XML로 저장하고 다시 로드하는 가장 쉬운 방법은 ADO를 사용하는 것입니다. 

다음에 Visual Basic 코드 예제는 Authors 테이블의 데이터를 Authors.xml 라는 

파일로 저장하는 것을 보여 줍니다.

===============================================================
Dim rs As New Recordset
Dim rs2 As New Recordset
Dim c As New Connection
Dim s As New Stream


Private Sub Command1_Click()

On Error GoTo ErrTrap

    "저자 테이블을 쿼리 합니다.
    c.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User 
ID=xxx;Initial Catalog=pubs;Data Source=xxxx"
    rs.CursorLocation = adUseClient
    rs.Open "select * from authors", c, adOpenStatic

    "XML 형식으로 파일에 저장합니다. adPersistXML  을 지정하지 않으면
    "기본적으로 이진 형식 (ADTG)이 사용됩니다.
    rs.Save "Authors.xml", adPersistXML

    "Recordset 을 ADO Stream 개체에 저장합니다.
    rs.Save s, adPersistXML
    rs.Close
    c.Close

    Set rs = Nothing

    MsgBox "문서 생성 성공 "
    Exit Sub

ErrTrap:
    MsgBox Err.Description
    
End Sub

==============================================================

위와 같이 코딩 하신후 실행하시면..
(물론 디비 커넥션 부분의 프로바이더는 자신의 환경에 맞게 셋팅 하셔야 겟지요..)

실행하신후 버튼을 클릭하시면 Authors.xml 이라는 이름을 가진 녀석이 생성이 됩니
다.

그러면 그 화일을 더블클릭 혹은 익스플로로에 드래그앤드랍 하시면 
일반적으로 익스에서 xml 화일을 볼때와 같은 모습을 보실수 있습니다..

생성된 xml 화일을 살표 보면 xml 문서 자체에
테이블의 어트리뷰트(속성)에 대한 정보를 상단에 답고 있고요..
하단부에 그 데이터(row)로 가지고 있습니다.

기분 안 좋으세요 ?..

성공하시길 바랍니다..다음 내용은 C/C++ 에서 OLEDB 행 집합 저장이네요.. ^^

그럼 담번에 뵙도록 하겠습니다..

위와 같이 하시면

블로그코리아에 블UP하기

반응형
댓글
반응형
05-18 14:50
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함