많은 SQLXML의 내용을 보셨네요. 이번에는 실제로 SQLXML을 구성해보고..

여러가지 방식의 실제 XML데이터를 불러 보는 테스트를 해 보도록 하겠습니다.

미리 조금더 말씀 드리자면...

이 IIS에 XML지원 구성을 설정한후.. 데이터를 불러 보고.. 자시고 하는 것이..

전부는 아닙니다. 잊지 마시길 바랍니다. ^_^

 

먼저 자료실 이곳에서.. SQLXML2.0을 받아 설치 하세요. ^_^

자료실의 SQLXML2.0_한글_영문

그리고.. Nwind 샘플코드 를 받으세요.  그리고 c:\nwind에 압축을 풀어 두세요.

 

자신의 SQL서버가 한글버젼이면.. 한글(KOR)을.. 영문이면 영문(ENG)를 설치 하세요.

그러면? 다음처럼 프로그램에 SQLXML2.0이 추가되어 있을 것입니다.

네..

수행하시고.. 

IIS에서 SQLXML 지원을 위한 설정을 해 보겠습니다.

이렇게 가상 디렉터리를 선택합니다.

 

일반 설정 화면입니다. 가상디렉토리 이름은 저처럼 nwind라고 하시고..

로컬 경로를 코난이처럼.. 적절하게.. 하나의 디렉토리를 생성 하시고..

해당하는 디렉토리를 지정해 주세요. - 코난이는 C:\에 nwind라는 폴더를 생성후

이 폴더를 지정했습니다. - 여기에 저희의 샘플 폴더를 둘 것입니다. ^_^

 

적절한 보안 옵션으로.. 코난이는 저렇게.. 다음으로 로그온 하게 했습니다.

실제 프러덕션 서버에서는 적절한 보안 권한을 줘야 하겠지요. 보시기엔 단순한듯

하지만 여기서 적절히 조합하여..  트러스트된 모델 / 가장 / 위임 모델을 사용할

수 있으니 적절히 자신의 프러덕션 서버에 맞게 보안을 설정 하시면 됩니다.

 

데이터 원본을 지정 하셔야 합니다. - 코난이의 경우는 이렇게..

서버명이 KONAN입니다. - 자신에게 맞게 넣으시고.. 사용할 데이터베이스는..

이렇게 Northwind 데이터베이스를 선택 했습니다.

 

설정탭의 지정 입니다.

먼저.. 첫번째 sql = ..  이녀석은.. URL쿼리를 의미합니다.

간단히 설명 드리면.. 인터넷 익스플로러의 URL주소 넣는 곳에다가..

 

http://IISServer/VirtualRoot?sql=SELECT FirstName, LastName FROM Employees&root=root

 

이런식의 ?sql=SELECT ... 구문을 이용하는 것을 말합니다. - 수행안됩니다. ^_^;;

따악~~~ 보시기에도? 사용 안하게 될것 같다는 느낌을 받으실 겁니다.

테이블이름 / 컬럼 이름 등의 DB구조가 그대로 보이게 되기 때문이지요. ^_^

보통 이 가상디렉토리 구성이 절적하게 잘 되었는지 확인할 경우에만 사용하는

테스트용도 입니다.  앞에서도 언급 드렸지만.. 

주로 사용하게 될 녀석은 template 이라는 녀석이지요.

 

아래. updategram에 대해서.. 라는 녀석은 비활성화가 되어 있는데요.

데이터 수정작업을 하는 녀석이며 바로 뒤에서 상세히 보실 것입니다.

이때 URL쿼리 허용을 체크하면 자동으로 비활성화 됩니다.

이녀석은.. 데이터 수정에 종종 사용되는 updategram 역시.. URL입력을 통해서

처리할 수 있는데요.. 이녀석을 가능하게 / 불가하게 설정하는 것입니다.

역시나 거의 사용하실 일 없을 것입니다. ^_^

대부분 파라미터를 보내서 템플릿으로 처리하게 될 테니까요. ^_^

 

템플릿 쿼리 허용인데요.. 이녀석이 재미난 녀석이지요.. 예를들어..

 

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
    <sql:query client-side-xml="1">
        SELECT top 2 FirstName, LastName
        FROM Employees
        FOR XML AUTO
    </sql:query>
</ROOT>

 

이렇게 하나의 XML 문서를 생성합니다. 여기서는 MyTemplate.xml

이라고 생성했다라고 가정합니다.

분명히 XML문서이며.. 보시는 바와 같이..

내부에는 Query라는 이름공간과 함께 SELECT 구문으로 이루어진 쿼리가 되어 있지요.

이XML을 호출할 경우는? 

 

http://localhost/virtualroot/templatevirtualname/MyTemplate.xml

 

이렇게 적절히 자신에게 맞게 적어 주면? 해당하는 템플릿 내부에 있는

SQL질의가 수행되어서 그 결과만!!! 사용자에게 리턴 됩니다.

이때 templatevirtualname 이라는 폴더가 바로 위에서 설정한 가상이름이며..

물리적인 폴더는 아니라는 것입니다. - 구별하는 것일 뿐이지요. - 코난이 이것때문에

처음 SQLXML공부할때 마니 해맸답니다. ^_^;;;

URL쿼리는 사용자에게 테이블 / 컬럼 등을 숨길 수 없지만.. 이 템플릿은?

URL은 단지 호출의 용도이므로 해당하는 쿼리를 숨길 수 있는 장점이 있지요.

물론 파라미터를 적절하게 이용 하셔서 이 템플릿에 전달 할 수도 있으며

저장 프로시져로 구성된 템플릿 XML문서를 호출할수도 있습니다.

 

XPath허용이라고 된 녀석은..

XML데이터를 조회하는 하나의 쿼리이며 계층형 구조로 된 XML문서의 데이터를

추출할 수 있다. 주로 스키마(Schema)와 함께 사용되게 되며 파라미터를

넘겨받은 후 템플릿에서도 해당하는 값의 리턴을 위해 종종 사용하게 될 것이다.

예를들어 본다면.. 다음과 같은 XML데이터가 있다고 가정해 보겠슴당.

 

<?xml version="1.0"?>
<Order OrderNo="1234">
    <OrderDate>2001-01-01</OrderDate>
    <Customer>Graeme Malcolm</Customer>
    <Item>
        <Product ProductID="1" UnitPrice="18">Chai</Product>
        <Quantity>2</Quantity>
    </Item>
    <Item>
        <Product ProductID="2" UnitPrice="19">Chang</Product>
        <Quantity>1</Quantity>
    </Item>
</Order>

 

이렇게 된 데이터의 XML 계층 모식도를 그려 본다면?

 

대충 이런 XML 노드 트리를 볼 수 있습니당...  이렇게 계층화된 구조에서..

만약 Customer 노드를 포인팅(선택) 하고 싶다면?

 

/child::Order/child::Customer

 

이렇게 하면? 선택이 가능해지며.. 이는 또한 약식 표현이 가능하고..

 

 

/Order/Customer

 

게 약식으로 표현할 수 있어 집니다. 물론 대부분의 경우 약식 표현을 주로 사용하게 될겁니다.

자.. XPath에대한 상세한 사항은?

http://www.w3c.org/TR/xpath

부분을 조금더 참고해 보시길 바랍니다. - 다른 책을 보시는 것도 도움 되실 겁니다. ^_^

 

POST는 넘어오는 값에 대한 설정이며 KByte단위로 값을 설정 가능합니다.

 

클라이언트에서 실행은 SQLXML2.0의 새로운 기능으로

XML문서의 형식화(Formatting)을 클라이언트에서 처리되게 합니다.

 

런타임 오류를 HTTP오류로 노출 은..

체크가 되었다면 템플릿과 같은 처리 수행시의 오류를 HTTP에러 코드로 리턴하게 됩니다.

만약 체크가 안되었다면.. HTTP 성공 코드가 리턴되며 에러는.. 클라이언트가 XML

문서를 내부적으로 처리하는 도중에 발생하게 됩니다. - 체크 안된게 기본값입니다.

 

dbobject를 생성합니다. 이름은 dbobject로.. 형식과 같게 잡았습니다.

이 dbobject는 주로 바이너리 데이터를 추출할 경우에 사용되며 XPath와 함께 

사용 됩니다... 흠흠.. 잠시후 약간 뒤에서 샘플로 확인해 보도록 하지용. ^_^

Northwind DB의 낸시의 얼굴을 보신적 있으신가요? ^_^ - 곧 보게 되실 겁니다. ^_^

바로 Northwind데이터베이스의 Image형으로 된 Bitmap이미지 형식으로 되어 있지요.

여기의 내용을 XML의 dbobject로 호출해 볼 것입니다.

 

이스키마와 템플릿이라고 하는 녀석은 해당하는 폴더에 이 화일들을 처리할

수 있도록 설정하는 것입니다. 잠시후에 템플릿과 스키마를 찬찬히 이용해 

볼 것입니다. ^_^

이렇게 각각의 형식으로 형식과 같은 이름의 현재 폴더를 참조하는 . 경로로

가상 이름들을 생성했습니다.

 

으음.. 다음으로 고급 탭입니다. ^_^

주로 개발단계에서 사용될 캐싱을 끄거나.. 만약에 서드파티 업체에서 제공하는

ISAPI 필터를 이용하실 경우에는 해당하는 DLL을 재링크 하도록 할 수 있지요.

 

자!! 작업을 마치시고!!! 확인을 누르시면?

대충 이런 화면과 함께~~ 하나의 가상 디렉토리가 잘 구성된 것을 보실

수 있을 것입니다. - 가상디렉토리 하나 생성하기 힘들지요?

만약 이 가상디렉토리를 고객사에 세팅해야 하는데.. 고객 사이트가 100군데입니다.

어떻게 하면 될까요? ^_^

 

이런 고민을 해결하기 위해 제공하는 프로그래밍 개체가 있으며..

IIS Virtual Directory Management for SQL Server Object Model

이라는 이름의 거창한 녀석입니다. 지금 설정한.. 이 가상디렉의 이름 / 경로 / 

설정옵션 / 보안.. 이런 것들을.. 마우스로 할 필요 없이.. VB로 다가닥~~ 해서

끝낼 수 있지요.

자 보시는 바와 같은 여러 개체들이 있습니다. ^_^

뭐.. 상세한 부분은 MSDN을 살펴 보시고.. 저는 제공되는 아주 유용한

풀소스 하나를 보여 드리지요. ^_^

 

Set ObjXML = CreateObject("SQLVDir.SQLVDirControl")
ObjXML.Connect 'Connect to the local computer and Web site "1"

Set ObjVDirs = ObjXML.SQLVDirs
Set ObjVDir = ObjVDirs.AddVirtualDirectory("nwind")

'General tab in UI
ObjVDir.PhysicalPath = "C:\Inetpub\wwwroot\nwind"

'Security tab in UI
ObjVDir.UserName = "UserName" 'SQL Server login
ObjVDir.Password = "UserPassword" 'SQL Server Password 
'Data source tab in UI
'(local) is default for the SQL Server
ObjVDir.DatabaseName = "Northwind"

'Settings tab in UI
objVDir.AllowFlags = 73 'afURL_QUERIES OR afTEMPLATES OR afXPath

'Virtual Name Configuration tab in the UI
Set objVNames = objVDir.VirtualNames
objVNames.AddVirtualName "dbobject", 1, ""
objVNames.AddVirtualName "schema", 2, "C:\Inetpub\wwwroot\nwind\schema"
objVNames.AddVirtualName "template", 4 , "C:\Inetpub\wwwroot\nwind\template"

'Disconnect from the server.
objXML.Disconnect

msgbox "Done."

 

지금까지.. 설정하신 내용의 이름들과.. 값을 주의깊게 봐 오셨다면?

대강 감이 오실 겁니다. ^_^   이상한 상수값이나 속성은 MSDN을 직접 봐 보세요. ^_^

많은 도움 되시길 바라며.. 계속 이야기를 진행하겠습니다.

 

자.. 이제 이것저것 다 보셨으니.. 샘플을 돌려 보도록 합지요 ^_^

조금 지루하셨죠? ^_^ 쿠쿠..

먼저 URL쿼리 입니다. ^_^

URL 쿼리

수행하시기 전에.. IIS가 수행중인지 확인해 보시길 바라구요.

 

http://localhost/nwind?sql=SELECT+*+FROM+products+FOR+XML+AUTO&root=catalog

 

이렇게 URL쿼리를 한번 던져 보는 것입니당 ^_^

 

기분좋게 이런 화면이 잘 나오시나요? ^_^

잘 안나온다면.. 에러메시지를 잘 봐 보시공.. 적절한 조치를 취하신후

다시 시도해 보시길 바랍니다. ^_^

 

자. URL쿼리를 수행해 보셨으며.. 하나만 더 해보겠습니다.

nwind 폴더의 catalog.xsl화일을 확인하시고...

 

http://localhost/nwind?sql=SELECT+productid,+productname+FROM+products+FOR+XML+AUTO&root=catalog&xsl=catalog.xsl 

 

을 수행해 보시면? 다음처럼 테이블형태로 XSL화일이 적용된 결과를 보실 수 있습니다.

 

음... 열심히 URL쿼리를 설명 드렸으나. -_-;;; 사실 그리 많이 사용하지 않기 때문에..

이정도로만 하겠습니다. ^_^

 

Template 쿼리 수행

다음으로 드릴 이야기는 Template라는 부분인데요..

이 템플릿이라는 부분은.. 바로 이어서.!!!!

정보문화사 - SQLXML프로그래밍책 5장 템플릿강좌

부분을 꼭 봐 보시구요..  사실 이 템플릿이 가장 중요하다고 볼 수 있습니다.

템플릿에 대한 이 강좌로 대신하고 넘어가도록 ~~~ 하겠습니다. ^_^;;

 

XSD - XML 스키마 

이번에는 XML의 스키마라는 부분입니다.

음.. 스키마라는 것은 데이터를 정확히 제약하는 것이라고 설명 드렸습니다.

XML은 그 범용성이 큰 강점입니다. A사에서 B사로 XML문서를 전달해 B사는 이 XML문서를

적절하게 처리하여 DBMS에 넣거나 어플리케이션에서 처리합니다.

이때 만약 A사에서 전달해준 문서에 반드시 B사에서는 필요한 값이 빠져 있거나..

XML요소의 일부 값이 반드시 숫자로 '100' 이라고 와야 하는데.. '100원' 이라는

문자열로 오게 되었습니다. 이럴때 큰 문제가 될 수 있을 것입니다.

이때 만약 XML스키마를 이용해.. 양쪽 회사가 정확하게 XML문서의 여러 요소, 속성을

정의한 스키마를 공유해서 이 스키마를 이용해 XML문서의 유효성을 검사해서

적절하게 각 회사에 맞게 사용가능할 것입니다. 이런 목적으로 사용하는 것이.. 

XSD - XML스키마 이며 XML공부를 일찍부터 해 오신분은? DTD나.. MS에서 사용했던

XDR이 생각 나실 것입니다. 이제 XSD가 표준이니.. 이 XSD를 보시면 되며..

간단히 몇몇 XSD샘플을 봐 보도록 하겠습니다.

간단히 이번에는 디폴트 스키마라고 하는.. 기본이 되는 스키마를 봐 보실 겁니다.

MySchemaT.XML 템플릿 XML화일

 

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
    <sql:xpath-query mapping-schema="MySchema.xml">
        /Employees
    </sql:xpath-query>
</ROOT>

이렇게 간단한 XPath쿼리를 수행하는 XML화일을 생성했습니다.

이 템플릿으로 생성되는 XML문서에 이렇게 스키마 화일을 연결했으며 아래와 같이

스키마 화일을 생성합니다.

MySchema.XML 화일

 

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Employees" >
    <xsd:complexType>
        <xsd:attribute name="EmployeeID" type="xsd:string" /> 
        <xsd:attribute name="FirstName" type="xsd:string" /> 
        <xsd:attribute name="LastName" type="xsd:string" /> 
        <xsd:attribute name="Title" type="xsd:string" /> 
    </xsd:complexType>
</xsd:element>
</xsd:schema>

 

스키마를 포함하는 XML템플릿을 호출 하려면?

아래와 같이 호출합니다.

 

http://localhost/nwind/template/MySchemaT.xml

 

현재는 서버측 스키마화일을 적용 하였으나..

만약 클라이언트측에서 IE를 통한 스키마 화일을 다루실 경우에는 

반드시 IE6.0이거나. 파서가 적절한 버젼이어야 합니다.

.XSD를 지원하는 파서는 MSXML3.0버젼 이상부터 지원하며..

현재 MSXML4.0버젼 까지 나와 있습니다.

 

이 스키마는 대단히 난해합니다. ^_^;;  저야 단순히 제약을 강화한다고.. 만 말씀 드렸지만..

모든 일이 그렇듯이.. 쉽지만은 않겠지요? 이곳에 여러 XSD 주석에 대한 설명이 있으며..

기존 XDR스키마와 매칭되는 부분에 대한 간단한 소개 글이 있으니 참고 하시길 바랍니다.

2.0 XSD Annotation Description SQL Server 2000 XDR Annotation
sql:relation Maps an XML item to a database table. Same
sql:field Maps an XML item to a database column. Same
sql:is-constant Creates an XML element that does not map to any table. The element appears in the query output. Same
sql:mapped Allows schema items to be excluded from the result. map-field
sql:relationship Specifies relationships between XML elements. The parent, child, parent-key and child-key attributes are used to establish the relationship. The attribute names are different:

key-relation
foreign-relation
key
foreign-key

sql:limit-field
sql:limit-value
Allows limiting the values returned based on a limiting value. Same
sql:key-fields Allows specification of column(s) that uniquely identify the rows in a table. Same
sql:prefix Creates valid XML ID, IDREF, and IDREFS. Prepends the values of ID, IDREF, and IDREFS with a string. Same
sql:use-cdata Allows specifying CDATA sections to be used for certain elements in the XML document. Same
sql:encode When an XML element/attribute is mapped to a SQL Server BLOB column, allows requesting a reference (URI) to be returned that can be used later to return BLOB data. url-encode
sql:overflow-field Identifies the database column that contains the overflow data. Same
sql:inverse Instructs the updategram logic to inverse its interpretation of the parent-child relationship specified using <sql:relationship>, Not supported
sql:hide Hides the element/attribute specified in the schema in the resulting XML document. Not supported
sql:identity Can be specified on any node that maps to an IDENTITY-type database column. The value specified for this annotation defines how the corresponding IDENTITY-type column in the database is updated. Not supported
sql:guid Allows you to specify whether to use a GUID value generated by SQL Server or use the value provided in the updategram for that column. Not supported
sql:max-depth Allows you to specify depth in recursive relationships specified in the schema. Not supported

 

그리고 추가적으로.. XSD의 자료형과.. SQL서버간 자료형 매칭 테이블 정보를 보여 드리니..

참고 하시길 바랍니다. - 종종 참고하게 되실 겁니다. ^_^

SQL Server data type XSD data type
bigint integer
binary base64Binary
bit boolean
char string
datetime dateTime
decimal decimal
float double
image base64Binary
int integer
money decimal
nchar string
ntext string
nvarchar string
numeric decimal
real float
smalldatetime dateTime
smallint short
smallmoney decimal
sql_variant string
sysname string
text string
timestamp dateTime
tinyint byte
varbinary base64Binary
varchar string
uniqueidentifier string

간단히 XSD에 대한 부분을 맛을 보았습니다. 뭐.. 사실 관계정의를 XML로 가져가거나..

반드시 하나 이상의 요소나 속성이 오게하는 제약등도 다뤄 보고 싶었으나..

많이 오버하는 부분이 될테니.. 이정도만 하겠습니다. ^_^

 

DBObject 쿼리

아.. 깜빡하고 소개를 안드렸군요.. dbobject에 대한 소개로.. Nancy의 얼굴을 보여

드린다고 했었지요.. - DBObject는 이렇게 이진 데이터를 다룰때 유용합니다.

 

http://localhost/nwind/dbobject/Employees[@EmployeeID='1']/@Photo

 

 

이렇게.. 수행하시면? 이 URL의 XPath쿼리는...

 

SELECT Photo FROM Employees WHERE EmployeeID = '1'

 

이렇게 해석이 되는 것이지요. ^_^

이렇게 낸시의 얼굴을 봐 보실 수 있답니다. - 만약 다운로드가 된다면? BMP화일로

저장하신후 해당 이미지를 열어보시면 됩니다.

 

Updategram

다음으로는.. 간단히.. updategram에 대해서 봐 보도록 하지요.

소개에서 말씀 드렸지만.. 데이터의 수정에 종종 사용됩니다.

수행되는 방식을 간략히 소개해드리면..

적절한 스키마와 연결을 시키고 이어서..

Sync라는 이름공간 사이에.. Before와 After를 두어서.. Before는 이전값 / After는 변환후값을

적절히 처리하는 것이지요. 예를들어 insert라면? After에만 값이 있고 Before에는 값이

없겠지요. Delete라면? Before에만 있으며 After에 값이 없을 것입니다.

또한 적절하게 Before를 이용해 XML의 고유한 동시성 처리 역시 가능해지지요.

간단히 Updategram을 위한 스키마를 생성합니다.

SampleSchema.xml

 

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Customer" sql:relation="Customers" >
<xsd:complexType>
<xsd:attribute name="CustID" 
sql:field="CustomerID" 
type="xsd:string" /> 
<xsd:attribute name="Company" 
sql:field="CompanyName" 
type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>

또한 데이터를 하나 삽입하는.. SampleUpdategram.xml 화일을 생성합니다.

 

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync mapping-schema="SampleSchema.xml">
    <updg:before>
    </updg:before>
    <updg:after>
        <Customer CustID="Konan" Company="Konan Company" />
    </updg:after>
</updg:sync>
</ROOT>

네... 그리고 이어서 다음처럼 URL을 사용합니다.

 

 

http://localhost/nwind/Template/SampleUpdategram.xml 

 

이렇게 수행하면? 이러한 수행화면을 보실 수 있습니다.

 

이렇게 Updategram의 수행 결과 역시 XML로 리턴되지요.

 

만약 실패라면?

이렇게 해당하는 에러를 역시나 XML로 리턴 받을 수 있습니다.

만약 이렇게 수행되는 화면이 안나온다면? SQLXML의 구성중에서 세팅 부분의

updategram관련 부분을 살펴 보시면 됩니다.

 

OpenXML을 이용한 데이터의 수정보다는... 이 updategram이 어느정도의 대세인듯하니..

많은 수행을 쌓아서 자신만의 모듈을 만들어 보시길 바라구요...

 

Bulk XML

자.. 마지막으로 소개해드릴 내용은? Bulk XML이라고 하는... 많은 XML데이터를

SQL서버로 부어야 할 경우에는 이 updategram이나 OpenXML은 적절하지 않습니다.

이럴 경우 Bulk XML이 유용하지요. ^_^

많은 분들이 잘 모르고 계시는데요.. 이 Bulk XML역시 Minimal Logged Operation을

이용해 최고 속도로 데이터를 부을 수 있으며.. 이는.. http://sqler.pe.kr/sql2k/1205.asp

에서 상세히 보실 수 있습니다. ^_^

Bulk XML은 특정한 명령이 아닌.. 컴퍼넌트로 제공됩니다.

VB등에서 적절하게 바인딩을 한후 객체를 생성후 처리하시면 되지요. ^_^

여기서 간단히 Bulk XML샘플을 하나 알아보도록 하겠습니다.

SampleSchema.xml

 

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">

<xsd:element name="Customers" sql:relation="Cust" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CustomerID" type="xsd:integer" />
<xsd:element name="CompanyName" type="xsd:string" />
<xsd:element name="City" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

 

SampleXMLData.xml

 

<ROOT>
<Customers>
<CustomerID>1111</CustomerID>
<CompanyName>Sean Chai</CompanyName>
<City>NY</City>
</Customers>
<Customers>
<CustomerID>1112</CustomerID>
<CompanyName>Tom Johnston</CompanyName>
<City>LA</City>
</Customers>
<Customers>
<CustomerID>1113</CustomerID>
<CompanyName>Institute of Art</CompanyName>
</Customers>
</ROOT>

 

 

다음과 같은 VB프로젝트를 생성합니다.(nwind폴더에 있습니다.)

이어서.. 다음과 같은 SQL구문과 함께.. VB프로젝트를 수행합니다.

 

 

--데이터를 삽입할 테이블 생성
CREATE TABLE Cust(
CustomerID int PRIMARY KEY
, CompanyName varchar(20)
, City varchar(20)
)

--VB프로젝트 수행

--수행후 데이터 조회
select * from cust

 

그러면 데이터가 조회된 것이 보일 것입니다. ^_^

 

대단히 많은 내용이었군요.. ^_^;; 

오늘은 열심히 .NET 엔터프라이즈 아키텍트를 설치해 보려 했으나.. 안되어..

시간만 날린 하루였군요.. ^_^

냠.. 그래도 어려운 강좌 하나를 마무리 하니 홀가분 하네요. ^_^

당연히 이 강좌의 모든 소스는 제공되니 차근차근 공부해 보시길 바라구요. ^_^

그럼 마지막 XML에 대한 이야기를 조금 더 적어 보도록 하겠습니다.

 


13. XML과 SQLServer2000의 통합 -

                   4. SQLXML사용을 위한 IIS설정





profile

부족하지만, SQLER의 누군가와 함께한 나눔을 통해 제가 더 많이 즐거웠습니다.
SQLER와 함께 즐거워 할수록, 그 나눔을 통해 더 많은 기회와 가치를 발견하게 되었습니다.
나눔의 생각이 앞으로도 계속, SQLER를 움직일 것입니다.

코난, 김대우 / SQLER 운영자 / 골라먹는 SQLER RSS 정보 구독 / 실시간 SQLER 소식 uxkorea 트위터