쉬프트-RND 제2011-012호

 

 

 

 

 

 

 

 

 

 

 

 

API GUIDE

SERVER/IX-SERVER for .NET 3.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ã SHIFT Information & Communication Co., Ltd.

Phone 02 464.7676 • Fax 02 464 7234 • www.shift.co.kr

 

Copyright Information

 

©Copyright 2008 SHIFT Information & Communication Co., Ltd.

 

모든 권리는 저작권자의 소유입니다.

 

저자: 쉬프트정보통신㈜

 

이 프로그램의 모든 정보에 대해서는 SHIFT Information & Communication Co. 에서 소유권을 가집니다. 이 정보는 사용제한 및 기밀유지 규정에 포함하는 사용자계약에 따라 제공되며 저작권법에 의해 보호됩니다.

이 소프트웨어를 역 엔지니어링하는 것은 금지 되어 있습니다.

이 설명서의 내용은 사전공지 없이 변경될 수 있습니다.

이 설명서에는 오류가 있을 수도 있으므로 잘못된 내용이 발견되면 서면으로 알려 주시기 바랍니다.  

SHIFT Information & Communication Co.에서는 오류에 대한 책임을 지지 않습니다.

기타 모든 제품들과 회사 이름은 각각 해당 소유주의 상표로서 참조용으로만 사용됩니다.

The copy numbers referenced above should be written into the Copy Number space on the cover of each distributed copy.  If the document is not controlled, you can delete this table and the Copy Number label from the cover.

 

Contents

매뉴얼에 대해서..................................................................................................................................... 1

매뉴얼의 전제 조건........................................................................................................................ 1

매뉴얼의 구성.................................................................................................................................. 1

관련 매뉴얼...................................................................................................................................... 1

일러두기........................................................................................................................................... 2

정의 및 용어정리............................................................................................................................ 2

IXSERVER API 설명............................................................................................................................. 3

IX-SERVER for .NET 3.0 서비스 객체....................................................................................... 3

IXyncBasePage API....................................................................................................................... 4

IIXyncBasePage API................................................................................................................... 71

IIXyncDbHelper API.................................................................................................................. 77

IXyncConnection API................................................................................................................ 87

ServiceLoader API....................................................................................................................... 90

IIXyncService................................................................................................................................ 91

IIXyncRequest.............................................................................................................................. 99

IIXyncResponse......................................................................................................................... 100

IXyncDataSet.............................................................................................................................. 102

IXyncMessageSet...................................................................................................................... 122

IXyncDebugLoger..................................................................................................................... 124

IXyncParameterProperty........................................................................................................ 125

IXyncParameter......................................................................................................................... 126

ActivexRollupFilter.................................................................................................................. 128

IIXyncServiceCall...................................................................................................................... 129

IIXyncQueryStorage................................................................................................................. 133

부록....................................................................................................................................................... 140

IXyncDefine................................................................................................................................ 140

IXyncVariable............................................................................................................................ 142

 

 


매뉴얼에 대해서

본 매뉴얼은 IX-SERVER for .NET 3.0을 사용하여 서비스를 작성하는 개발자을 위한 것입니다.  이 제품은 Microsoft Visual Studio 에서 IXSERVER Framework을 사용하여 서비스를 생성하는 방법을 가이드 합니다.

 

 

매뉴얼의 전제 조건

본 매뉴얼은 IX-SERVER for .NET 혹은 IXSERVER를 이용한 개발절차나 특성등에 대한 충분한 이해를 전제조건으로 합니다.

서비스를 생성하기 위한 API를 가이드 하기 위한 매뉴얼이며, 비즈니스 로직을 설계하고 비즈니스 로직에 필요한 데이터베이스 기반 지식에 대한 이해가 필요합니다.

 

 

매뉴얼의 구성

본 매뉴얼의 각 장은 처음으로 IXSERVER for .NET을 이용하여 개발을 수행하는데 필요한 단계들로 구성되어 있으며 다음 2개의 주요파트로 나누어져 있습니다.

1.       IX-SERVER for .NET 3.0 Server API 설명

2.       IX-SERVER for .NET 3.0 추가 설명

 

 

관련 매뉴얼

본 매뉴얼을 읽기 전에 필요한 문서는 다음과 같다.

문서이름                                                      설명

Xena  Platform  Manual

IXSERVER에서 제공하는 다양한 Component 에 대한 기능을 확인할 수 있습니다.

http://member.shift.co.kr/xena/online/index.html

혹은

제품설치시디의 /Manual CD/03.IXSERVER XenaPlatform Manual 디렉터리에 포함되어 있는 Xena Platform매뉴얼을 참조합니다.

IXSERVER .NET 개발 가이드

IXServerNet30_Developement.doc

 

 

 

일러두기

본 매뉴얼을 읽기 전에 필요한 사항은 다음과 같다.

표기 예                                                         내용

텍스트

본문, 바탕체, Book Antiqua, 10pt

텍스트

본문 내용을 강조

CTRL + C

Ctrl 과 C키를 동시에 누름

namespace IXServerLib {}

.NET 코드

<xml>

XML

도구 메뉴를 연다.

UI에 포함되어 있는 컴포넌트 이름

. . .

생략

…

반복

<<파일이름>>

파일 이름과 번호

그림1

그림 이름과 번호

표2

표번호

http://member.shift.co.kr

참조한 URL

[ ]

메뉴 명이나 버튼 명 등을 나타냄

 

 

정의 및 용어정리

본 매뉴얼을 통해서 자주 볼 수 있는 용어는 다음과 같다.

용어                         설명

VS.NET

VS.NET(Visual Studio .NET)는 .NET Framework의 기능을 활용 하여ASP.NET 웹 응용 프로그램, XML Web Services, 데스크톱 응용 프로그램 및 모바일 응용 프로그램을 빌드할 수 있는 마이크로소프트사의 통합 개발 환경입니다.

IXSERVER .NET

닷넷환경에서 UI프리젠테이션 서비스를 만드는 최적의 솔루션입니다.

 

 

IXSERVER API 설명

IX-SERVER .NET 3.0 버전은 크게 IXyncServiceHandler, IXyncRequestHandler, IXyncResponseHandler 와 이들을 래핑하는 IXyncBasePage 객체로 구성되며, IXyncServiceHandler는 IXyncMessageSet, IXyncResponseHandler, IXyncRequestHandler, IXyncEventHandler와 IXyncServiceSet 객체를 생성 관리한다.

IXyncBasePage 는 IX-SERVER for .NET 3.0의 자체 프레임웍 기능을 제공하는 클래스로내부적으로는 DB Connection을 유지관리하고, 파일처리, 예외처리 등을 담당하고 기본적인 시나리오 템플릿 파일을 구성하는 요체가 된다.

한편, IXyncResponseHandler와 IXyncRequestHandler는 각각 송수신 data 포맷에 맞는 객체를 생성하고 초기화한다. 이때 생성되는 객체는 data 포맷에 따라 다음과 같다.

data 포맷이 CSV30 인 경우는 CSV30Response 와 CSVRequest 객체를 생성하고, data 포맷이 BIN 인 경우는 BINResponse 와 BINRequest 객체를 생성하며, data 포맷이 CSV 인 경우는 CSVResponse 와 CSVRequest 객체를 생성한다.

그러나, 실제 사용자에게 열려있는 객체는 인터페이스를 위주로 하며, 다음과 같은 객체들이 있다.

 

 

IX-SERVER for .NET 3.0 서비스 객체

서비스객체명                 객체설명

IXyncBasePage

IXyncService객체들을 생성하고 관리하며, 예외처리 등을 한다.

IIXyncBasePage

AJAX.NET이나 Atlas 등 IXyncService객체를 이용하지 않는 서비스 저작시 지원을 위한 클래스인터페이스

IIXyncDbHelper

DB Connection을 유지하고 관리한다.

ServiceLoader

서비스를 생성하고 로딩한다.

IIXyncService

IXyncSeviceHandler 객체로 구현된다.

IIXyncRequest

IXyncCommonRequest 객체로 구현된다. CSVRequest, BINRequest, XMLRequest, JSONRequest객체는 IXyncCommonRequest 객체를 상속받는다.

IIXyncResponse

IXyncCommonResponse 객체로 구현된다. CSV30Response, BINResponse, SVResponse, XMLResponse, JSONResponse  객체는IXyncCommonResponse 객체를 상속받는다.

IXyncDataSet

ASP.NET의 System.Data.DataSet을 상속받는다.

IXyncMessageSet

메시지를 보관하는 클래스이다.

IIXyncLoger

IXyncCommonLoger 객체로 구현된다. IXyncDebugLoger, GuaceEventLoger, IXyncMessageLoger 객체는 IXyncCommonLoger 객체를 상속받는다.

IXyncParameter-Property

Parameter의 속성을 관리한다.

IXyncParameter

DB 파라미터를 관리하는 객체로 구현된다.

ActivexRollup-Filter

ActiveX 관련 IE 부분패치에 대응하기 위한 RollupFilter 모듈이다.

IIXyncServiceCall

IX-SERVER 서비스간의 데이터 통신을 지원하는 인터페이스로 IXyncServiceCallHandler 객체로 구현된다.

IIXyncQuery-Storage

IX-SERVER 서비스 작성시에 사용되는 쿼리문을 Xml File 형태로 관리 할 수 있도록 지원하는 인터페이스로 IXyncQueryStorageHandler 객체로 구현된다.

 

 

IXyncBasePage API

PROPERTIES

·      IXyncLoader [ get, set ]

IXync의 서비스를 관장하는 IXyncService객체를 생성해 주는 ServiceLoader 객체를 담고있는 속성값이다.

 

사용예제)

 

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

IIXyncService oGaService = oGBasePage.IXyncLoader.newService("default");

 

·      IXyncService [ get, set ]

IXync의 서비스를 관장하는 IXyncService 객체를 담고있는 속성값이다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

IXyncMessageSet oGaMessageSet = oGBasePage .IXyncService.getMessageSet();

 

·      IXyncMessage [get, set]

클라이언트 콤포넌트로 메시지를 전송하기 위한 객체 IXyncMessageSet객체를 담고있는 속성값이다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

oGBasePage.IXyncMessage.addMessage ("User", "90001", except.Message);

 

·      IXyncRequest [get, set]

클라이언트 콤포넌트로부터 요청받은 HttpRequest와 데이터들을 담고있는 IXyncRequest 객체를 담고있는 속성값이다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

string strParam = oGBasePage .IXyncRequest.getParameter("empid");

 

·      IXyncResponse [ get, set ]

클라이언트 콤포넌트로 전송할 HttpResponse와 데이터들을 담고있는 IXyncResponse 객체를 담고있는 속성값이다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

int nType = oGBasePage.IXyncResponse.getTargetType();

 

·      IXyncDbHelper [ get, set ]

DB 연결객체관리, Transaction 객체관리 등의 Data Service Component(DSC)역할을 담당하는 DB Helper객체를 담고있는 속성값이다.

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

// DB 연결을 추가한다.

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection(

"conn1", IXyncVariable.DbProviderType.OLEDB, null, 0);

 

·      IXyncServiceCall [get, set]

IX-SERVER 서비스 간의 통신을 할 수 있도록 API를 제공하는 객체를 담고있는 속성값이다. 다음 예제는 기 작성된 FirstRowSelect.aspx 서비스를 호출하여 얻은 IXyncDataSet을 재 가공하여 클라이언트로 전송하는 예이다.

IX-SERVER for .NET 3.0부터 제공하며, 조회만 가능하다.

사용예제)

CommunicationInfo oComInfo = new CommunicationInfo();

oComInfo.ServiceUri =

"http://localhost/IXyncNetSample50/FirstRow/FirstRowSelect.aspx";

// SOCD를 생성하지 않으면 디폴트 SOCD인 'O:output=output'이 생성된다.

  // oComInfo.Socd.Add(new GSocdInfo(IXyncVariable.DataSetType.OUTPUT,

  // "output1", "output2"));

oComInfo.Params.Add("RequestData", "IXYNC_NET_DATA");

oComInfo.Params.Add("frowcnt", oGBasePage.getIntParam("frowcnt"));

 

IXyncDataSet oGDS =

             oGBasePage.IXyncServiceCall.getOutputDataSet(oComInfo);

if(oGDS != null) {

// 받은 데이터를 가공합니다.

IXyncDataSet oOutGDS =   

    oGBasePage.IXyncService.newDataSet("ResultDS");

 

oOutGDS.addDataColumn("SEQ_NUMBER",

                  IXyncVariable.ColumnDataType.INT, 4);

oOutGDS.addDataColumn("ZIP_NUMBER",

                  IXyncVariable.ColumnDataType.STRING, 24);

oOutGDS.addDataColumn("ZIP_ADDR",

                  IXyncVariable.ColumnDataType.STRING, 64);

oOutGDS.addDataColumnEnd();

 

char [] param = {'\0'};

 

DataTable oTbl = oGDS.Tables[0];

for(int i=0; i< oTbl.Rows.Count; i++){

DataRow oRow = oTbl.Rows[i];

oOutGDS.addDataRowValue("SEQ_NUMBER", i);

oOutGDS.addDataRowValue("ZIP_NUMBER",

Convert.ToInt32(oRow["ZIPCODE"]) + "-" +

                    Convert.ToInt32(oRow["AREACODE"]));

oOutGDS.addDataRowValue("ZIP_ADDR",

"   " + Convert.ToString(oRow["STATE"]).TrimEnd(param) + "/"

      + Convert.ToString(oRow["CITY"]).TrimEnd(param));

 

oOutGDS.addDataRow();

} // end of for

oOutGDS.end();

// 데이터 복사가 완료되었으므로 데이터를 클리어시킨다.

oGDS.Clear();

  } // end of if (oGDS != null)

 

·      IXyncQueryStorage [ get, set ]

IX-SERVER 서비스에서 사용되는 쿼리문을 Xml File을 통하여 관리하기 위한 API를 제공하는 객체를 담고있는 속성값이다.

 

사용예제1) - Query.xml

 

<?xml version="1.0" encoding="utf-8"?>

<Query>

<Select>

<Statement id="IXyncNetSample50.QueryManage.SelectQuery.01">

    <![CDATA[

        select deptnm, year, amt1, amt2 from Grid1

    ]]>

</Statement>

</Select>

<Transaction>

   <Statement id="IXyncNetSample50.QueryManage.TransactionQuery.01">

    <![CDATA[

        INSERT INTO BigintTest(Name, SI_Amt, I_Amt, BI_Amt)

        VALUES (@Name, @SI_Amt , @I_Amt, @BI_Amt )

    ]]>

</Statement>

</Transaction>

</Query>

 

 

사용예제2) – 내부 소스 코드

 

XmlQueryInfo oQueryInfo =

    oGBasePage.IXyncQueryStorage.getQueryInfoByXPath(

      "//Statement[@id='IXyncNetSample50.QueryManage.SelectQuery.01']");

 

if(oQueryInfo.IsSuccess)

{

// 쿼리를 실행하여 결과를 클라이언트로 전송합니다.

oGBasePage.commonSelect(oConn, oQueryInfo.QueryString);

}

else

{

oGBasePage.addMessage2(

IXyncVariable.MessageType.Application,

"90000",

oQueryInfo.ErrorMsg);

 

oGBasePage.setResult(false);

}

 

 

METHODS

·      IXyncBasePage (+2개 오버로딩)

IXync의 서비스를 관장하는 서비스 개체를 생성하기위한 IXyncBasePage 클래스의 생성자로, ASP.NET의 HttpServerUtility, HttpRequest와 HttpResponse 개체를 가지고 생성된다.

이때 ServiceLoader 객체가 생성되어 초기화 되며, 잘못된 요청을 Filtering 하기 위해 클라이언트의 요청 데이터를 분석하여 정보를 저장한다.

IXyncBasePage(HttpServerUtility svr, HttpRequest req, HttpResponse res)

IXyncBasePage(string strDomain)

IXyncBasePage(Web.UI.Page oPage)

 

Parameter 명

설명

HttpServerUtility svr

ASP .NET 이 클라이언트에서 보낸 웹요청처리를 담당하는 유틸리티 개체 이다.

HttpRequest req

ASP .NET 이 클라이언트에서 보낸 HttpRequest개체 이다.

HttpResponse res

ASP .NET 작업에서 받은 Http 응답정보를 캡술화하는 HttpResponse개체이다.

string strDomain

AJAX.NET을 지원하기 위해 도메인 이름만 지정한다.

Web.UI.Page oPage

현재 페이지를 나타내는 System.Web.UI.Page 개체이다.

 

사용예제)

 

// IX-SERVER 페이지 기본 생성자 (1)

IXyncBasePage oGBasePage= new IXyncBasePage(Server, Request, Response);

 

// IX-SERVER 페이지 기본 생성자 (2)

IXyncBasePage oGBasePage = new IXyncBasePage(this.Page);

 

// AJAX.NET을 지원하기 위한 생성자로 도메인 이름만 지정한다.

IXyncBasePage oGBasePage = new IXyncBasePage("default");

 

 

·      Release (+1개 오버로드)

IXyncBasePage 객체가 사용한 모든 리소스들을 해제한다. 특히 DB 연결이 되어 있으면 이곳에서 자동으로 모든 DB연결들을 중지한다.

void Release()

void Release(bool IsResponseEnd)

 

Parameter 명

설명

bool IsResponseEnd

Response.End() 메소드를 호출할지 여부를 결정하는 값이다. 이 값이 True이면 비즈니스 로직 수행 후에 HTML코드가 클라이언트로 전송되지 않는다.

 

사용예제1)

finally{

if (bPrintResult == true){

// 클라이언트로 작업결과를 전송합니다.

oGBasePage.printMessage();

// IXyncBasePage객체를 해제합니다.

// 파리미터값이 true인 경우는 화면코드가 클라이언트로 전송되지

// 않습니다. DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이

// 해제됩니다.

oGBasePage.Release(true);

}

else{

// IXyncBasePage객체를 해제합니다.

// elease의 파리미터값이 false(또는 지정하지 않음)인 경우는

// 화면코드가 클라이언트로 전송됩니다. DB연결이 설정된 경우에는

// 이곳에서 자동으로 DB연결이 해제됩니다.

oGBasePage.Release();

}

}

 

사용예제2)

finally{

// IXyncBasePage객체를 해제합니다.

// IX-SERVER 클라이언트에서 요청한 결과를 전송합니다. DB연결이

// 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

oGBasePage.Release();

}

 

·      initIXyncPage (+4개 오버로드)

IXyncBasePage 객체가 래핑하는 각 객체들을 생성하고, 초기화 작업을 수행한다.

void initIXyncPage(string strDomain)

void initIXyncPage(string strDomain, int nEncodeType)

void initIXyncPage(string strDomain, int nEncodeType,

                  int nPacketType, bool bCompress, int nFirstRowSize)

 

// IX-SERVER for .NET – Enum Type 파라미터

void initIXyncPage(string strDomain,

                   IXyncVariable.PacketEncodingType enmEncodeType)

void initIXyncPage(string strDomain,

                   IXyncVariable.PacketEncodingType enmEncodeType,

IXyncVariable.ResponsePacketType enmPacketType,

                   bool bCompress, int nFirstRowSize)

 

Parameter 명

설명

string strDomain

도메인의 이름을 입력한다. 여기서 입력한 도메인 이름으로 해당 Configuration file을 참조하여 서비스 환경을 구축한다.

int nEncodeType

클라이언트 DataSet 콤포넌트와 상호 교환되는 컬럼데이터의 인코드타입을 지정한다. (IXyncDefine 값 사용) 기본값은 IXyncDefine.RESPONSE_CODE_ANSI(0) 이다.

[인코드타입의 index 정의(IXyncDefine)]

RESPONSE_CODE_ANSI                 0

RESPONSE_CODE_UTF8                 1

RESPONSE_CODE_UNICODE        2

RESPONSE_CODE_UNICODEBIG 3 (현재는 지원되지 않음)

int nPacketType

송신할 패킷의 타입을 지정한다. (IXyncDefine 값 이용)

[송신할 패킷의 index 정의(IXYNC DEFINE)]

IXyncDefine.CSV30_FORMAT 1

IXyncDefine.BIN_FORMAT   2

IXyncDefine.CSV_FORMAT   3

IXyncDefine.XML_FORMAT   5

IXyncDefine.JSON_FORMAT   6

bool bCompress

송신할 패킷의 압축여부를 지정한다.

int nFirstRowSize

송신할 패킷의 퍼스트로우 사이즈를 지정한다.

nFirstRowSize에 정의된 Row사이즈 단위 만큼씩 잘라서 클라이언트로 전송하게 된다. 0 일경우는 모든 데이터 패킷을 한꺼번에 전송하는 All Row 방식이 된다. -1 일경우에는 IXYNC System이 자동으로 퍼스트로우 사이즈를 최적화하게 된다.

IXyncVariable.PacketEncodingType enmEncodeType

클라이언트 DataSet 콤포넌트와 상호 교환되는 컬럼데이터의 인코드타입을 지정한다. (IXyncVariable 사용)

[IXYNC VARIABLE의 PacketEncodingType 열거형 값]

IXyncVariable.PacketEncodingType.NORMAL  :ANSI

IXyncVariable.PacketEncodingType.UTF8    :UTF8

IXyncVariable.PacketEncodingType.UNICODE1:UTF-16

IXyncVariable.PacketEncodingType.UNICODE_BIG

:UTF-16 BigEndian

IXyncVariable.ResponsePacketType enmPacketType

송신할 패킷의 타입을 지정한다. (IXyncVariable 사용)

[IXYNC VARIABLE의 ResponsePacketType 값]

IXyncVariable.ResponsePacketType.CSV30:응용 CSV 패킷

IXyncVariable.ResponsePacketType.BINARY:Binary 패킷

IXyncVariable.ResponsePacketType.CSV:순수 CSV 패킷

IXyncVariable.ResponsePacketType.XML:XML 패킷

IXyncVariable.ResponsePacketType.JSON:JSON 패킷

 

사용예제1) 기본정의

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

oGBasePage.initIXyncPage ("default",

IXyncDefine.RESPONSE_CODE_UTF8,

IXyncDefine.BIN_FORMAT,

false,

-1);

 

사용예제2) IXyncVariable 사용 예

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

oGBasePage.initIXyncPage ("default",

IXyncVariable.PacketEncodingType.NORMAL, IXyncVariable.ResponsePacketType.BINARY

false,

-1 );

 

·      getIntParam (+1개 오버로드)

Get방식으로 전송된 HTTP Request Parameter값을 추출하여 Int 값으로 리턴해준다.

int getIntParam(string paramName)

int getIntParam(string paramName, int defaultValue)

 

Parameter 명

설명

string paramName

추출할 파라미터값의 키가 되는 파라미터 이름이다.

int defaultValue

파라미터값이 존재하지 않는 경우 적용할 디폴트 값을 지정한다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

oGBasePage.initIXyncPage("default");

 

if ( oGBasePage.getIntParam("RequestIntData") == 1234){

   ………………………

}

 

·      getShortParam (+1개 오버로드)

Get방식으로 전송된 HTTP Request Parameter값을 추출하여 Short 값으로 리턴해준다.

short getShortParam(string paramName)

short getShortParam(string paramName, short defaultValue)

 

Parameter 명

설명

string paramName

추출할 파라미터값의 키가 되는 파라미터 이름이다.

int defaultValue

파라미터값이 존재하지 않는 경우 적용할 디폴트 값을 지정한다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

oGBasePage.initIXyncPage("default");

 

if ( oGBasePage. getShortParam ("RequestShortData") == 10){

   ………………………

}

 

·      getStringParam (+1개 오버로드)

Get방식으로 전송된 HTTP Request Parameter값을 추출하여 String 값으로 리턴해준다.

string getStringParam (string paramName)

string getStringParam (string paramName, short defaultValue)

 

Parameter 명

설명

string paramName

추출할 파라미터값의 키가 되는 파라미터 이름이다.

int defaultValue

파라미터값이 존재하지 않는 경우 적용할 디폴트 값을 지정한다.

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

oGBasePage.initIXyncPage("default");

 

if ( oGBasePage.getStringParam ("RequestStringData") == "1234"){

   ………………………

}

else if (oGBasePage.getStringParam ("RequestStringData", "빈값")!= "빈값"){

   ………………………

}

 

·      getIntFormParam

POST 방식으로 전송된 HTTP Request의 Form Parameter값을 추출하여 Int값으로 리턴해준다.

int getIntFormParam(string paramName)

 

Parameter 명

설명

string paramName

추출할 파라미터값의 키가 되는 파라미터 이름이다.

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

oGBasePage.initIXyncPage("default");

if ( oGBasePage.getIntFormParam ("RequestIntFormData") == 1234)

{

   ………………………

}

 

·      getStringFormParam

POST 방식으로 전송된 HTTP Request의 Form Parameter값을 추출하여 String 값으로 리턴해준다.

string getStringFormParam(string paramName)

 

Parameter 명

설명

string paramName

추출할 파라미터값의 키가 되는 파라미터 이름이다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

oGBasePage.initIXyncPage("default");

if ( oGBasePage.getStringFormParam("RequestStringFormData") == "1234")

{

   ………………………

}

 

·      getStringIXyncParam

IXYNC Tr component의 Parameters속성으로 정의하여 전송된 Parameter값을 추출하여 String 값으로 리턴해준다.

string getIXyncStringParam (string paramName)

 

Parameter 명

설명

string paramName

추출할 파라미터값의 키가 되는 파라미터 이름이다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

oGBasePage.initIXyncPage("default");

if ( oGBasePage.getIXyncStringParam ("RequestData") == "IXYNC_NET_TR_DATA")

{

   ………………………

}

 

·      addMessage

클라이언트로 전송할 메시지 만들고 축적한다. IX-SERVER 콤포넌트의 요청이 아닌경우에는 메시지가 생성되지 않는다.

void addMessage(string stErrorType, string stErrorCode,

                string stErrorMessage)

 

Parameter 명

설명

string stErrorType

클라이언트에서 구분할 메시지타입을 입력한다.

(예: "System", "User", "Etc", …)

string stErrorCode

메시지코드값을 입력한다.

string stErrorMessage

메시지을 입력한다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

if(oGBasePage.getIXyncStringParam("RequestData")=="IXYNC_NET_TR_DATA"){

   oGBasePage.addMessage("User", 70001, "사용자 메시지 작업수행");

   oGBasePage.setResult(true);

}

 

·      addMessage2

클라이언트로 전송할 메시지 만들고 축적한다. IX-SERVER 콤포넌트의 요청이 아닌경우에는 메시지가 생성되지 않는다.

assMessage 메소드와 기능은 동일하며, 다만 입력되는 첫번째 파라미터의 형태만 IXyncVariable을 사용하는 것이 다르다.

void addMessage2 (IXyncVariable.MessageType enmErrorType,

                  string stErrorCode, string stErrorMessage)

 

Parameter 명

설명

IXyncVariable.MessageType enmErrorType

클라이언트에서 구분할 메시지타입을 입력한다.

string stErrorCode

메시지코드값을 입력한다.

string stErrorMessage

메시지을 입력한다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

if(oGBasePage.getIXyncStringParam("RequestData")=="IXYNC_NET_TR_DATA"){

    oGBasePage.addMessage2(IXyncVariable.MessageType.User, "70001",

                          "사용자 메시지 작업수행");

    oGBasePage.setResult(true);

}

 

·      setResult

Message를 전송하기전에 작업이 성공인지 실패인지를 지정한다.IX-SERVER 콤포넌트의 요청이 아닌경우에는 리턴된다.여러 번 지정한 경우는 최종적으로 지정한 값으로 갱신된다.

void setResult(bool bIsSuccess)

 

Parameter 명

설명

bool bIsSuccess

작업의 성공/실패 여부를 지정한다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

if(oGBasePage.getIXyncStringParam("RequestData")=="IXYNC_NET_TR_DATA"){

   oGBasePage.addMessage("User", 70001, "사용자 메시지 작업수행");

   oGBasePage.setResult(true);

}

 

·      getResult

Transaction 작업에서 작업이 성공인지 실패인지 결과를 얻어온다.

 

bool getResult ()

 

Parameter 명

설명

반환값

작업의 성공/실패 여부를 반환한다.

 

사용예제)

string SelectSql = null;

IDbTransaction oTr = null; // Transaction 객체를 선언합니다.

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try

{

       // IX-SERVER 페이지를 초기화 합니다.

       oGBasePage.initIXyncPage("default");

 

       // 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

       if (oGBasePage.getStringIXyncParam("RequestData")== "IXYNC_NET_DATA"){

              IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection

                                        ("conn1", IXyncVariable.DbProviderType.MSSQL, null, 0);

              // 쿼리문을 작성하여 strSql변수에 할당합니다.

              SelectSql = "select * from emp where empid = @param1";

              IXyncParameter param = new IXyncParameter();

              oGparam.Add("param1", oGBasePage.getStringParam("empid"));

 

           // Transaction을 시작합니다.

           oTr = oConn.beginTransaction();

 

              // IXYNC DataSet을 생성한다.

              IXyncDataSet oDataSet = oGBasePage.IXyncService.newDataSet("output1");

              // 타입 또는 사이즈 변경등을 원하는 컬럼에 대해서만 헤더를 수정한다.

              oDataSet.addChangingDataColumn("name",

                                                                  IXyncVariable.ColumnDataType.URL);

              // 쿼리를 실행하여 결과를 클라이언트로 전송합니다.

           oGBasePage.postSelect_byDataSet2(oConn, oDataSet, SelectSql, oGparam, oTr);

       } // end of if

}// end of try

catch (Exception except) {

       oGBasePage.addMessage("System", "90001", except.Message);

       oGBasePage.setResult(false);

}

finally{

     if(oTr != null) {

           if (oGBasePage.getResult())

                oTr.Commit();

           else

                oTr.Rollback();

     }

       // 클라이언트로 작업결과를 전송합니다.

       oGBasePage.printMessage();

       // IXyncBasePage객체를 해제합니다.

       oGBasePage.Release();

}

 

·      printMessage

메시지(서비스 수행결과)를 클라이언트로 송신한다. 이 메소드 호출은 Aspx서비스 내에서 단 한번만 이루어져야 한다. IX-SERVER 콤포넌트의 요청이 아닌경우에는 리턴된다.

 

void printMessage ()

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

bool bPrintResult = false;

try{

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

if(oGBasePage.getIXyncStringParam("RequestData")=="IXYNC_NET_TR_DATA"){

   bPrintResult == true;

       oGBasePage.addMessage("User", 70001, "사용자 메시지 작업수행");

       oGBasePage.setResult(true);

}

}

catch (Exception except){

    oGBasePage.addMessage2(IXyncVariable.MessageType.System, "90001",

                           except.Message);

    oGBasePage.setResult(false);

}

finally{

    // 서비스 객채를 해제한다.

    if(bPrintResult == true) {

        oGBasePage.printMessage();

        oGBasePage.Release(true);

    }

    else

        oGBasePage.Release();

}

 

·      commonSelect (+5개 오버로드)

Get방식의 요청을 연결된 DB Connection에 대하여 쿼리문을 수행하여 결과데이터셋을 클라이언트로 전송한다.

쿼리문에 파라미터가 포함된 경우에는 오버로드된 메소드를 이용한다.

이 메소드는 조회서비스 작성시에 IXyncDataSet을 생성하고(newDataSet), DataSet Header를 생성(addDataColumnOld)하여, 연결된 DB에 대하여 DB를 Open하여 쿼리문을 수행(ExecuteReader)하고 결과셋을 생성된 IXYNC DataSet에 Fill(addDataRowValue, addDataRow)하여 클라이언트로 전송(IXyncDataSet.end) 하는 과정을 자동화한 메소드 이다.

void commonSelect(IXyncConnection oGaConn, string strSql)

void commonSelect(IXyncConnection oGaConn, string strSql, IXyncParameter lparam)

void commonSelect(IXyncConnection oGaConn, string strSql, IXyncParameter  lparam, object oTransaction)

void commonSelect(string strDataSetName, IXyncConnection oGaConn,

                  string strSql)

void commonSelect(string strDataSetName, IXyncConnection oGaConn,

                  string strSql, IXyncParameter lparam)

void commonSelect(string strDataSetName, IXyncConnection oGaConn,

                  string strSql, IXyncParameter lparam, object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기

                 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다. 이 값은

                IXyncDefine에 정의된 값을 이용한다.

[ProviderType index 정의(IXYNC DEFINE 값)]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4  // Ver 5.0 부터 지원

- ConnectionString: 실제 DB연결 정보를 가진 문자열 값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 기본값은

                                      120초이다.

string strSql

DB 쿼리문을 지정한다.

IXyncParameter lparam

DB 쿼리문에 파라미터가 포함된 경우에 SortedList에 이름/값 쌍으로 파라미터값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

이때 DB Provider가 OLEDB인 경우에는 파라미터 이름과 순서에 특별히 주의를 기울여야만 한다. 파라미터 이름은 추가한 정렬 순서가 바뀌지 않도록 지정해 주어야 한다. 예를들면, 다음과 같이 지정해 주면될 것이다.

예1) 올바른 예

IXyncParameter param = new IXyncParameter ();

param.Add("param1",oGBasePage.getStringParam("empid"));

param.Add("param2",oGBasePage.getStringParam("empname"));

param.Add("param3",

                                   oGBasePage.getStringParam("empaddress"));

예2) 잘못 정의한 예

IXyncParameter param = new IXyncParameter();

param.Add("empid", oGBasePage.getStringParam("empid"));

param.Add("empname",

                               oGBasePage.getStringParam("empname"));

param.Add("empaddress",

                 oGBasePage.getStringParam("empaddress"));

 

위와 같이 파라미터를 지정하게 되면 Add한 순서는 empid, empname, empaddress 이지만, SortedList에 저장된 순서는 empaddress, empid, empname 순으로 바뀌게 되어 엉뚱한 결과를 가져오게 된다.

한편, param.Add에서 param의 value값은 실제 DB에 입력될 필드타입에 따라 Convert 되어야할 필요가 있을 수 있다. 예를들어 DB필드 타입이 DateTime인 필드를 파라미터값으로 설정/입력하고자 한다면 다음과 같이 명시적으로 타입을 Convert해 주어야만 한다.

param.Add("param1",

   Convert.ToDateTime(oGBasePage.getStringParam("hiredata")));

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

string strDataSetName

commonSelect는 DataSetName을 지정하지 않는 경우는 디폴트로 "output1"이라는 DataSet이 생성된다. strDataSetName은 디폴트 이외의 이름으로 데이터셋을 생성할 경우 사용한다.

 

사용예제)

bool bPrintResult = false;

string SelectSql = null;

IDbTransaction oTr = null;

 

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

 

try {

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

// IDbConnection 인터페이스를 이용하여 DB Provider 종류에 상관없이

// Transaction 객체를 선언합니다.

 

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if (oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA"){

bPrintResult = true;

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection  

             ("conn1", IXyncVariable.DbProviderType.MSSQL, null, 0);

SelectSql = "select * from emp where empid = @param1";

IXyncParameter param = new IXyncParameter();

param.Add("param1", oGBasePage.getStringParam("empid"));

 

// Transaction을 시작합니다.

oTr = oConn.beginTransaction();

        oGBasePage.commonSelect (oConn, SelectSql, param, oTr);

}

}

catch (Exception except){

   oGBasePage.addMessage("System", "90001", except.Message);

   oGBasePage.setResult(false);

}

finally{

    if(bPrintResult == true) {

        // printMessage() 이전에 처리해 줍니다.

        if(oTr != null) {

            if (oGBasePage.getResult())

                oTr.Commit();

            else

                oTr.Rollback();

        }

        // 클라이언트로 작업결과를 전송합니다.

        oGBasePage.printMessage();

        // IXyncBasePage객체를 해제합니다. Release의 파리미터값이 true인

        // 경우는 화면코드가 클라이언트로 전송되지 않습니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

        oGBasePage.Release(true);

     }

     else {

        // IXyncBasePage객체를 해제합니다.

        // Release의 파리미터값이 false(또는 지정하지 않음)인 경우는

        // 화면코드가 클라이언트로 전송됩니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

         oGBasePage.Release();

     }

}

 

·      commonSelect_byDataSet (+2개 오버로드)

Get방식의 요청을 연결된 DB Connection에 대하여 쿼리문을 수행하여 결과 데이터셋을 클라이언트로 전송한다. 쿼리문에 파라미터가 포함된 경우에는 오버로드된 메소드를 이용한다.

이 메소드는 조회서비스 작성시에 연결된 DB에 대하여 DB를 Open하여 쿼리문을 수행(ExecuteReader)하고 결과셋을 입력된 IXYNC DataSet에 Fill(addDataRowValue, addDataRow)하여 클라이언트로 전송(IXyncDataSet.end) 하는 과정을 자동화한 메소드 이다.

이 메소드는 주로 클라이언트로 전송할 데이터셋의 특정컬럼을 추가 또는 변경하는 작업이 필요한 경우에 사용한다.

void commonSelect_byDataSet (IXyncConnection oGaConn,

IXyncDataSet IXyncDS, string strSql)

void commonSelect_byDataSet (IXyncConnection oGaConn,

IXyncDataSet IXyncDS,

string strSql, IXyncParameter lparam)

void void commonSelect_byDataSet (IXyncConnection oGaConn,

IXyncDataSet IXyncDS, string strSql,

                               IXyncParameter lparam, object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[ProviderType index값(IXYNC DEFINE 값)]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

IXyncDataSet IXyncDS

쿼리결과셋을 데이터를 저장할 IXyncDataSet 객체를 지정한다.

string strSql

DB 쿼리문을 지정한다.

IXyncParameter lparam

DB 쿼리문에 파라미터가 포함된 경우에 SortedList에 이름/값 쌍으로 파라미터값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

 

사용예제)

bool bPrintResult = false;

string SelectSql = null;

IDbTransaction oTr= null;

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try {

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if ( oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA"){

bPrintResult = true;

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null, 0);

SelectSql = "select * from emp where empid = @param1";

IXyncParameter param = new IXyncParameter();

param.Add("param1", oGBasePage.getStringParam("empid"));

//Transaction을 시작합니다.

oTr = oConn.beginTransaction();

//IXYNC DataSet을 생성한다.

IXyncDataSet oDataSet=

                  oGBasePage.IXyncService.newDataSet("output1");

//타입 또는 사이즈 변경등을 원하는 컬럼에 대해서만 헤더를 수정한다.

oDataSet.addChangingDataColumnOld("name", IXyncDefine.TB_URL);

oGBasePage.commonSelect_byDataSet (oConn, oDataSet, SelectSql,

                                param, oTr);

}

}

catch (Exception except) {

    oGBasePage.addMessage("System", "90001", except.Message);

    oGBasePage.setResult(false);

}

finally {

    if(bPrintResult == true) {

        // printMessage() 이전에 처리해 줍니다.

        if(oTr != null) {

            if (oGBasePage.getResult())

                oTr.Commit();

            else

                oTr.Rollback();

        }

        // 클라이언트로 작업결과를 전송합니다.

        oGBasePage.printMessage();

        // IXyncBasePage객체를 해제합니다.

        // Release의 파리미터값이 true인 경우는 화면코드가 클라이언트로

        // 전송되지 않습니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

        oGBasePage.Release(true);

     }

     else {

        // IXyncBasePage객체를 해제합니다.

        // Release의 파리미터값이 false(또는 지정하지 않음)인 경우는

        // 화면코드가 클라이언트로 전송됩니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

         oGBasePage.Release();

     }

}

 

·      postSelect (+2개 오버로드)

POST 방식의 요청을 연결된 DB Connection에 대하여 쿼리문을 수행하여 결과데이터셋을 클라이언트로 전송한다. 쿼리문에 파라미터가 포함된 경우에는 오버로드된 메소드를 이용한다.

이 메소드는 조회서비스 작성시에 IXyncDataSet을 생성하고(newDataSet), DataSet Header를 생성(addDataColumnOld)하여, 연결된 DB에 대하여 DB를 Open하여 쿼리문을 수행(ExecuteReader)하고 결과셋을 생성된 IXYNC DataSet에 Fill(addDataRowValue, addDataRow)하여 클라이언트로 전송(IXyncDataSet.end) 하는 과정을 자동화한 메소드 이다.

void postSelect(IXyncConnection oGaConn, string strDataSetName,

               string strSql)

void postSelect(IXyncConnection oGaConn, string strDataSetName,

               string strSql, IXyncParameter lparam)

void postSelect(IXyncConnection oGaConn, string strDataSetName,

               string strSql, IXyncParameter lparam, object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한

                                  유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4  // Ver 5.0 부터 지원

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strDataSetName

결과 데이터를 담을 IXyncDataSet 이름을 지정한다. 이 이름은 클라이언트의 Tr 콤포넌트에서 지정한 서버쪽 DataSet이름이다. 즉, Tr 콤포넌트에서 다음과 같이 지정했다면 ASPX(O:output1=ga_dataset) ‘output1’으로 지정해야 한다.

string strSql

DB 쿼리문을 지정한다.

IXyncParameter lparam

DB 쿼리문에 파라미터가 포함된 경우에 SortedList에 이름/값 쌍으로 파라미터값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

이때 DB Provider가 PROVIDERTYPE_OLEDB인 경우에는 파라미터 이름과 순서에 특별히 주의를 기울여야만 한다. 파라미터 이름은 Add 한 정렬순서가 바뀌지 않도록 지정해 주어야 한다.

예를들면, 다음과 같이 지정해 주면될 것이다.

예1)

IXyncParameter param = new IXyncParameter();

param.Add("param1", oGBasePage.getStringParam("empid"));

param.Add("param2", oGBasePage.getStringParam("empname"));

param.Add("param3",  

                     oGBasePage.getStringParam("empaddress"));

 

다음의 예는 잘못 지정한 예이다.

예2)

IXyncParameter param = new IXyncParameter();

param.Add("empid", oGBasePage.getStringParam("empid"));

param.Add("empname",

                      oGBasePage.getStringParam("empname"));

param.Add("empaddress",

                      oGBasePage.getStringParam("empaddress"));

위와 같이 파라미터를 지정하게 되면 Add한 순서는 empid, empname, empaddress 이지만, SortedList에 저장된 순서는 empaddress, empid, empname 순으로 바뀌게 되어 엉뚱한

결과를 가져오게 된다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

 

사용예제)

bool bPrintResult = false;

string SelectSql = null;

SqlTransaction oTr = null;

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try{

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if ( oGBasePage.getStringIXyncParam("RequestData")=="IXYNC_NET_DATA"){

bPrintResult = true;

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

SelectSql = "select * from emp where id=?";

IXyncParameter param = new IXyncParameter();

param.Add("param1", oGBasePage.getStringParam("empid"));

// Transaction을 시작합니다. DB Provider에 맞도록 캐스팅합니다.

oTr = (SqlTransaction) oConn.beginTransaction();

        oGBasePage.postSelect (oConn, "output1", SelectSql, param, oTr);

}

}

catch (Exception except){

    oGBasePage.addMessage("System", "90001", except.Message);

    oGBasePage.setResult(false);

}

finally{

    if(bPrintResult == true){

        // printMessage() 이전에 처리해 줍니다.

        if(oTr != null){

            if (oGBasePage.getResult())oTr.Commit();

            else oTr.Rollback();

        }

        // IXyncBasePage객체를 해제합니다.

        // Release의 파리미터값이 true인 경우는 화면코드가 클라이언트로

        // 전송되지 않습니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

        oGBasePage.Release(true);

     }

     else{

        // IXyncBasePage객체를 해제합니다.

        // Release의 파리미터값이 false(또는 지정하지 않음)인 경우는

        // 화면코드가 클라이언트로 전송됩니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

         oGBasePage.Release();

     }

}

 

·      postSelect2 (+1개 오버로드)

POST 방식의 요청을 연결된 DB Connection에 대하여 쿼리문을 수행하여 결과데이터셋을 클라이언트로 전송한다. IX-SERVER for .NET 4.0.1 버전부터 지원한다.

쿼리문에 파라미터가 포함된 경우에는 IXyncParameter 클래스를 이용하여 DB 파라미터를 관리합니다. IXyncParameter 객체를 생성하여 파라미터 추가시 DB 파라미터의 키, 값뿐만 아니라 DB Type, Size, Precision, Scale, Direction 등을 명시적으로 지정하여 좀 더 세밀하게 DB 파라미터를 관리할 수 있습니다. (IXyncParameterProperty 참조)

void postSelect2(IXyncConnection oGaConn, string strDataSetName,

                 string strSql, IXyncParameter lparam)

void postSelect2(IXyncConnection oGaConn, string strDataSetName,

              string strSql, IXyncParameter lparam, object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

 

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

 

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4  // Ver 5.0 부터 지원

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strDataSetName

결과 데이터를 담을 IXyncDataSet 이름을 지정한다. 이 이름은 클라이언트의 Tr 콤포넌트에서 지정한 서버쪽 DataSet이름이다. 즉, Tr 콤포넌트에서 다음과 같이 지정했다면 ASPX(O:output1=ga_dataset) ‘output1’으로 지정해야 한다.

string strSql

DB 쿼리문을 지정한다.

IXyncParameter lparam

DB 쿼리문에 파라미터가 포함된 경우에 SortedList에 이름/값 쌍으로 파라미터값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

이때 DB Provider가 PROVIDERTYPE_OLEDB인 경우에는 파라미터 이름과 순서에 특별히 주의를 기울여야만 한다. 파라미터 이름은 Add 한 정렬순서가 바뀌지 않도록 지정해 주어야 한다.

예를들면, 다음과 같이 지정해 주면될 것이다.

예1)

IXyncParameter param = new IXyncParameter();

param.Add("param1", oGBasePage.getStringParam("empid"));

param.Add("param2", oGBasePage.getStringParam("empname"));

param.Add("param3", 

                oGBasePage.getStringParam("empaddress"));

다음의 예는 잘못 지정한 예이다.

예2)

IXyncParameter param = new IXyncParameter();

param.Add("empid", oGBasePage.getStringParam("empid"));

param.Add("empname",oGBasePage.getStringParam("empname"));

param.Add("empaddress",

                 oGBasePage.getStringParam("empaddress"));

위와 같이 파라미터를 지정하게 되면 Add한 순서는 empid, empname, empaddress 이지만, SortedList에 저장된 순서는 empaddress, empid, empname 순으로 바뀌게 되어 엉뚱한

결과를 가져오게 된다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

IXyncParameter lparam

DB 쿼리문에 파라미터가 포함된 경우에 IXyncParameter에 이름/값 쌍으로 파라미터 값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter oGparam = new IXyncParameter();

oGparam.add("empid", oGBasePage.getStringParam("empid"));

oGparam.add("empname",

                          oGBasePage.getStringParam("empname"));

oGparam.add("empaddress",

                          oGBasePage.getStringParam("empaddress"));

한편, oGparam.add 에서 param의 value값은 실제 DB에 입력될 필드타입에 따라 Conver 되야 할 필요가 있을 수 있다. 예를들어 DB필드 타입이 DateTime인 필드를 파라미터 값으로 설정/입력하고자 한다면 다음과 같이 명시적으로 타입을 Convert 하거나, DB필드 타입 파라미터를 사용한다.

 

- 명시적으로 타입을 Convert한 예)

oGparam.add("param1",

      Convert.ToDateTime(oGBasePage.getStringParam("hiredata")));

- DB필드 타입 파라미터를 사용한 예)

oGparam.add("param1",oGBasePage.getStringParam("hiredata"),

                          IXyncVariable.DbType.DateTime);

 

사용예제)

bool bPrintResult = false;

string SelectSql = null;

IDbTransaction oTr = null; // Transaction 객체를 선언합니다.

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try {

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

// IDbConnection 인터페이스를 이용하여DB Provider 종류에 상관없이

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if (oGBasePage.getStringIXyncParam("RequestData") == "IXYNC_NET_DATA"){

bPrintResult = true;

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

SelectSql = "select * from emp where empid = @empid";

 

IXyncParameter oGparam = new IXyncParameter();

oGparam.add("empid", oGBasePage.getStringParam("empid"));

 

// Transaction을 시작합니다.

oTr = oConn.beginTransaction();

        oGBasePage.postSelect2 (oConn, "output1", SelectSql, oGparam, oTr);

}

}

catch (Exception except){

    oGBasePage.addMessage("System", "90001", except.Message);

    oGBasePage.setResult(false);

}

finally{

    if(bPrintResult == true) {

        // printMessage() 이전에 처리해 줍니다.

        if(oTr != null) {

            if (oGBasePage.getResult())

                oTr.Commit();

            else

                oTr.Rollback();

        }

// 클라이언트로 작업결과를 전송합니다.

        oGBasePage.printMessage();

        // IXyncBasePage객체를 해제합니다.

        // Release의 파리미터값이 true인 경우는 화면코드가 클라이언트로

        // 전송되지 않습니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

        oGBasePage.Release(true);

     }

     else{

        // IXyncBasePage객체를 해제합니다.

        // Release의 파리미터값이 false(또는 지정하지 않음)인 경우는

        // 화면코드가 클라이언트로 전송됩니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

         oGBasePage.Release();

     }

}

 

·      postSelect_byDataSet (+2개 오버로드)

POST 방식의 요청을 연결된 DB Connection에 대하여 쿼리문을 수행하여 결과데이터셋을 클라이언트로 전송한다. 쿼리문에 파라미터가 포함된 경우에는 오버로드된 메소드를 이용한다.

이 메소드는 조회서비스 작성시에 연결된 DB에 대하여 DB를 Open하여 쿼리문을 수행(ExecuteReader)하고 결과셋을 입력된 IXYNC DataSet에 Fill(addDataRowValue, addDataRow)하여 클라이언트로 전송(IXyncDataSet.end) 하는 과정을 자동화한 메소드 이다.

이 메소드는 주로 클라이언트로 전송할 데이터셋의 특정컬럼을 추가 또는 변경하는 작업이 필요한 경우에 사용한다.

void postSelect_byDataSet (IXyncConnection oGaConn, IXyncDataSet IXyncDS,

                           string strSql)

void postSelect_byDataSet (IXyncConnection oGaConn, IXyncDataSet IXyncDS,

                           string strSql, IXyncParameter lparam)

void postSelect_byDataSet (IXyncConnection oGaConn, IXyncDataSet IXyncDS,

                           string strSql, IXyncParameter lparam,

                           object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strDataSetName

결과 데이터를 담을 IXyncDataSet 이름을 지정한다. 이 이름은 클라이언트의 Tr 콤포넌트에서 지정한 서버쪽 DataSet이름이다. 즉, Tr 콤포넌트에서 다음과 같이 지정했다면 ASPX(O:output1=ga_dataset) ‘output1’으로 지정해야 한다.

string strSql

DB 쿼리문을 지정한다.

IXyncParameter lparam

DB 쿼리문에 파라미터가 포함된 경우에 SortedList에 이름/값 쌍으로 파라미터값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

이때 DB Provider가 PROVIDERTYPE_OLEDB인 경우에는 파라미터 이름과 순서에 특별히 주의를 기울여야만 한다. 파라미터 이름은 Add 한 정렬순서가 바뀌지 않도록 지정해 주어야 한다.

예를들면, 다음과 같이 지정해 주면될 것이다.

예1)

IXyncParameter param = new IXyncParameter();

param.Add("param1", oGBasePage.getStringParam("empid"));

param.Add("param2", oGBasePage.getStringParam("empname"));

param.Add("param3",  

                oGBasePage.getStringParam("empaddress"));

 

다음의 예는 잘못 지정한 예이다.

예2)

IXyncParameter param = new IXyncParameter();

param.Add("empid", oGBasePage.getStringParam("empid"));

param.Add("empname",oGBasePage.getStringParam("empname"));

param.Add("empaddress",

                 oGBasePage.getStringParam("empaddress"));

위와 같이 파라미터를 지정하게 되면 Add한 순서는 empid, empname, empaddress 이지만, SortedList에 저장된 순서는 empaddress, empid, empname 순으로 바뀌게 되어 엉뚱한

결과를 가져오게 된다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

 

사용예제)

bool bPrintResult = false;

string SelectSql = null;

// Transaction 객체를 선언합니다.

IDbTransaction oTr = null;

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try {

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if(oGBasePage.getStringIXyncParam("RequestData") == "IXYNC_NET_DATA"){

bPrintResult = true;

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

SelectSql = "select * from emp where empid = @param1";

IXyncParameter param = new IXyncParameter();

param.Add("param1", oGBasePage.getStringParam("empid"));

// Transaction을 시작합니다.

oTr = oConn.beginTransaction();

 

// IXYNC DataSet을 생성한다.

IXyncDataSet oDataSet =

                 oGBasePage.IXyncService.newDataSet("output1");

// 타입 또는 사이즈 변경등을 원하는 컬럼에 대해서만 헤더를 수정한다.

oDataSet.addChangingDataColumn("name",

                             IXyncVariable.ColumnDataType.URL);

       

oGBasePage.postSelect_byDataSet (oConn, oDataSet, SelectSql,

                                 param, oTr);

}

}

catch (Exception except){

    oGBasePage.addMessage("System", "90001", except.Message);

    oGBasePage.setResult(false);

}

finally{

    if(bPrintResult == true) {

        // printMessage() 이전에 처리해 줍니다.

        if(oTr != null) {

            if (oGBasePage.getResult())

                oTr.Commit();

            else

                oTr.Rollback();

        }

// 클라이언트로 작업결과를 전송합니다.

        oGBasePage.printMessage();

        // IXyncBasePage객체를 해제합니다.

        // Release의 파리미터값이 true인 경우는 화면코드가 클라이언트로

        // 전송되지 않습니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

        oGBasePage.Release(true);

     }

     else{

        // IXyncBasePage객체를 해제합니다.

        // Release의 파리미터값이 false(또는 지정하지 않음)인 경우는

        // 화면코드가 클라이언트로 전송됩니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

         oGBasePage.Release();

     }

}

 

·      postSelect_byDataSet2 (+1개 오버로드)

POST 방식의 요청을 연결된 DB Connection에 대하여 쿼리문을 수행하여 결과데이터셋을 클라이언트로 전송한다.

쿼리문에 파라미터가 포함된 경우에는 IXyncParameter 클래스를 이용하여 DB 파라미터를 관리합니다. IXyncParameter 객체를 생성하여 파라미터 추가시 DB 파라미터의 키, 값뿐만 아니라 DB Type, Size, Precision, Scale, Direction 등을 명시적으로 지정하여 좀 더 세밀하게 DB 파라미터를 관리할 수 있습니다. (IXyncParameterProperty 참조)

void postSelect_byDataSet (IXyncConnection oGaConn,

                IXyncDataSet IXyncDS,string strSql,IXyncParameter lparam)

void postSelect_byDataSet (IXyncConnection oGaConn, IXyncDataSet IXyncDS,

                string strSql,IXyncParameter lparam,object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strDataSetName

결과 데이터를 담을 IXyncDataSet 이름을 지정한다. 이 이름은 클라이언트의 Tr 콤포넌트에서 지정한 서버쪽 DataSet이름이다. 즉, Tr 콤포넌트에서 다음과 같이 지정했다면 ASPX(O:output1=ga_dataset) ‘output1’으로 지정해야 한다.

string strSql

DB 쿼리문을 지정한다.

IXyncParameter lparam

DB 쿼리문에 파라미터가 포함된 경우에 SortedList에 이름/값 쌍으로 파라미터값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

이때 DB Provider가 PROVIDERTYPE_OLEDB인 경우에는 파라미터 이름과 순서에 특별히 주의를 기울여야만 한다. 파라미터 이름은 Add 한 정렬순서가 바뀌지 않도록 지정해 주어야 한다.

예를들면, 다음과 같이 지정해 주면될 것이다.

예1)

IXyncParameter param = new IXyncParameter();

param.Add("param1", oGBasePage.getStringParam("empid"));

param.Add("param2", oGBasePage.getStringParam("empname"));

param.Add("param3",  

                oGBasePage.getStringParam("empaddress"));

다음의 예는 잘못 지정한 예이다.

예2)

IXyncParameter param = new IXyncParameter();

param.Add("empid", oGBasePage.getStringParam("empid"));

param.Add("empname",oGBasePage.getStringParam("empname"));

param.Add("empaddress",

                 oGBasePage.getStringParam("empaddress"));

위와 같이 파라미터를 지정하게 되면 Add한 순서는 empid, empname, empaddress 이지만, SortedList에 저장된 순서는 empaddress, empid, empname 순으로 바뀌게 되어 엉뚱한

결과를 가져오게 된다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

IXyncParameter lparam

DB 쿼리문에 파라미터가 포함된 경우에 IXyncParameter에 이름/값 쌍으로 파라미터 값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter oGparam = new IXyncParameter();

oGparam.add("empid", oGBasePage.getStringParam("empid"));

oGparam.add("empname",

                  oGBasePage.getStringParam("empname"));

oGparam.add("empaddress",

                oGBasePage.getStringParam("empaddress"));

한편, oGparam.add 에서 param의 value값은 실제 DB에 입력될 필드타입에 따라 Conver 되야 할 필요가 있을 수 있다. 예를들어 DB필드 타입이 DateTime인 필드를 파라미터 값으로 설정/입력하고자 한다면 다음과 같이 명시적으로 타입을 Convert 하거나, DB필드 타입 파라미터를 사용한다.

- 명시적으로 타입을 Convert한 예)

oGparam.add("param1",

      Convert.ToDateTime(oGBasePage.getStringParam("hiredata")));

- DB필드 타입 파라미터를 사용한 예)

oGparam.add("param1",oGBasePage.getStringParam("hiredata"),

      IXyncVariable.DbType.DateTime);

 

사용예제)

bool bPrintResult = false;

string SelectSql = null;

IDbTransaction oTr = null; // Transaction 객체를 선언합니다.

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try{

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if (oGBasePage.getStringIXyncParam("RequestData") == "IXYNC_NET_DATA"){

bPrintResult = true;

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

SelectSql = "select * from emp where empid = @empid";

IXyncParameter oGparam = new IXyncParameter();

oGparam.add("empid ", oGBasePage.getStringParam("empid"));

 

// Transaction을 시작합니다.

oTr = oConn.beginTransaction();

// IXYNC DataSet을 생성한다.

IXyncDataSet oDataSet=

                   oGBasePage.IXyncService.newDataSet("output1");

//타입 또는 사이즈 변경등을 원하는 컬럼에 대해서만 헤더를 수정한다.

oDataSet.addChangingDataColumn("name",

                               IXyncVariable.ColumnDataType.URL);

        oGBasePage.postSelect_byDataSet (oConn, oDataSet, SelectSql,

                               oGparam, oTr);

}

}

catch (Exception except){

    oGBasePage.addMessage("System", "90001", except.Message);

    oGBasePage.setResult(false);

}

finally{

    if(bPrintResult == true) {

        // printMessage() 이전에 처리해 줍니다.

        if(oTr != null) {

            if (oGBasePage.getResult())

                oTr.Commit();

            else

                oTr.Rollback();

        }

// 클라이언트로 작업결과를 전송합니다.

        oGBasePage.printMessage();

        // IXyncBasePage객체를 해제합니다.

        // Release의 파리미터값이 true인 경우는 화면코드가 클라이언트로

        // 전송되지 않습니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

        oGBasePage.Release(true);

     }

     else {

        // IXyncBasePage객체를 해제합니다.

        // Release의 파리미터값이 false(또는 지정하지 않음)인 경우는

        // 화면코드가 클라이언트로 전송됩니다.

        // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

         oGBasePage.Release();

     }

}

 

·      multiSelect (+1개 오버로드)

여러 개의 조회 서비스작업을 하나의 서비스에서 처리할 수 있도록 지원하는 메소드이다. 각 파라미터는 배열형태로 되어 있으며, 조회 서비스의 개수만큼 모든 파라미터들은 같은 배열크기를 선언하여 사용한다.

void multiSelect(IXyncConnection [] oaGaConn, string [] staDataSetName,

string [] staSql)

void multiSelect(IXyncConnection [] oaGaConn, string [] staDataSetName,

                 string [] staSql, IXyncParameter [] alparam)

 

Parameter 명

설명

IXyncConnection[] oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string[] strDataSetName

결과 데이터를 담을 IXyncDataSet 이름을 지정한다. 이 이름은 클라이언트의 Tr 콤포넌트에서 지정한 서버쪽 DataSet이름이다. 즉, Tr 콤포넌트에서 다음과 같이 지정했다면 ASPX(O:output1=ga_dataset) ‘output1’으로 지정해야 한다.

string[] strSql

DB 쿼리문을 지정한다.

IXyncParameter[] lparam

DB 쿼리문에 파라미터가 포함된 경우에 SortedList에 이름/값 쌍으로 파라미터값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

이때 DB Provider가 PROVIDERTYPE_OLEDB인 경우에는 파라미터 이름과 순서에 특별히 주의를 기울여야만 한다. 파라미터 이름은 Add 한 정렬순서가 바뀌지 않도록 지정해 주어야 한다.

예를들면, 다음과 같이 지정해 주면될 것이다.

예1)

IXyncParameter param = new IXyncParameter();

param.Add("param1", oGBasePage.getStringParam("empid"));

param.Add("param2", oGBasePage.getStringParam("empname"));

param.Add("param3",                 oGBasePage.getStringParam("empaddress"));

 

다음의 예는 잘못 지정한 예이다.

예2)

IXyncParameter param = new IXyncParameter();

param.Add("empid", oGBasePage.getStringParam("empid"));

param.Add("empname",

                                oGBasePage.getStringParam("empname"));

param.Add("empaddress", 

                                oGBasePage.getStringParam("empaddress"));

위와 같이 파라미터를 지정하게 되면 Add한 순서는 empid, empname, empaddress 이지만, SortedList에 저장된 순서는 empaddress, empid, empname 순으로 바뀌게 되어 엉뚱한 결과를 가져오게 된다.

 

사용예제)

bool bPrintResult = false;

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try {

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if (oGBasePage.getStringIXyncParam("RequestData") == "IXYNC_NET_DATA"){

string [] staSql = {null, null};

string [] staDataSet = {"output1", "output2"};

bPrintResult = true;

IXyncConnection [] oaConn = {null, null};

oaConn[0] = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

oaConn[1] = oGBasePage.IXyncDbHelper.addConnection (

"conn2",

IXyncVariable.DbProviderType.OLEDB,

null,

300);

 

staSql[0] = "select * from emp where empid = @param1";

staSql[1] = "select * from jobs where jobid = ?";

 

IXyncParameter [] htaParam = {new IXyncParameter(), new IXyncParameter()};

htaParam[0].Add("param1", oGBasePage.getStringParam("empid"));

htaParam[1].Add("param1", oGBasePage.getStringParam("jobid"));

 

oGBasePage.multiSelect (oaConn, staDataSet, staSql, htaParam);

}

}

catch (Exception except){

oGBasePage.addMessage("System", "90001", except.Message);

oGBasePage.setResult(false);

}

finally{

// 서비스 객채를 해제한다.

if(bPrintResult == true){

oGBasePage.printMessage();

oGBasePage.Release(true);

}

else

oGBasePage.Release();

}

 

·      multiSelect_byDataSet (+1개 오버로드)

여러 개의 조회 서비스작업을 하나의 서비스에서 처리할 수 있도록 지원하는 메소드이다. 각 파라미터는 배열형태로 되어 있으며, 조회 서비스의 개수만큼 모든 파라미터들은 같은 배열크기를 선언하여 사용한다.

이 메소드는 주로 클라이언트로 전송할 데이터셋의 특정컬럼을 추가 또는 변경하는 작업이 필요한 경우에 사용한다.

void multiSelect_byDataSet(IXyncConnection [] oaGaConn,

      IXyncDataSet [] aDataSets, string [] staSql)

void multiSelect_byDataSet(IXyncConnection [] oaGaConn,

      IXyncDataSet [] aDataSets, string [] staSql, IXyncParameter [] alparam)

 

Parameter 명

설명

IXyncConnection[] oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

IXyncDataSet [] aDataSets

결과 데이터를 담을 IXyncDataSet 객체를 지정한다. 이 객체는 클라이언트의 Tr 콤포넌트에서 지정한 서버쪽 DataSet이다.

즉, Tr 콤포넌트에서 다음과 같이 지정했다면 ASPX(O:output1=ga_dataset) ‘output1’으로 명명된 DataSet 객체를 지정해야 한다.

string[] strSql

DB 쿼리문을 지정한다.

IXyncParameter[] lparam

DB 쿼리문에 파라미터가 포함된 경우에 SortedList에 이름/값 쌍으로 파라미터값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

이때 DB Provider가 PROVIDERTYPE_OLEDB인 경우에는 파라미터 이름과 순서에 특별히 주의를 기울여야만 한다. 파라미터 이름은 Add 한 정렬순서가 바뀌지 않도록 지정해 주어야 한다.

예를들면, 다음과 같이 지정해 주면될 것이다.

예1)

IXyncParameter param = new IXyncParameter();

param.Add("param1", oGBasePage.getStringParam("empid"));

param.Add("param2", oGBasePage.getStringParam("empname"));

param.Add("param3",                 oGBasePage.getStringParam("empaddress"));

 

다음의 예는 잘못 지정한 예이다.

예2)

IXyncParameter param = new IXyncParameter();

param.Add("empid", oGBasePage.getStringParam("empid"));

param.Add("empname",oGBasePage.getStringParam("empname"));

param.Add("empaddress",                 oGBasePage.getStringParam("empaddress"));

위와 같이 파라미터를 지정하게 되면 Add한 순서는 empid, empname, empaddress 이지만, SortedList에 저장된 순서는 empaddress, empid, empname 순으로 바뀌게 되어 엉뚱한 결과를 가져오게 된다.

 

사용예제)

bool bPrintResult = false;

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try

{

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

 

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if (oGBasePage.getStringIXyncParam("RequestData") == "IXYNC_NET_DATA")

{

string [] staDataSet = {"output1", "output2"};

string [] staSql = {null, null};

bPrintResult = true;

 

IXyncConnection [] oaConn = {null, null};

oaConn[0] = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

oaConn[1] = oGBasePage.IXyncDbHelper.addConnection (

"conn2",

IXyncVariable.DbProviderType.OLEDB,

null,

300);

 

staSql[0] = "select * from emp where empid = @param1";

staSql[1] = "select * from jobs where jobid = ?";

 

IXyncParameter [] aParam = {new IXyncParameter(), new IXyncParameter()};

aParam[0].Add("param1", oGBasePage.getStringParam("empid"));

aParam[1].Add("param2", oGBasePage.getStringParam("jobid"));

 

// IXYNC DataSet을 생성한다.

IXyncDataSet [] oaDataSet = {null, null};

oaDataSet[0] = oGBasePage.IXyncService.newDataSet("output1");

oaDataSet[1] = oGBasePage.IXyncService.newDataSet("output2");

// 타입 또는 사이즈 변경등을 원하는 컬럼에 대해서만 헤더를 수정한다.

oaDataSet[0].addChangingDataColumn("name",

                    IXyncVariable.ColumnDataType.URL);

oaDataSet[1].addChangingDataColumn("description",

                    IXyncVariable.ColumnDataType.STRING, 120);

       

oGBasePage.multiSelect_byDataSet (oaConn, oaDataSet,

                                  staSql, aParam);

 

}

}

catch (Exception except)

{

oGBasePage.addMessage("System", "90001", except.Message);

oGBasePage.setResult(false);

}

finally

{

// 서비스 객채를 해제한다.

if(bPrintResult == true)

{

oGBasePage.printMessage();

oGBasePage.Release(true);

}

else

oGBasePage.Release();

}

 

·      execNonQuery (+3개 오버로드)

Insert/Update/Delete 등의 Transaction 작업을 하는데 사용하는 메소드 이다.

반영된 로우 개수를 리턴한다.

int execNonQuery(IXyncConnection oGaConn, string strQuery)

int execNonQuery(IXyncConnection oGaConn, string strQuery,

                IXyncParameter lparam)

int execNonQuery(IXyncConnection oGaConn, string strQuery,

                IXyncParameter lparam,object oTransaction)

int execNonQuery(IXyncConnection oGaConn, string strQuery,

                IXyncParameter lparam, object oTransaction, CommandType cmdType)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strSql

DB 쿼리문을 지정한다.

IXyncParameter lparam

DB 쿼리문에 파라미터가 포함된 경우에 SortedList에 이름/값 쌍으로 파라미터값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

이때 DB Provider가 PROVIDERTYPE_OLEDB인 경우에는 파라미터 이름과 순서에 특별히 주의를 기울여야만 한다. 파라미터 이름은 Add 한 정렬순서가 바뀌지 않도록 지정해 주어야 한다.

예를들면, 다음과 같이 지정해 주면될 것이다.

예1)

IXyncParameter param = new IXyncParameter();

param.Add("param1",oGBasePage.getStringParam("empid"));

param.Add("param2",

                oGBasePage.getStringParam("empname"));

param.Add("param3",  

                oGBasePage.getStringParam("empaddress"));

 

다음의 예는 잘못 지정한 예이다.

예2)

IXyncParameter param = new IXyncParameter();

param.Add("empid", oGBasePage.getStringParam("empid"));

param.Add("empname",

                oGBasePage.getStringParam("empname"));

param.Add("empaddress",

                 oGBasePage.getStringParam("empaddress"));

위와 같이 파라미터를 지정하게 되면 Add한 순서는 empid, empname, empaddress 이지만, SortedList에 저장된 순서는 empaddress, empid, empname 순으로 바뀌게 되어 엉뚱한

결과를 가져오게 된다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

CommandType cmdType

Command객체의 명령타입을 지정한다. 이 메소드에서는 Text와 Table만을 지원한다. StoredProcedure를 사용하려면 execSelectStoredProcedure나 execTrStoredProcedure메소드를 이용하도록 한다.

 

사용예제)

bool bPrintResult = false;

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try

{

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if(oGBasePage.getStringIXyncParam("RequestData")=="IXYNC_NET_DATA_TR"){

string strSql = null;

bPrintResult = true;

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.OLEDB,

null,

0);

 

IXyncDataSet oDataSet

                   = oGBasePage.IXyncService.getDataSet("input1");

DataTable dtTable = oDataSet.Tables[0];

for(int i=0; i < dtTable.Rows.Count; i++){

DataRow drRow = dtTable.Rows[i];

// insert

if(oDataSet. isInsertRow(i)){

strSql = "insert into Grid2(sabun ,name , amt1 , amt2, chk, gubun ) values (?, ?, ?, ?, ?, ?)";

IXyncParameter param = new IXyncParameter();

param.Add ( "param1", drRow["sabun"]);

param.Add ( "param2", drRow["name"]);

param.Add ( "param3", drRow["amt1"]);

param.Add ( "param4", drRow["amt2"]);

param.Add ( "param5", drRow["chk"]);

param.Add ( "param6", drRow["gubun"]);

 

oGBasePage.execNonQuery(oConn, strSql, param);

}

// update

else if(oDataSet .isUpdateRow(i)) {

strSql = "update Grid2 set name=?, amt1=?, amt2=?, chk=?, gubun=? where sabun=?";

IXyncParameter param = new IXyncParameter();

param.Add ( "parm1", drRow["name"]);

param.Add ( "parm2", drRow["amt1"]);

param.Add ( "parm3", drRow["amt2"]);

param.Add ( "parm4", drRow["chk"]);

param.Add ( "parm5", drRow["gubun"]);

param.Add ( "parm6", drRow["sabun"]);

 

oGBasePage.execNonQuery(oConn, strSql, param);

}

// delete

else if(oDataSet.isDeleteRow(i)){

    strSql = "delete from Grid2 where sabun = ?";

    IXyncParameter param = new IXyncParameter();

    param.Add ( "parm1", drRow["sabun"]);

    oGBasePage.execNonQuery(oConn, strSql, param);

}

}

}

catch (Exception except)

{

oGBasePage.addMessage("System", "90001", except.Message);

oGBasePage.setResult(false);

}

finally

{

// 서비스 객채를 해제한다.

if(bPrintResult == true){

oGBasePage.printMessage();

oGBasePage.Release(true);

}

else

oGBasePage.Release();

}

 

·      execSelectStoredProcedure

조회전용 스토어드 프로시져를 수행하는 메소드이다.

void execSelectStoredProcedure( IXyncConnection oGaConn,

                              string strProcedureName,

                              IXyncParameter inputParam,

                              IXyncParameter outputParam,

                                IXyncParameter returnParam,

                                object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strProcedureName

스토어드프로시져 이름을 입력한다.

IXyncParameter inputParam

Input용 파라미터를 SortedList에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter outputParam

output용 파라미터를 SortedList에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter returnParam

return용 파라미터를 SortedList에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

 

사용예제)

bool bPrintResult = false;

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try{

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

 

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if ( oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA" ){

bPrintResult = true;

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

 

IXyncParameter inputParam = new IXyncParameter();

inputParam.Add("empid", oGBasePage.getStringParam("empid"));

oGBasePage.execSelectStoredProcedure (oConn,

"LJH_PROC00",

inputParam,

null,

null,

null

);

}

}

catch (Exception except){

oGBasePage.addMessage("System", "90001", except.Message);

oGBasePage.setResult(false);

}

finally{

// 서비스 객채를 해제한다.

if(bPrintResult == true){

oGBasePage.printMessage();

oGBasePage.Release(true);

}

else

oGBasePage.Release();

}

 

·      execSelectStoredProcedure_byDataSet

   조회전용 스토어드 프로시져를 수행하는 메소드이다. 미리 정의된 IXyncDataSet에 결과 셋을 담아올 때 사용한다.

 

void execSelectStoredProcedure_byDataSet ( IXyncConnection oGaConn,                                 

string strProcedureName,

IXyncParameter inputParam,

IXyncParameter outputParam,

IXyncParameter returnParam,

                                object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strProcedureName

스토어드프로시져 이름을 입력한다.

IXyncParameter inputParam

Input용 파라미터를 SortedList에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter outputParam

output용 파라미터를 SortedList에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter returnParam

return용 파라미터를 SortedList에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try {

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if ( oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA"){

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

IXyncParameter inputParam = new IXyncParameter();

inputParam.Add("empid", oGBasePage.getStringParam("empid"));

oGBasePage.execSelectStoredProcedure (oConn,

"LJH_PROC00",

inputParam,

null,null,null);

}

}

catch (Exception except){

oGBasePage.addMessage("System", "90001", except.Message);

oGBasePage.setResult(false);

}

finally{

// 서비스 객채를 해제한다.

oGBasePage.Release();

}

 

·      execSelectStoredProcedure2_byDataSet

execSelectStoredProcedure 메소드와 기능은 동일하지만, IXyncParameter 파라미터 대신 IXyncParameter 클래스를 이용하여 DB 파라미터를 관리하고자 할 때 사용합니다.

IXyncParameter 객체를 생성하여 파라미터 추가시 DB 파라미터의 키, 값뿐만 아니라 DB Type, Size, Precision, Scale, Direction 등을 명시적으로 지정하여 좀 더 세밀하게 DB 파라미터를 관리할 수 있습니다. (IXyncParameterProperty 참조)

미리 정의된 IXyncDataSet에 결과 셋을 담아올 때 사용합니다.

 

void execSelectStoredProcedure2(IXyncConnection oGaConn,

IXyncDataSet oGaDataSet,

string strProcedureName,

IXyncParameter inputParam,

IXyncParameter outputParam,

IXyncParameter returnParam,

                                object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

IXyncDataSet oGaDataSet

프로시져 실행 결과를 담기 위해 미리 정의한 IX-SERVER 데이터셋 객체를 지정한다.

string strProcedureName

스토어드프로시져 이름을 입력한다.

IXyncParameter inputParam

Input용 파라미터를 IXyncParameter 에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter outputParam

output용 파라미터를 IXyncParameter 에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter returnParam

return용 파라미터를 IXyncParameter 에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try{

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if ( oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA" ){

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

IXyncParameter inputParam = new IXyncParameter();

inputParam.add("name", oGBasePage.getStringParam("empname"),

               IXyncVariable.DbType.String);

IXyncDataSet oGaDataSet =

                    oGBasePage.IXyncService.newDataSet("output1");

 

oGaDataSet.addChangingDataColumn ("org_name", "map_name",

                    IXyncVariable.ColumnDataType.TB_STRING, 24);

 

oGBasePage.execSelectStoredProcedure2 (oConn,

                                      oGaDataSet,

"LJH_PROC00",

inputParam,

null,

null,

null);

}

}

catch (Exception except){

oGBasePage.addMessage("System", "90001", except.Message);

oGBasePage.setResult(false);

}

finally{

// 서비스 객채를 해제한다.

oGBasePage.Release();

}

 

·      execTrStoredProcedure

Transaction 전용 스토어드 프로시져를 수행하는 메소드이다. 이 메소드는 스토어드프로시져의 리턴값들을 정의한 IXyncProcedureReturn 객체를 리턴한다.

IXyncProcedureReturn 객체에는 다음과 같은 속성과 메소드들이 있다.

[IXyncProcedureReturn]

- ProviderType: DB Privider 타입값이다. 이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

     - AppliedRowCount: 프로시져 수행결과 반영된 로우개수

     - Parameters:

       프로시져 실행 시 입력한 파라미터들을 저장하고 있는 해쉬테이블이다.

     - object getParameterValue (string stParameterName):

                입력한 파라미터의 값을 파라미터 이름을 통하여 얻어낸다.

 

IXyncProcedureReturn execTrStoredProcedure( IXyncConnection oGaConn,

string strProcedureName,

IXyncParameter inputParam,

IXyncParameter outputParam,

IXyncParameter returnParam,

                                object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strProcedureName

스토어드프로시져 이름을 입력한다.

IXyncParameter inputParam

Input용 파라미터를 SortedList에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter outputParam

output용 파라미터를 SortedList에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter returnParam

return용 파라미터를 SortedList에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

 

사용예제)

bool bPrintResult = false;

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try{

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

 

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if (oGBasePage.getStringIXyncParam("RequestData")== "IXYNC_NET_DATA_TR"){

bPrintResult = true;

 

IXyncDataSet oDataSet = oGBasePage.IXyncService.getDataSet("input1");

DataTable dtTable = oDataSet.Tables[0];

 

for(int i=0; i < dtTable.Rows.Count; i++){

DataRow drRow = dtTable.Rows[i];

// insert

if(oDataSet.isInsertRow(i)) {

IXyncParameter inputParam = new IXyncParameter();

inputParam.Add ( "id", drRow["id"]);

inputParam.Add ( "name", drRow["name"]);

inputParam.Add ( "age", drRow["age"]);

inputParam.Add ( "address", drRow["address"]);

inputParam.Add ( "dept", drRow["dept"]);

 

IXyncParameter outputParam = new IXyncParameter();

outputParam.Add ("outid", "");

outputParam.Add ("outname", "");

 

IXyncParameter returnParam = new IXyncParameter();

returnParam.Add ("returnValue", "");

 

IXyncProcedureReturn structProcRet

= oGBasePage.execTrStoredProcedure( oConn,

"LJH_TR_PROC01",

inputParam,

outputParam,

returnParam,

null);

                 int nAppliedRowcnt = structProcRet.AppliedRowCount;

                 int strOutputValue1 = Convert.ToInt32(structProcRet.

                                                  getParameterValue("outid"));

                 string strOutputValue2 = Convert.ToString(structProcRet.

                                                getParameterValue("outname"));

int strReturnValue =  Convert.ToInt32(structProcRet.

                           getParameterValue("returnValue"));

}// end of if

   }// end of for

   }//end of if

}// end of try

catch (Exception except){

oGBasePage.addMessage("System", "90001", except.Message);

oGBasePage.setResult(false);

}

finally{

// 서비스 객채를 해제한다.

if(bPrintResult == true){

oGBasePage.printMessage();

oGBasePage.Release(true);

}

else

oGBasePage.Release();

}

 

·      execTrStoredProcedure2

Transaction 전용 스토어드 프로시져를 수행하는 메소드이다. 이 메소드는 스토어드프로시져 의 리턴값들을 정의한 IXyncProcedureReturn 객체를 리턴한다. IXyncProcedureReturn 객체에는 다음과 같은 속성과 메소드들이 있다.

쿼리문에 파라미터가 포함된 경우에는 IXyncParameter 클래스를 이용하여 DB 파라미터를 관리합니다. IXyncParameter 객체를 생성하여 파라미터 추가시 DB 파라미터의 키, 값뿐만 아니라 DB Type, Size, Precision, Scale, Direction 등을 명시적으로 지정하여 좀 더 세밀하게 DB 파라미터를 관리할 수 있습니다. (IXyncParameterProperty 참조)

[IXyncProcedureReturn]

- ProviderType: DB Privider 타입값이다. 이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

     - AppliedRowCount: 프로시져 수행결과 반영된 로우개수

     - Parameters:

         프로시져실행시 입력한 파라미터들을 저장하고 있는 해쉬테이블이다.

     - object getParameterValue (string stParameterName):

         입력한 파라미터의 값을 파라미터 이름을 통하여 얻어낸다

 

IXyncProcedureReturn execTrStoredProcedure2(IXyncConnection oGaConn,

string strProcedureName,

IXyncParameter inputParam,

IXyncParameter outputParam,

IXyncParameter returnParam,

                                            object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strProcedureName

스토어드프로시져 이름을 입력한다.

IXyncParameter inputParam

Input용 파라미터를 IXyncParameter 에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter outputParam

output용 파라미터를 IXyncParameter 에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter returnParam

return용 파라미터를 IXyncParameter 에 이름/값 쌍으로 저장한다. 파라미터가 없으면 null을 입력한다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

 

사용예제)

bool bPrintResult = false;

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try {

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

 

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if(oGBasePage.getStringIXyncParam("RequestData") == "IXYNC_NET_DATA_TR"){

bPrintResult = true;

IXyncDataSet oDataSet =

                    oGBasePage.IXyncService.getDataSet("input1");

DataTable dtTable = oDataSet.Tables[0];

for(int i=0; i < dtTable.Rows.Count; i++){

DataRow drRow = dtTable.Rows[i];

// insert

if(oDataSet.isInsertRow(i)) {

IXyncParameter inputParam = new IXyncParameter();

              inputParam.add ( "id", drRow["id"]);

              inputParam.add ( "name", drRow["name"]);

              inputParam.add ( "age", drRow["age"]);

              inputParam.add ( "address", drRow["address"]);

inputParam.add ( "dept", drRow["dept"]);

 

IXyncParameter outputParam = new IXyncParameter();

              outputParam.add ("outid", " ");

              outputParam.add ("outname", " ");

 

              IXyncParameter returnParam = new IXyncParameter();

returnParam.add ("returnValue", 0);

 

IXyncProcedureReturn structProcRet =

oGBasePage.execTrStoredProcedure2 (oConn, "LJH_TR_PROC01", inputParam, outputParam, returnParam, null);

 

int nAppliedRowcnt = structProcRet.AppliedRowCount;

                int strOutputValue1 =

                Convert.ToInt32(structProcRet.getParameterValue("outid"));

                string strOutputValue2 =

             Convert.ToString(structProcRet.getParameterValue("outname"));

int strReturnValue = Convert.ToInt32(structProcRet.getParameterValue("returnValue"));

}

}

  }

}

catch (Exception except){

oGBasePage.addMessage("System", "90001", except.Message);

oGBasePage.setResult(false);

}

finally{

// 서비스 객채를 해제한다.

if(bPrintResult == true){

oGBasePage.printMessage();

oGBasePage.Release(true);

}

else

oGBasePage.Release();

}

 

·      downloadFile (+1개 오버로드)

서버의 특정디렉터리에 저장되어 있는 BLOB데이터(File)를 다운로드 받는 메소드 이다.

void downloadFile(string strFileFullPath )

void downloadFile(string strMappath, string strFilename)

 

Parameter 명

설명

string strFileFullPath

파일이 위치해 있는 곳을 가리키는 전체경로이다.

string strMappath

파일이 위치해 있는 디렉터리 경로를 웹서버의 입장에서 기술한 값이다. 즉, 웹서버의 디렉터리 Aliasing 값이다.

string strFilename

파일이름을 입력한다.

사용예제)

 

deleteFile 예제를 참조하시오

 

 

·      saveFile (+1개 오버로드)

서버의 특정디렉터리에 BLOB데이터(File)를 저장하는 메소드 이다.

void saveFile(string strFileFullPath, byte[] bData)

void saveFile(string strMappath, string strFilename, byte[] bData)

 

Parameter 명

설명

string strFileFullPath

파일이 위치해 있는 곳을 가리키는 전체경로이다.

byte[] bData

BOBL Data(File Binary Data) 값이다.

string strMappath

파일이 위치해 있는 디렉터리 경로를 웹서버의 입장에서 기술한 값이다. 즉, 웹서버의 디렉터리 Aliasing 값이다.

string strFilename

파일이름을 입력한다.

사용예제)

 

deleteFile 예제를 참조하시오

 

 

·      deleteFile (+1개 오버로드)

서버의 특정디렉터리에 BLOB데이터(File)를 삭제하는 메소드 이다.

void deleteFile( string strFileFullPath)

void deleteFile( string strMappath, string strFileName )

 

Parameter 명

설명

string strFileFullPath

파일이 위치해 있는 곳을 가리키는 전체경로이다.

string strMappath

파일이 위치해 있는 디렉터리 경로를 웹서버의 입장에서 기술한 값이다. 즉, 웹서버의 디렉터리 Aliasing 값이다.

string strFilename

파일이름을 입력한다.

 

사용예제)

bool bPrintResult = false;

string strSql = ""; // 쿼리문을 저장할 변수

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

try{

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

                             0);

if (oGBasePage.getStringParam("RequestData") =="IXYNC_NET_DATA_SELECT"){ 

// BLOB 데이터 리스트 조회

bPrintResult = true;

strSql = "select data_name, data_url from Blob";

IXyncDataSet oOutDataSet =

                 oGBasePage.IXyncService.newDataSet("output1");

oOutDataSet.addChangingDataColumn("name",

                  IXyncVariable.ColumnDataType.URL);

oGBasePage.commonSelect_byDataSet(oConn, oOutDataSet, strSql);

}

else if (oGBasePage.getStringIXyncParam("RequestData")

                                              =="IXYNC_NET_DATA_TR"){

    // Transaction 작업을 합니다.

    IXyncDataSet oDataSet =

                        oGBasePage.IXyncService.getDataSet("input1");

    DataTable dtTable = oDataSet.Tables[0];

    for(int i=0; i < dtTable.Rows.Count; i++){

        DataRow drRow = dtTable.Rows[i];

        if(oDataSet.isInsertRow(i)) {// 입력

            byte[] binaryData;

            string strFilename = drRow["data_name"].ToString();

            binaryData =  (byte[])drRow["data_url"];

           

            oGBasePage.saveFile ("/IXyncNetDemo40/blob",

strFilename,

binaryData);

           

            // Insert 쿼리문을 작성합니다.

          strSql="insert into Blob(data_name ,data_url) values(?, ?)";

           

            IXyncParameter oGparam = new IXyncParameter();

            oGparam.add ( " data_name", drRow["data_name"]);

            oGparam.add ( " data_url",

"./blob.aspx?RequestData=IXYNC_NET_DATA_GETBLOB&data_name="

+ Server.UrlEncode((string)drRow["data_name"]));

oGBasePage.execNonQuery2(oConn, strSql, oGparam);

}

else if(oDataSet.isUpdateRow(i)){  

   // Update 쿼리문을 작성합니다.

//BLOB데이터는 Update문을 수행하지 않습니다.

}

else if(oDataSet.isDeleteRow(i)){ // delete

    oGBasePage.deleteFile("/IXyncNetDemo40/blob",

drRow["data_name"].ToString());

                // Delete 쿼리문을 작성합니다.

                strSql = "delete from Blob where data_name = @data_name";

IXyncParameter oGparam = new IXyncParameter();

                oGparam.add ("data_name", drRow["data_name"]);

                oGBasePage.execNonQuery2(oConn, strSql, oGparam);

}

    }

    oDataSet.Clear();

}

else if (oGBasePage.getStringParam("RequestData")

                                         == "IXYNC_NET_DATA_GETBLOB")

{

    // 파일을 다운로드합니다.

    bPrintResult = true;

    string strFilename = oGBasePage.getStringParam("data_name");

    oGBasePage.downloadFile("/IXyncNetDemo40/blob", strFilename);

}

}

catch (Exception except){

oGBasePage.addMessage("System", "90001", except.Message);

oGBasePage.setResult(false);

}

finally{

// 서비스 객채를 해제한다.

if(bPrintResult == true){

oGBasePage.printMessage();

oGBasePage.Release(true);

}

else

oGBasePage.Release();

}

 

·      getBinaryDataFromFile (+1개 오버로드)

서버의 특정디렉터리에 있는 BLOB데이터(File)를 Filestream을 통하여 Binary 데이터로 읽어 들인다.

Byte [] getBinaryDataFromFile ( string strFileFullPath )

Byte [] getBinaryDataFromFile ( string strMappath, string strFileName )

 

Parameter 명

설명

string strFileFullPath

파일이 위치해 있는 곳을 가리키는 전체경로이다.

string strMappath

파일이 위치해 있는 디렉터리 경로를 웹서버의 입장에서 기술한 값이다. 즉, 웹서버의 디렉터리 Aliasing 값이다.

string strFilename

파일이름을 입력한다.

 

사용예제)

string strMapPath = null;

strMapPath = "/IXyncNetSample40/image/icon";

 

IXyncDataSet GDS =  oGBasePage.IXyncService.newDataSet("output1");

GDS.addDataColumn("Tb_img", IXyncVariable.ColumnDataType.BLOB);

GDS.addDataColumn("Tb_img_id", IXyncVariable.ColumnDataType.STRING);

GDS.addDataColumn("Tb_img_size", IXyncVariable.ColumnDataType.INT);

GDS.addDataColumnEnd();

 

byte [] MyBinaryData =

                oGBasePage.getBinaryDataFromFile(strMapPath, "root.bmp");

 

GDS.addDataRowValue("Tb_img", MyBinaryData); //이미지 스트림

GDS.addDataRowValue("Tb_img_id", "root"); //이미지 id

GDS.addDataRowValue("Tb_img_size", MyBinaryData.Length); // 이미지 사이즈

GDS.addDataRow();

 

GDS.end();

 

·      createDirectory (+1개 오버로드)

서버상에 일반권한을 가진 디렉터리를 생성한다.

DirectoryInfo createDirectory ( string strDirFullPath )

DirectoryInfo createDirectory

                       (string strBaseDirMappath, string strSubDirName )

 

Parameter 명

설명

string strDirFullPath

생성할 디렉터리의 절대경로이다. 경로상에 명시된 모든 디렉터리에 대하여 디렉터리가 존재하지 않을 경우는 새롭게 생성한다.

string strBaseDirMappath

하위디렉터리를 생성하기 위한 기준 디렉터리 Map 경로를 입력한다. 만일 기준 디렉터리가 존재하지 않을 경우에는 예외가 발생한다.

string strSubDirName

하위 디렉터리 이름을 입력한다.

 

사용예제1)

oGBasePage.initIXyncPage("default");

// Directory하나를 생성합니다.

// 디렉터리 Path 중간에 디렉터리가 없으면 계속적으로 만들어 간다.

DirectoryInfo oDirInfo = oGBasePage.ceateDirectory("C:\\Temp\\MyTestDir\\sub1");

사용예제2)

oGBasePage.initIXyncPage("default");

// Directory하나를 생성합니다.

// 디렉터리 Path 중간에 디렉터리가 없으면 계속적으로 만들어 간다.

// 첫번째 파라미터를 기준으로 두번째 파라미터의 이름을 가진 서브디렉터리를 생성한다.

DirectoryInfo oDirInfo = oGBasePage.ceateDirectory("C:\\Temp\\MyTestDir", "sub1");

 

·      deleteDirectory

디렉터리를 삭제한다.

DirectoryInfo deleteDirectory ( string strDirFullPath,

                                             bool bDeleteSubDirectory )

 

Parameter 명

설명

string strDirFullPath

삭제할 디렉터리의 절대경로이다.

bool bDeleteSubDirectory

부디렉터리까지 삭제할지 여부를 지정한다. 값이 False일 경우, 만일 하위 디렉터리가 존재하면 예외가 발생하고, True이면 하위 디렉터리가 존재할 경우 하위 디렉터리까지 한꺼번에 삭제한다.

 

사용예제)

oGBasePage.initIXyncPage("default");

// Directory하나를 생성합니다.

// 디렉터리 Path 중간에 디렉터리가 없으면 계속적으로 만들어 간다.

DirectoryInfo oDirInfo = oGBasePage.ceateDirectory(@"C:\Temp\MyTestDir\sub1");

oGBasePage.deleteDirectory("C:\\Temp\\MyTestDir\\sub1", false);

 

·      getBinaryDataFromDB

DataBase에 있는 BLOB데이터(File)를 DataReader를 통하여 Binary 데이터로 읽어 들인다. 클라이언트로 BLOB데이터 이외의 추가적인 파일정보를 보내려고 할 때는 이 메소드를 호출하여 BLOB데이터를 얻은 후 HTTP Header정보를 입력하여 바이너리 데이터를 전송하도록 한다.

Byte [] getBinaryDataFromDB (IXyncConnection oGaConn, string strSql,

                              string strBlobColName)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strSql

BLOB컬럼 데이터를 조회할 DB 쿼리문을 지정한다.

string strBlobColName

조회한 DB컬럼 중 BLOB데이터를 가지고 있는 컬럼명을 지정한다.

 

사용예제)

 

oGBasePage.initIXyncPage("default");

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

                             0);

 

if (oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA_GETBLOB"){

bPrintResult = true;

string strFilename = oGBasePage.getStringParam("data_name");

strSql = "SELECT data_url from img_tbl where data_name ="  

        +"'"+strFilename+"'";

byte[] baData = oGBasePage.getBinaryDataFromDB (oConn, strSql,

                                                           "data_url");

 

/* HTTP Header는 필요시에만 추가 한다. */

//Response.ContentType = "application/unknown";

//Response.AddHeader("Content-Disposition", "attachment; filename="

// + Server.UrlEncode(strFilename).Replace("+", "%20").ToString()); 

Response.BinaryWrite(baData);

Response.Flush();

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IIXyncBasePage API

AJAX.NET이나 Atlas 등 IXyncService객체를 이용하지 않는 서비스 저작시 지원을 위한 클래스 인터페이스 입니다.

(AJAX.NET 구현방법의 자세한 내용은 "IXyncNet_Developement.doc" 문서를 참고.)

PROPERTIES

·      IXyncDbHelper [get, set]

DB 연결객체관리, Transaction 객체관리 등의 Data Service Component(DSC) 역할을 담당하는 DB Helper객체를 담고있는 속성값이다.

사용예제)

IIXyncBasePage oGBasePage = new IXyncBasePage("default");

// DB 연결을 추가한다.

IXyncConnection oConn =

                            oGBasePage.IXyncDbHelper.addConnection("conn1",

                            IXyncVariable.DbProviderType.OLEDB

                             null,  0);

 

·      IXyncLoger [ get, set ]

IX-SERVER에서 발생하는 시스템 상황을 로깅하기 위한 IIXyncLoger 객체를 담고 있는 속성값 이다.

 

METHODS

·      saveFile

서버의 특정디렉터리에 BLOB데이터(File)를 저장하는 메소드 이다.

void saveFile(string strFileFullPath, byte[] bData)

 

Parameter 명

설명

string strFileFullPath

파일이 위치해 있는 곳을 가리키는 전체경로이다.

byte[] bData

BLOB Data(File Binary Data) 값이다.

 

·      deleteFile

서버의 특정디렉터리에 BLOB데이터(File)를 삭제하는 메소드 이다.

void deleteFile( string strFileFullPath)

 

Parameter 명

설명

string strFileFullPath

파일이 위치해 있는 곳을 가리키는 전체경로이다.

 

·      getBinaryDataFromFile

서버의 특정디렉터리에 있는 BLOB데이터(File)를 Filestream을 통하여 Binary 데이터로 읽어 들인다.

Byte [] getBinaryDataFromFile ( string strFileFullPath)

 

Parameter 명

설명

string strFileFullPath

파일이 위치해 있는 곳을 가리키는 전체경로이다.

 

 

·      createDirectory

서버상에 일반권한을 가진 디렉터리를 생성한다.

DirectoryInfo createDirectory ( string strDirectoryFullPath)

 

Parameter 명

설명

string strDirectoryFullPath

생성할 디렉터리의 절대경로이다. 경로상에 명시된 모든 디렉터리에 대하여 디렉터리가 존재하지 않을 경우는 새롭게 생성한다.

 

·      deleteDirectory

디렉터리를 삭제한다.

void deleteDirectory(string strDirectoryFullPath, bool bDeleteSubDirectory)

 

Parameter 명

설명

string strDirectoryFullPath

삭제할 디렉터리의 절대경로이다.

bool bDeleteSubDirectory

부디렉터리까지 삭제할지 여부를 지정한다. 값이 False일 경우, 만일 하위 디렉터리가 존재하면 예외가 발생하고, True이면 하위 디렉터리가 존재할 경우 하위 디렉터리까지 한꺼번에 삭제한다.

 

·      convertDataReaderToDataSet

DataReader객체를 .NET DataSet을 변환하여 리턴한다.

DataSet convertDataReaderToDataSet (IDataReader oiDataReader)

 

Parameter 명

설명

IDataReader oiDataReader

.NET DataSet으로 변환할 DataReader를 지정한다.

 

·      ReleaseDbHelper

IXyncBasePage에서 최종적으로 호출되는 릴리즈 메소드 이다. 이 메소드는 DBHelper 객체에서 관리하는 각종 리소스들을 릴리즈 한다.

(For Ajax.Net 에서만 사용 )

void ReleaseDbHelper()

 

사용예제)

// Ajax.Net 에서 IXync를 연동하여 서비스 작성시 IIXyncBasePage를

// 이용합니다.

IIXyncBasePage oGBase =  null;

DataSet oRetValue = null;

string strQuery = "";

try{

    oGBase = new IXyncBasePage("default");

    IXyncConnection oConn = oGBase.IXyncDbHelper.addConnection("conn1",

                            IXyncVariable.DbProviderType.OLEDB, null, 0);

    strQuery = "select * from emp where name like '%' + @name + '%'";

    IXyncParameter oParam = new IXyncParameter();

    oParam.add("name", "searchEmpname");

    oRetValue = oGBase.IXyncDbHelper.buildDataSet(oConn, strQuery,

                                                        "emp", oParam);

}

catch(Exception exp){   

    throw new Exception(exp.Message);

}

finally{// 객체에서 관리하는 각종 리소스들을 릴리즈 한다

    if(oGBase != null)

        oGBase.ReleaseDbHelper();

}

 

·      execNonQuery2 (+3개 오버로드)

Insert/Update/Delete 등의 Transaction 작업을 하는데 사용하는 메소드 이다.

반영된 로우 개수를 리턴한다.

쿼리문에 파라미터가 포함된 경우에는 IXyncParameter 클래스를 이용하여 DB 파라미터를 관리합니다. IXyncParameter 객체를 생성하여 파라미터 추가시 DB 파라미터의 키, 값뿐만 아니라 DB Type, Size, Precision, Scale, Direction 등을 명시적으로 지정하여 좀 더 세밀하게 DB 파라미터를 관리할 수 있습니다. (IXyncParameterProperty참조)

int execNonQuery2(IXyncConnection oGaConn, string strQuery)

int execNonQuery2(IXyncConnection oGaConn, string strQuery,

IXyncParameter lparam)

int execNonQuery2(IXyncConnection oGaConn, string strQuery,

IXyncParameter lparam, object oTtransaction)

int execNonQuery2(IXyncConnection oGaConn, string strQuery,

IXyncParameter lparam,

                 object oTtransaction,CommandType cmdType)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strQuery

DB 쿼리문을 지정한다.

IXyncParameter lparam

DB 쿼리문에 파라미터가 포함된 경우에 IXyncParameter에 이름/값 쌍으로 파라미터 값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

IXyncParameter oGparam = new IXyncParameter();

oGparam.add("empid", oGBasePage.getStringParam("empid"));

oGparam.add("empname",

                  oGBasePage.getStringParam("empname"));

oGparam.add("empaddress",

                oGBasePage.getStringParam("empaddress"));

한편, oGparam.add 에서 param의 value값은 실제 DB에 입력될 필드타입에 따라 Conver 되야 할 필요가 있을 수 있다. 예를들어 DB필드 타입이 DateTime인 필드를 파라미터 값으로 설정/입력하고자 한다면 다음과 같이 명시적으로 타입을 Convert 하거나, DB필드 타입 파라미터를 사용한다.

 

- 명시적으로 타입을 Convert한 예)

oGparam.add("param1", Convert.ToDateTime(oGBasePage.getStringParam("hiredata")));

- DB필드 타입 파라미터를 사용한 예)

oGparam.add("param1",oGBasePage.getStringParam("hiredata"),IXyncVariable.DbType.DateTime);

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션관리객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

CommandType cmdType

Command객체의 명령타입을 지정한다. 이 메소드에서는 Text와 Table만을 지원한다. StoredProcedure를 사용하려면 execSelectStoredProcedure나 execTrStoredProcedure메소드를 이용하도록 한다.

 

사용예제)

 

bool bPrintResult = false;

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

 

try

{

// IX-SERVER BASE 서비스 객채를 초기화 한다.

oGBasePage.initIXyncPage("default");

// 최초의 서비스 호출시 화면을 먼저 출력시키기 위한 코드입니다.

if(oGBasePage.getStringIXyncParam("RequestData")=="IXYNC_NET_DATA_TR"){

string strSql = null;

bPrintResult = true;

IXyncConnection oConn = oGBasePage.IXyncDbHelper.addConnection (

"conn1",

IXyncVariable.DbProviderType.MSSQL,

null,

0);

 

IXyncDataSet oDataSet =

                    oGBasePage.IXyncService.getDataSet("input1");

 

DataTable dtTable = oDataSet.Tables[0];

for(int i=0; i < dtTable.Rows.Count; i++)

{

DataRow drRow = dtTable.Rows[i];

if(oDataSet.isInsertRow(i))

{ // insert

strSql = "insert into Grid2(sabun ,name , amt1 , amt2,"

+   " chk, gubun ) values (@sabun , @name , @amt1 , "

+   "@amt2, @chk, @gubun)";

 

IXyncParameter oGparam = new IXyncParameter();

oGparam.add ("sabun", drRow["sabun"]);

oGparam.add ("name", drRow["name"]);

oGparam.add ("amt1", drRow["amt1"]);

oGparam.add ("amt2", drRow["amt2"]);

oGparam.add ("chk", drRow["chk"]);

oGparam.add ("gubun", drRow["gubun"]);

 

oGBasePage.execNonQuery2(oConn, strSql, oGparam);

}

else if(oDataSet.isUpdateRow(i))

{// update

strSql = "update Grid2 set "+

"name=@name, amt1=@amt1, amt2=@amt2, chk= chk, gubun= gubun "+ "where sabun=@sabun";

IXyncParameter oGparam = new IXyncParameter();

oGparam.add ("name", drRow["name"]);

oGparam.add ("amt1", drRow["amt1"]);

oGparam.add ("amt2", drRow["amt2"]);

oGparam.add ("chk", drRow["chk"]);

oGparam.add ("gubun", drRow["gubun"]);

oGparam.add ("sabun", drRow["sabun"]);

 

oGBasePage.execNonQuery2(oConn, strSql, oGparam);

}

else if(oDataSet. isDeleteRow(i))

{ // delete

IXyncParameter oGparam = new IXyncParameter();

oGparam.add ("sabun", drRow["sabun"]);

    oGBasePage.execNonQuery2(oConn, strSql, oGparam);

}

    }

}

}

catch (Exception except)

{

oGBasePage.addMessage("System", "90001", except.Message);

oGBasePage.setResult(false);

}

finally

{

// 서비스 객채를 해제한다.

if(bPrintResult == true)

{

oGBasePage.printMessage();

oGBasePage.Release(true);

}

else

oGBasePage.Release();

}

 

 

IIXyncDbHelper API

METHODS

·      addConnection (+2개 오버로드)

DB와 연결하여 관련정보를 저장하는 IXyncConnection 객체를 추가한다.

IXyncConnection addConnection (IXyncConnection oConn)

IXyncConnection addConnection (string stConnectionName, int nProviderType,

string stConnectionString, int nTimeout)

IXyncConnection addConnection (string stConnectionName,

                              IXyncVariable.DbProviderType enumProviderType,

                             string stConnectionString, int nTimeout)

 

Parameter 명

설명

IXyncConnection oConn

이미 생성한 커넥션객체를 지정한다.

string stConnectionName

커넥션객체명을 입력한다. 이 값은 IXyncDbHelper내에서 유일한 값이어야 한다.

int nProviderType

DB Provider 타입을 지정한다. 이 값은 IXyncDefine 값이어야 한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL  0;

PROVIDERTYPE_OLEDB  1;

PROVIDERTYPE_ORACLE  2;

PROVIDERTYPE_ODBC  3

PROVIDERTYPE_ODP 4

string stConnectionString

실제 DB 커넥션정보를 기술한 스트링 값이다. 이값을 지정하게되면 Config에 잡혀있는 DB연결정보는 무시된다. 지정하지 않으려면 null을 입력한다.

int nTimeout

커맨드명객체의 명령실행시 타임아웃값을 지정한다. 디폴트값은 120초 이다.

DbProviderType enumProviderType

DB Provider 타입을 지정한다. (IXyncVariable 사용)

[IXYNC VARIABLE의 DbProviderType 열거형 값]

IXyncVariable.DbProviderType.MSSQL: MSSQL Client 공급자

IXyncVariable.DbProviderType.ODBC:OLEDB 공급자

IXyncVariable.DbProviderType.OLEDB:Oracle Client 공급자

IXyncVariable.DbProviderType.ORACLE: ODBC 공급자

IXyncVariable.DbProviderType.ODP:Oracle Access Db (ODP .NET) 공급자

 

사용예제)

IXyncBasePage oGaPage = new IXyncBasePage(Server, Request,Response);

IXyncConnection oConn1 = new IXyncConnection();

oConn1.ConnectionName = "Conn1";

oConn1.ProviderType = IXyncDefine.PROVIDERTYPE_OLEDB;

oConn1.ConnectionString = "None";

oConn1.CommandTimeOut = 150;

oConn1 = oGaPage.IXyncDbHelper.addConnection(oConn1);

IXyncConnection oConn2 = oGaPage.IXyncDbHelper.addConnection( "Conn2",

                              IXyncDefine.PROVIDERTYPE_MSSQL, null, 300);

 

·      addConnection2

IXYNC Config에서 설정한 암호화된 다중 연결정보를 사용하여 IXyncConnection 객체를 추가한다.

IXyncConnection addConnection2(string stConnectionName,    

                              IXyncVariable.DbProviderType enumProviderType,

                              string stProvConnectionId, int nTimeout)

 

Parameter 명

설명

string stConnectionName

커넥션객체명을 입력한다. 이 값은 IXyncDbHelper내에서 유일한 값이어야 한다.

string stProvConnectionId

암호화된 다중 커넥션정보를 가져오기 위한 식별ID를 입력한다. 이 값은 IXYNC Config에서 설정한 스트링값이며, 유일한 값이다. 암호화된 커넥션정보를 사용하지 않으려면 addConnection 메소드를 사용하면 된다.

int nTimeout

커맨드명객체의 명령실행시 타임아웃값을 지정한다. 디폴트값은 120초 이다.

DbProviderType enumProviderType

DB Provider 타입을 지정한다. (IXyncVariable 사용)

[IXYNC VARIABLE의 DbProviderType 열거형 값]

IXyncVariable.DbProviderType.MSSQL: MSSQL Client 공급자

IXyncVariable.DbProviderType.ODBC:OLEDB 공급자

IXyncVariable.DbProviderType.OLEDB:Oracle Client 공급자

IXyncVariable.DbProviderType.ORACLE: ODBC 공급자

IXyncVariable.DbProviderType.ODP:Oracle Access Db (ODP .NET) 공급자 (IX-SERVER for .NET 3.0 부터 지원)

 

사용예제)

IXyncBasePage oGaPage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oConn =

oGaPage.IXyncDbHelper.addConnection( "Conn1",

                      IXyncVariable.DbProviderType.MSSQL, "Sql_Pubs", 300);

 

·      getConnection

DB와 연결된 IXyncConnection 객체를 커넥션이름을 통하여 얻어온다.

IXyncConnection getConnection (string stConnectionName)

 

Parameter 명

설명

string stConnectionName

커넥션객체명을 입력한다. 이 값은 IXyncDbHelper내에서 유일한 값이어야 한다.

 

사용예제)

IXyncBasePage oGaPage = new IXyncBasePage(Server, Request, Response);

oGaPage.IXyncDbHelper.addConnection( "Conn1",

                                     IXyncVariable.DbProviderType.MSSQL,

                                     null,

                                     0);

IXyncConnection oConn = oGaPage.IXyncDbHelper.getConnection("Conn1");

 

·      getConnections

DB와 연결된 모든 IXyncConnection 객체를 얻어온다.

IXyncConnection [] getConnections();

 

사용예제)

IXyncBasePage oGaPage = new IXyncBasePage(Server, Request, Response);

oGaPage.IXyncDbHelper.addConnection( "Conn1",

                                IXyncVariable.DbProviderType.MSSQL,

                                null,

                                100);

oGaPage.IXyncDbHelper.addConnection( "Conn2",

                                IXyncVariable.DbProviderType.MSSQL,

                                null,

                                200);

 

IXyncConnection [] oConn = oGaPage.IXyncDbHelper.getConnections();

 

·      buildDataReader (+3개 오버로드)

DB 연결정보를 바탕으로 쿼리문을 싱행시켜 DataReader객체를 생성해 준다.

얻어온 객체는 IDataReader 인터페이스 객체임으로 각 DB Provider 타입에 맞도록 캐스팅하지 않아도 된다.

IDataReader buildDataReader(IXyncConnection oGaConn, string strQuery)

IDataReader buildDataReader(IXyncConnection oGaConn, string strQuery,

                           IXyncParameter lparam);

IDataReader buildDataReader(IXyncConnection oGaConn, string strQuery,

                           IXyncParameter lparam, object oTransaction);

IDataReader buildDataReader(IXyncConnection oGaConn, string strQuery,

                           IXyncParameter lparam, object oTransaction

CommandBehavior oBehavior);

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strQuery

DB 쿼리문을 지정한다.

IXyncParameter lparam

DB 쿼리문에 파라미터가 포함된 경우에 SortedList에 이름/값 쌍으로 파라미터값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션 관리 객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

 

사용예제)

IXyncBasePage oGaPage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oGaConn = oGaPage.IXyncDbHelper.addConnection( "Conn1",

                                  IXyncVariable.DbProviderType.MSSQL,

                                  null,

                                  100);

 

String strSql = "select * from emp where empid = @param1";

IXyncParameter param = new IXyncParameter();

param.Add("param1", oGBasePage.getStringParam("empid"));

 

IDbTransaction oTr = null;

// Transaction을 시작합니다.

oTr = oConn.beginTransaction();

IDataReader myReader = oGaPage.IXyncDbHelper.buildDataReader( oGaConn,

                       strSql, param, oTr);

 

if(oTr != null) {

   if (oGaPage.getResult())

      oTr.Commit();

   else

      oTr.Rollback();

}

 

·      buildDataSet (+3개 오버로드)

DB 연결정보를 바탕으로 쿼리문을 실행시켜 입력한 table 명으로 .NET DataSet객체를 생성해 준다.

DataSet buildDataSet(IXyncConnection oGaConn, string strQuery, string table);

DataSet buildDataSet(IXyncConnection oGaConn, string strQuery, string table,

IXyncParameter oParam);

DataSet buildDataSet(IXyncConnection oGaConn, string strQuery, string table,

object oTransaction);

DataSet buildDataSet(IXyncConnection oGaConn, string strQuery, string table,

                    IXyncParameter oParam, object oTransaction);

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string strQuery

DB 쿼리문을 지정한다.

string strtable

생성할 .NET DataSet의 테이블 이름을 입력한다.

IXyncParameter oParam

DB 쿼리문에 파라미터가 포함된 경우에 IXyncParameter에 이름/값 쌍으로 파라미터값을 지정하여 사용한다. 파라미터가 없으면 null을 입력한다.

object oTransaction

다중쿼리문을 작성하여 하나의 트랜젝션단위로 묶어서 실행하기를 원하는 경우 사용되는 트랜젝션 관리 객체이다. 트랜젝션관리가 필요없으면 null을 입력한다.

 

사용예제)

string strSql = "select * from emp";

IXyncBasePage oGaPage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oConn = oGaPage.IXyncDbHelper.addConnection( "Conn1",

    IXyncVariable.DbProviderType.MSSQL, null, 100);

 

IXyncParameter oGparam = new IXyncParameter();

oGparam.add("empid", oGaPage.getStringParam("empid"));

 

IDbTransaction oTr = null;

// Transaction을 시작합니다.

oTr = oConn.beginTransaction();

 

DataSet ds =

            oGaPage.IXyncDbHelper.buildDataSet(oConn, strSql, "MyTable");

 

if(oTr != null) {

   if (oGaPage.getResult())

      oTr.Commit();

   else

      oTr.Rollback();

}

 

·      buildCommand (+3개 오버로드)

DB 연결정보를 바탕으로 쿼리문을 실행시켜 Command 객체를 생성해 준다.

얻어온 객체는 IDbCommand 인터페이스의 객체임으로 각 DB Provider 타입에 맞도록 캐스팅되지 않아도 된다.

이 메소드는 스토어드프로시져 또는 복잡한 형태의 Transaction작업등을 수행하는데 있어서 IXyncBasePage의 메소드들이 기능을 지원하지 못할 경우 확장성을 위해 열어둔 메소드이다.

IDbCommand buildCommand(IXyncConnection oGaConn, string sql)

IDbCommand buildCommand(IXyncConnection oGaConn, string sql,

                        IXyncParameter inputParam)

IDbCommand buildCommand(IXyncConnection oGaConn, string sql,

                        IXyncParameter inputParam, IXyncParameter outputParam,

                        IXyncParameter returnParam)

IDbCommand buildCommand(IXyncConnection oGaConn, string sql,

                        IXyncParameter inputParam, IXyncParameter outputParam,

                        IXyncParameter returnParam, object oTransaction)

 

Parameter 명

설명

IXyncConnection oGaConn

DB 연결정보를 가진 IXYNC 클래스 객체이다. 이 클래스는 다음의 속성값을 가지고 있다.

[IXyncConnection]

- ConnectionName: IXyncConnection 객체들을 구분하기 위한 유일한 식별값이다.

- ProviderType: DB Privider 타입값이다.

이값은 IXyncDefine에 정의된 값을 이용한다.

[IXYNC DEFINE 값]

PROVIDERTYPE_MSSQL 0

PROVIDERTYPE_OLEDB 1

PROVIDERTYPE_ORACLE 2

PROVIDERTYPE_ODBC 3

PROVIDERTYPE_ODP 4 

- ConnectionString: 실제로 DB연결 정보를 가진 스트링값이다.

- CommandTimeOut: DB Command의 Timeout값이다. 디폴트값을 120초이다.

string sql

DB 쿼리문을 지정한다.

IXyncParameter inputParam

Input용 파라미터를 키/값 쌍의 SortedList를 생성하여 지정한다.

IXyncParameter outputParam

output용 파라미터를 키/값 쌍의 SortedList를 생성하여 지정한다.

IXyncParameter returnParam

return용 파라미터를 키/값 쌍의 SortedList를 생성하여 지정한다.

object oTransaction

다중쿼리를 사용하는 경우 트랜젝션을 관리할 객체를 선언한다.

 

사용예제)

string strSql = "DeptUpdateProc";

IXyncBasePage oGaPage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oConn = oGaPage.IXyncDbHelper.addConnection( "Conn1",

                            IXyncVariable.DbProviderType.OLEDB,

                            null,

                            100);

// IDbCommand 인터페이스 객체를 반환함으로 DB Type 캐스팅이 필요 없다.

IDbCommand command = oGaPage.IXyncDbHelper.buildCommand(oConn, strSql);

 

·      getDbConnection

커넥션명을 가지고 실제 DB연결 객체를 얻어온다. 얻어온 객체는 IDbConnection 인터페이스 객체임으로 각 DB Provider 타입에 맞도록 캐스팅되지 않아도 된다.

IDbConnection getDbConnection(string stConnectionName)

 

Parameter 명

설명

string stConnectionName

IXyncConnection 객체 생성시에 사용했던 커넥션명이다.

 

사용예제)

 

IXyncBasePage oGaPage = new IXyncBasePage(Server, Request, Response);

 

oGaPage.IXyncDbHelper.addConnection( "Conn1",

     IXyncVariable.DbProviderType.OLEDB, null, 100);

oGaPage.IXyncDbHelper.addConnection( "Conn2",

     IXyncVariable.DbProviderType.MSSQL, null, 100);

 

IDbConnection Conn1 = oGaPage.IXyncDbHelper.getDbConnection("Conn1");

IDbConnection Conn2 = oGaPage.IXyncDbHelper.getDbConnection("Conn2");

 

 

 

IXyncConnection API

PROPERTIES

·      ConnectionName [ get, set ]

IXyncConnection 객체를 구분하는 유일한 키값이다.

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oGaConn = oGBasePage.IXyncDbHelper.addConnection(

      "Conn1", IXyncVariable.DbProviderType.MSSQL, null, 0);

 

// strConnectionName에는 "Conn1" 값이 저장되어 있을 것이다.

String strConnectionName = oGaConn.ConnectionName;

 

·      ProviderType [ get, set ]

DB Provider의 타입을 정한 값으로 IXyncDefine 값으로 지정된다.

다음 예제에서는 IXyncVariable의 DbProviderType 열거형 값으로 지정했지만, 내부적으로는 IXyncDefine 값으로 변환된다.

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oGaConn = oGBasePage.IXyncDbHelper.addConnection(

    "Conn1", IXyncVariable.DbProviderType.MSSQL, null, 0);

 

// nDbProviderType에는 IXyncDefine.PROVIDERTYPE_MSSQL 값이 저장되어 있을

// 것이다.

int nDbProviderType = oGaConn.ProviderType;

 

·      ConnectionString [ get, set ]

실제 DB연결을 하기위해 지정한 연결정보를 가지고 있는 스트링 값이다.

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oGaConn = oGBasePage.IXyncDbHelper.addConnection(

   "Conn1", IXyncVariable.DbProviderType.MSSQL,null, 0);

   

// 이곳에서는 addConnection시에 연결문자열을 지정하는 세번째 인자가

// null이므로 strConnectInfo 에는 IXYNC Config 또는 Web.config에서

// 지정한 DB Provider타입에 해당하는 디폴트 연결문자열이 저장되어 있을

// 것이다.

string strConnectInfo = oGaConn.ConnectionString;

 

·      CommandTimeOut [ get, set ]

Command명령을 수행하는데 있어서의 명령 대기시간 값이다. 초단위의 int값을 지정한다.

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oGaConn = oGBasePage.IXyncDbHelper.addConnection(

   "Conn1", IXyncVariable.DbProviderType.MSSQL, null, 50);

   

// nTimeOut 에는 명령어 대기시간 50 이 저장되어 있을 것이다.

// 만일 addConnection의 네번째 인자가 0 이라면

// 디폴트값 120초가 세팅되어 있을 것이다.

int nTimeOut = oGaConn.CommandTimeOut;

 

·      CommandTimeOut [ get, set ]

Command명령을 수행하는데 있어서의 명령 대기시간 값이다. 초단위의 int값을 지정한다.

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oGaConn = oGBasePage.IXyncDbHelper.addConnection(

   "Conn1", IXyncVariable.DbProviderType.MSSQL, null, 50);

   

// nTimeOut 에는 명령어 대기시간 50 이 저장되어 있을 것이다.

// 만일 addConnection의 네번째 인자가 0 이라면

// 디폴트값 120초가 세팅되어 있을 것이다.

int nTimeOut = oGaConn.CommandTimeOut;

 

·      DbConnection [ get, set ]

IXyncConnection객체 추가시에 지정한 DB Provider 타입에 맞게 실제 DB Connection 객체를 가져온다. 객체를 가져올 때 IDbConnection 으로 반환됨으로 DB Provider 타입에 맞게 캐스팅할 필요가 없다.

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oGaConn = oGBasePage.IXyncDbHelper.addConnection(

     "Conn1",

     IXyncVariable.DbProviderType.MSSQL,

     null,

     50);

  // addConnection 에서 지정한 DB Provider 타입으로 DB Connection 객체를 가져온다.

// IDbConnection 으로 반환됨으로 캐스팅할 필요 없다.

IDbConnection oDbConn = oGaConn.DbConnection;


METHODS

·      openConnection

DB 연결정보를 바탕으로 DB를 개방한다. 이미 개방되어 있으면 열지 않는다.

void openConnection()

 

사용예제)

 

IXyncBasePage oGaPage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oConn = oGaPage.IXyncDbHelper.addConnection( "Conn1",

                 IXyncVariable.DbProviderType.MSSQL,

                 null,

                 300);

// DB를 Open한다.

oConn.openConnection();

 

 

·      closeConnection

DB 연결정보를 바탕으로 DB를 Close한다. 이미 닫혀있으면 닫지 않는다.

void closeConnection ()

 

사용예제)

IXyncBasePage oGaPage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oConn = oGaPage.IXyncDbHelper.addConnection( "Conn1",

                      IXyncVariable.DbProviderType.MSSQL,

                      null,

                      300);

// DB를 Open한다.

oConn.openConnection();

// DB를 close 한다.

oConn.closeConnection();

 

·      beginTransaction (+1개 오버로드)

DB Provider타입에 맞는 트랜젝션객체를 생성하고 반환한다.

IDbTransaction beginTransaction()

IDbTransaction beginTransaction(IsolationLevel isoLevel)

 

Parameter 명

설명

IsolationLevel isoLevel

연결에 대한 트랜젝션 잠금 동작을 지정한다.

 

사용예제)

IXyncBasePage oGaPage = new IXyncBasePage(Server, Request, Response);

IXyncConnection oConn = oGaPage.IXyncDbHelper.addConnection( "Conn1",

                         IXyncVariable.DbProviderType.MSSQL,

                         null,

                         300);

// DB를 Open한다.

oConn.openConnection();

 

// IDbConnection 인터페이스를 이용하여 DB Provider 타입에 상관없이

// Transaction 객체를 선언합니다.

IDbTransaction oTr = oConn.beginTransaction();

 

// 트랜젝션 작업을 한다.

.

.

.

 

oTr.Commit();

 

// DB를 close 한다.

oConn.closeConnection();

 

 

ServiceLoader API

METHODS

·      ServiceLoader

IXync의 서비스를 관장하는 서비스 개체를 생성하기위한 ServiceLoder의 생성자로, ASP.NET의 HttpServerUtility, HttpRequest와 HttpResponse 개체를 가지고 초기화 한다.

 

ServiceLoader(HttpServerUtility server, HttpRequest req, HttpResponse res);

 

Parameter 명

설명

HttpServerUtility server

ASP.NET 이 웹요청을 처리하기 위한 도우미 객체이다.

HttpRequest req

ASP.NET 이 클라이언트에서 보낸 HttpRequest개체 이다.

HttpResponse res

ASP.NET 작업에서 받은 Http 응답정보를 캡술화하는 HttpResponse개체이다.

 

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

 

·      newService

새로운 서비스 개체를 생성하고 서비스 핸들러를 반환한다.(1개 오버로딩) 첫번째 메소드는 default 도메인으로 서비스를 개체를 생성한다.두번째 메소드는 사용자가 입력한 도메인명으로 서비스 개체를 생성한다.

IIXyncService newService();

IIXyncService newService(string stDomain);

 

Parameter 명

설명

string stDomain

도메인의 이름을 입력한다. 여기서 입력한 도메인 이름으로 해당 Configuration file을 참조하여 서비스 환경을 구축한다.

사용예제1)

 

// "default"도메인으로 서비스 개체 생성

IIXyncService IXyncService = Loader.newService();

 

 

사용예제2)

 

// "crm_service"도메인으로 서비스 개체 생성

IIXyncService IXyncService = Loader.newService("crm_service");

 

 

 

IIXyncService

METHODS

·      getConfigCompress

환경설정값 중 압축설정 여부를 알아보기 위해 사용한다.

ConfigProperty에서 압축여부의 플래그 값인 format_compress_enable 값을 반환한다.

bool getConfigCompress();

사용예제)

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

bool bIsCompress = IXyncService.getConfigCompress();

 

·      getConfigFirstRowSize

ConfigProperty에서 퍼스트로우 데이터 패킷의 로우 사이즈인 firstrow_size을 반환한다.

int getConfigFirstRowSize ();

사용예제)

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

int iFirstRowSz = IXyncService.getConfigFirstRowSize();

 

·      getConfigProperty

Config 구조체인 IXyncConfigProperty 를 반환한다.

IXyncConfigProperty getConfigProperty();

IXyncConfigProperty 구조체는 다음과 같이 구성된다.

string m_stDomain;              // 도메인명

DateTime m_dtPropertyCreateTime;//해당 도메인에 대한 Property가 생성된 시간

string m_stLicense_Check_Method;//라이센스 체크 방식(IP/DATE)

int m_iFormat_Default_Request;  //데이터 수신에 사용되는 Request의 기본 포맷

int m_iFormat_Default_Response; //데이터 송신에 사용되는 Response의 기본포맷

bool m_boFormat_Compress_Enable;//데이터 송신 시에 데이터 압축을 사용여부

int m_iFirstRow_Size;           //서비스에서 Component로 전송할 행의 단위

bool m_boFirstRow_Packet_Header;//firstrow로 전송시 매번 Header를 전송여부

int m_iColumntype_Decimal_Dec;  // Decimal type에서의 소수 길이

int m_iColumntype_Decimal_Round;// Decimal type에서의 올림1/반올림2/버림3

string m_stMessage_language;    // 시스템 메시지의 출력 언어(KOR/ENG)

int m_iMessage_Level;           // 시스템 메시지의 출력 레벨(0/1/2/3)

int m_iLog_Message_Level;     // 메시지로그의 기록 레벨(0/1/2/3)

string m_stLog_Message_File_Name;  // 메시지로그를 저장할 파일명

int m_iLog_Message_File_Size;      // 메시지로그 파일의 최대크기

int m_iLog_Event_Level;            // 에러로그의 기록 레벨(0/1/2/3)

string m_stLog_Event_File_Name;    // 에러로그를 저장할 파일명

int m_iLog_Event_File_Size;     // 에러로그 파일의 최대크기

int m_iLog_Debug_Level;       // 디버그로그의 기록 레벨(0/1/2/3)

string m_stLog_Debug_File_Name; // 디버그로그를 저장할 파일명

int m_iLog_Debug_File_Size;     // 디버그로그 파일의 최대크기

 

사용예제)

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IXyncConfigProperty GConfigProperty = IXyncService.getConfigProperty();

IXyncMessageSet GMS = IXyncService.getMessageSet();

 

//사용자 로그를 쌓기 위해서 IIXyncLoger가 필요함.

IIXyncLoger IXyncErrorLoger = IXyncService.getEventLoger();

try {

    int row_cnt = 2;

    // Service Handler의 IXYNC Configuration 정보를 읽기위함

    IXyncConfigProperty oConfigProperty =

                                     IXyncService.getConfigProperty();

    // DataSet을 생성한다.

    IXyncDataSet GDS = IXyncService.newDataSet("Config01");

    // DataSet의 컬럼속성을 지정한다.

    GDS.addDataColumn("Property",

                          IXyncVariable.ColumnDataType.STRING, 64);

    GDS.addDataColumn("Value",

                          IXyncVariable.ColumnDataType.STRING, 256);

    GDS.addDataColumn("비고",

                          IXyncVariable.ColumnDataType.STRING, 256);

    GDS.addDataColumnEnd();

    // 클라이언트로 보낼 데이터를 만든다.

    for (int i = 0; i < row_cnt; i++) {

        switch (i) {

          case 0:

            GDS.addDataRowValue("Property","license_check_method");

            GDS.addDataRowValue("Value",

                             oConfigProperty.license_check_method);

           GDS.addDataRowValue("비고",     " ");

           break;     

        case 1:

          GDS.addDataRowValue("Property",  "format_default_response");

          GDS.addDataRowValue("Value",

             Convert.ToString(oConfigProperty.format_default_response));

          GDS.addDataRowValue("비고",      " ");

          break;

      }

      GDS.addDataRow();

    }

    // DataSet 객체를 해제한다.

    GDS.end();            

    // setResult는 printMessage() 바로 이전의 값이 적용된다.

    GMS.addMessage("user1","74001","성공");

    GMS.setResult(true);  // 성공

}

catch(Exception execpt){

    GMS.addMessage("user1","74001",execpt.Message);

    GMS.setResult(false);  // 실패

}             

finally{

    GMS.printMessage();

    // IXYNC Service객체를 해제한다.

    IXyncService.end();

}

 

·      getConfigResponseFormat

ConfigProperty에서 디폴트 전송 데이터 패킷 타입값인 format_default_response을 반환한다.

int getConfigResponseFormat();

 

사용예제)

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

int iRespFormat = IXyncService.getConfigResponseFormat();

IXyncMessageSet GMS = IXyncService.getMessageSet();

 

switch ((IXyncVariable.ResponsePacketType)iRespFormat)

{

    case IXyncVariable.ResponsePacketType.CSV30: //CSV30인경우

        GMS.addMessage("user1","74001","CSV30");

        break;

    case IXyncVariable.ResponsePacketType.BINARY: // Binary

        GMS.addMessage("user1","74001","BIN");

        break;

    case IXyncVariable.ResponsePacketType.CSV: // CSV 인경우

        GMS.addMessage("user1","74001","CSV");

        break;

    default:

        GMS.addMessage("user1","74001","SVC");

        break;

}

 

GMS.printMessage(true);

 

·      getDataSet

DataSet List에서 해당하는 DataSet 을 반환한다. (1개 오버로딩) 첫번째 메소드는 해당 ServerName을 갖는 DataSet를 반환한다. 두번째 메소드는 해당 ServerName을 갖고 해당 IOMode 를 갖는 DataSet을 반환한다.

IXyncDataSet getDataSet(string stServerName);

IXyncDataSet getDataSet(string stServerName, string stIOMode);

 

Parameter 명

설명

string stServerName

클라이언트에서 지정한 서버쪽 DataSet의 이름이다.

string stIOMode

DataSet의 입출력 모드. (I:입력용, O:출력용)

이값은 해당 DataSet이 같은 이름으로 입출력 DataSet을 만들었을 경우 두 개의 DataSet을 구분하여 사용하기 위해 필요한 입력 값이다.

 

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IIXyncRequest IXyncResquest = IXyncService.getRequest();

// "input1" 이름의 DataSet을 얻는다.

IXyncDataSet oDataSet = IXyncService.getDataSet("input1");

// "input1" 이름의 input DataSet을 얻는다.

IXyncDataSet oInDataSet = IXyncService.getDataSet("input1", "I");

// "input1" 이름의 output DataSet을 얻는다.

IXyncDataSet oOutDataSet = IXyncService.getDataSet("input1", "O");

 

 

·      getDataSets

DataSet의 List를 반환한다.

IXyncDataSet[] getDataSets();

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IIXyncRequest IXyncResquest = IXyncService.getRequest();

// DataSet객체배열을 얻어온다.

IXyncDataSet[] oaDataSet = IXyncService.getDataSets();

for(int i=0; i<oaDataSet.Length; i++){

// Client에서 날려준 DataTable과 같은 이름을 가진 DataTable을 찾는다.

    if(oaDataSet[i].getDataSetServerName().Equals("input1")){

        …………………………

    }

}

 

 

·      getDebugLoger

디버그 로거를 반환한다.

IIXyncLoger getDebugLoger();

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IIXyncLoger GLoger = IXyncService.getDebugLoger();

 

 

·      getEventLoger

이벤트 로거를 반환한다.

IIXyncLoger getEventLoger();

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IIXyncLoger GLoger = IXyncService.getEventLoger();

 

 

·      getMessageLoger

메시지 로거를 반환한다.

IIXyncLoger getMessageLoger ();

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IIXyncLoger GLoger = IXyncService.getMessageLoger();

 

 

·      getMessageSet

MessageSet 을 반환한다. 여기서 얻은 MessageSet 개체를 가지고 클라이언트로 보낼 사용자 메시지를 구성 할 수 있다.

IXyncMessageSet getMessageSet();

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IXyncMessageSet GMessageSet = IXyncService.getMessageSet();

//……………………..

GMessageSet.addMessage("user1","74001","성공");

GMessageSet.printMessage(true);

 

 

·      getRequest

현재 수신핸들러를 반환한다.

IIXyncRequest getRequest();

 

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IIXyncRequest IXyncResquest = IXyncService.getRequest();

 

 

·      getResponse

현재 송신핸들러를 반환한다.

두번째 메소드는 특정한 상황에서 송신 데이터 패킷의 형태를 변환 하고자 할 때 사용한다. 일반적인 경우에는 서비스개체 생성시에 설정한 환경설정값에 따라 송신 데이터 패킷의 형태가 결정된다.

IIXyncResponse getResponse();

IIXyncResponse getResponse(int iResponseFormat, bool boCompress,

                           int iFirstRowSize);

 

Parameter 명

설명

int iResponseFormat

송신할 패킷의 타입을 지정한다. (IXyncDefine 값 이용)

[IXYNC DEFINE 값]

IXyncDefine.CSV30_FORMAT 1

IXyncDefine.BIN_FORMAT   2

IXyncDefine.CSV_FORMAT   3

bool boCompress

송신할 패킷의 압축여부를 지정한다. (true or false)

int iFirstRowSize

송신할 패킷의 퍼스트로우 사이즈를 지정한다. 이 패킷 사이즈 단위 만큼씩 잘라서 클라이언트로 전송하게 된다.

0: 모든 데이터 패킷을 한거번에 전송하는 All Row 방식이 된다.

-1: IXYNC System이 내부적으로 최적화된 퍼스트로우 사이즈를 제공한다.

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService("crm_service");

/*

Response data 패킷 type을 설정한다.

  CSV30 타입, 압축설정 안함, 퍼스트로우 패킷 단위 100

*/

IIXyncResponse gsResponse =

         IXyncService.getResponse(IXyncDefine.CSV30_FORMAT,false,100);

 

 

·      newDataSet

DataSet을 생성한 후에 DataSet을 List에 추가한다. (1개 오버로딩)

첫번째 메소드는 해당 ServerName을 갖는 DataSet 개체를 생성하며, 두번째 메소드는 해당 IOMode와 ServerName을 갖고 클라이언트에서 바인딩될 DataSet이름이 ClientName 인 DataSet 을 생성한다.

IXyncDataSet newDataSet(string strDataSetName);

IXyncDataSet newDataSet(string stIOMode,string stServerName,

                                                     string stClientName)

 

Parameter 명

설명

string strDataSetName

새로 생성할 DataSet의 이름을 지정한다.

string stIOMode

새로 생성할 DataSet의 IO 모드를 지정한다.

string stServerName

새로 생성할 DataSet의 서버쪽 이름을 지정한다.

string stClientName

새로 생성할 DataSet의 클라이언트쪽 이름을 지정한다.

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

// Response data type을 설정한다.

IIXyncResponse gsResponse =

          IXyncService.getResponse(IXyncDefine.CSV30_FORMAT,false,100);

// DataSet을 생성한다.

IXyncDataSet oGDataSet = IXyncService.newDataSet("output1");

 

 

·      end

IXYNC Service 객체를 해제하고 서비스 종료를 처리한다.

void end();

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

//……………….

// IXYNC Service객체를 해제한다.

IXyncService.end();

·      getDbHelper

IXyncServiceHandler가 관리하는 IXyncDbHelper 객체를 반환한다.

IIXyncDbHelper getDbHelper();

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

// IXYNC 서비스 생성시에 IXYNC DbHelper가 기본으로 생성된다.

IIXyncService IXyncService = Loader.newService(“default”);

 

//……………….

 

// 생성된 IXYNC DbHelper 객체를 가져온다.

IIXyncDbHelper oDbHelper = IXyncService.getDbHelper();

 

 

 

IIXyncRequest

METHODS

·      getParameter

Client에서 TR post방식으로 전송한 파리미터 값을 반환한다.

일반적인 GET방식의 파라미터값은 ASP.NET의 HTTPRequest개체의 기본메소드인 Request.QueryString() 을 사용하도록 한다. 이때 주의할 점은 한글의 경우는 반드시 클라이언트에서 Encoding을 해서 보낸다음 서버쪽에서 Decoding을 해야 깨지지 않고 안전하게 받을 수 있다는 점이다.

string getParameter(string stParameterKey);

 

Parameter 명

설명

string stParameterKey

찾고자 하는 파라미터의 키이름을 입력한다.

 

사용예제1)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IIXyncRequest GRequest = IXyncService.getRequest();

string stParam = GRequest.getParameter("aaa");

 

사용예제2)

 

// GET방식으로 날라온 아규먼트를 받는다.

// 한글이 깨지지 않게 하기위해 UrlDecode를 쓴다.

string stDtSetName = Server.UrlDecode(Request.QueryString["Arg_empName"]);

 

 

·      getConfigProperty

Config 구조체인 IXyncConfigProperty 를 반환한다. IXyncConfigProperty는 ServiceHandler 개체에서도 참조 가능하다.

IXyncConfigProperty getConfigProperty();

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IIXyncRequest GRequest = IXyncService.getRequest();

IXyncConfigProperty GConfigProperty = GRequest.getConfigProperty();

 

 

 

 

 

 

 

 

 

 

 

 

IIXyncResponse

METHODS

·      getConfigProperty

Config 구조체인 IXyncConfigProperty 를 반환한다. IXyncConfigProperty는 ServiceHandler 개체에서도 참조 가능하다.

IXyncConfigProperty getConfigProperty();

 

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IIXyncResponse GResponse = IXyncService.getResponse();

IXyncConfigProperty GConfigProperty = GResponse.getConfigProperty();

 

 

·      getTargetType

현재 지정된 송신대상을 반환한다.

int getTargetType();

송신 대상 IXYNC DEFINE 값

IXyncDefine.GN_TARGET_COMMON  0   // 일반 클라이언트로 송신

IXyncDefine.GN_TARGET_PLD     1   // PLD로 송신

IXyncDefine.GN_TARGET_DWB     2   // Dynamic Web Builder로 송신

 

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IIXyncResponse GResponse =

          IXyncService.getResponse(IXyncVariable.ResponsePacketType.CSV30,

                                   false,100);

// DataSet을 생성한다.

IXyncDataSet oGDataSet = IXyncService.newDataSet("output1");

// DataSet의 컬럼들을 정의 한다.

//………………………………………………………

if(GResponse.getTargetType() == IXyncDefine.GN_TARGET_COMMON){

     // PLD나 DWD 가 아닌 경우에만 실제 쿼리작업을 진행한다.

}

 

 

·      write

현재 DataSet List에 있는 데이터(DataSet들)를 클라이언트로 송신한다. 이 메소드는 내부적으로 DataSet개체의 addDataRow()나 addDataRows() 메소드에 의해 호출된다.

void write();

 

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService();

IIXyncResponse GResponse = IXyncService.getResponse();

//…………………………………..

// 모든 DataSet들을 클라이언트로 한꺼번에 송신한다.

GResponse.write();

 

 

 

 

IXyncDataSet

METHODS

·      addDataColumnOld (+4개 오버로드)

DataSet의 컬럼속성을 지정한다. 첫번째 메소드의 경우는 컬럼의 사이즈를 서버가 디폴트로 지정하도록 할 경우 사용. 나머지 메소드들은 사용자가 사이즈와 반올림 정도등을 지정할 경우 사용한다.

void addDataColumnOld(string stColName,int iDataType); // default

void addDataColumnOld(string stColName,int iDataType,int iSize);

void addDataColumnOld(string stColName,int iDataType,int iSize,int iKeyType);

void addDataColumnOld(string stColName,int iDataType,int iSize,int iKeyType,

                  int iDec);

void addDataColumnOld(string stColName,int iDataType,int iSize,int iKeyType,

                   int iDec,int iRoundMode)

 

Parameter 명

설명

string stColName

컬럼 이름을 입력한다.

int iDataType

컬럼 타입을 지정한다.

[IXyncDefine]

IXyncDefine.TB_BLOB    0x09 // BLOB Type

IXyncDefine.TB_URL     0x0a       // URL Type

IXyncDefine.TB_STRING  0x01   // String Type

IXyncDefine.TB_INT     0x02        // Int32 Type

IXyncDefine.TB_DECIMAL 0x04         // Decimal Type

IXyncDefine.TB_BIGINT  0x0d    // Int64 Type

IXyncDefine.TB_DATETIME  0x10     // DateTime Type

 

                                                         

int iSize

컬럼의 전체 사이즈를 입력한다.

int iKeyType

컬럼의 Key 타입을 입력한다.

[IXyncDefine]

IXyncDefine.TB_NORMAL        0x00  // Nomal column

IXyncDefine.TB_NOTNULL       0x01 // NotNUll column

IXyncDefine.TB_KEY           0x03 // Key column

IXyncDefine.TB_SEQUENCE      0x07         // Sequence column

IXyncDefine.TB_CONSTANT      0x0F        // Constant column

int iDec

컬럼타입이 Decimal인 경우 컬럼의 소수점 이하 자리수를 입력한다.

int iRoundMode

컬럼타입이 Decimal인 경우 소숫점 처리 방식을 지정한다.

[IXyncDefine]

IXyncDefine.DECIMAL_CEIL       1     // 올림

IXyncDefine.DECIMAL_ROUND      2     // 반올림

IXyncDefine.DECIMAL_FLOOR      3     // 버림

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

IIXyncService IXyncService = Loader.newService();

 

// DataSet을 생성한다.

IXyncDataSet GDS = IXyncService.newDataSet("output1");

 

// DataSet의 컬럼속성을 지정한다.

GDS.addDataColumnOld("id",IXyncDefine.TB_INT);       //defult size=10

GDS.addDataColumnOld("name",IXyncDefine.TB_STRING);  //default size=255

 

//default size=29,소수자리=0

GDS.addDataColumnOld("pno",IXyncDefine.TB_DECIMAL);  

GDS.addDataColumnOld("id1",IXyncDefine.TB_INT,4);        //size=4

GDS.addDataColumnOld("name1",IXyncDefine.TB_STRING,64);  //size=64

 

//size=10, 소수자리=3

GDS.addDataColumnOld("pno1",IXyncDefine.TB_DECIMAL,10,3);

 

//size=10, 소수자리=3, 반올림

GDS.addDataColumnOld("pno2",IXyncDefine.TB_DECIMAL,10,3,

                   IXyncDefine.DECIMAL_ROUND);

 

// 컬럼속성 지정이 끝났음을 알린다.

GDS.addDataColumnEnd();

 

 

·      addDataColumn (+4개 오버로드)

4.0에서 사용하던 addDataColumnOld 메소드와 기능은 동일하지만, IXyncDefine 값 대신 4.0.1에서 추가된 IXyncVariable에 정의된 값을 사용하여 정적 변수의 접근을 쉽게 하였다. (부록 2-2 IXyncVariable 참조).

Void addDataColumn(string stColName,

                    IXyncVariable.ColumnDataType enmColumnDataType)

void addDataColumn(string stColName,

                    IXyncVariable.ColumnDataType enmColumnDataType,int iSize)

void addDataColumn(string stColName,

                    IXyncVariable.ColumnDataType enmColumnDataType,int iSize,

                    IXyncVariable.ColumnKeyType enmKeyType)

void addDataColumn(string stColName,

                    IXyncVariable.ColumnDataType enmColumnDataType,int iSize,

                    IXyncVariable.ColumnKeyType enmKeyType, int iDec)

void addDataColumn(string stColName,

                    IXyncVariable.ColumnDataType enmColumnDataType,int iSize,

                   IXyncVariable.ColumnKeyType enmKeyType,int iDec,

                   IXyncVariable.DecimalPointType enmDecimalPoint)

 

Parameter 명

설명

string stColName

컬럼 이름을 입력한다.

IXyncVariable. ColumnDataType enmColumnDataType

컬럼 타입을 지정한다.

[IXyncDefine]

IXyncDefine.TB_BLOB    0x09 // BLOB Type

IXyncDefine.TB_URL     0x0a       // URL Type

IXyncDefine.TB_STRING  0x01   // String Type

IXyncDefine.TB_INT     0x02        // Int32 Type

IXyncDefine.TB_DECIMAL 0x04         // Decimal Type

IXyncDefine.TB_BIGINT  0x0d    // Int64 Type

IXyncDefine.TB_DATETIME  0x10     // DateTime Type

 

int iSize

컬럼의 전체 사이즈를 입력한다.

IXyncVariable. ColumnKeyType enmKeyType

컬럼의 Key 타입을 입력한다.

[IXyncDefine]

IXyncDefine.TB_NORMAL        0x00  // Nomal column

IXyncDefine.TB_NOTNULL       0x01 // NotNUll column

IXyncDefine.TB_KEY           0x03 // Key column

IXyncDefine.TB_SEQUENCE      0x07         // Sequence column

IXyncDefine.TB_CONSTANT      0x0F        // Constant column

int iDec

컬럼타입이 Decimal인 경우 컬럼의 소수점 이하 자리수를 입력한다.

IXyncVariable. DecimalPointType enmDecimalPoint

컬럼타입이 Decimal인 경우 소숫점 처리 방식을 지정한다.

[IXyncDefine]

IXyncDefine.DECIMAL_CEIL       1     // 올림

IXyncDefine.DECIMAL_ROUND      2     // 반올림

IXyncDefine.DECIMAL_FLOOR      3     // 버림

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

IIXyncService IXyncService = Loader.newService();

 

// DataSet을 생성한다.

IXyncDataSet GDS = IXyncService.newDataSet("output1");

 

// DataSet의 컬럼속성을 지정한다.

// default size = 10

GDS.addDataColumn("id",IXyncVariable.ColumnDataType.INT);

// default size = 255

GDS.addDataColumn("name",IXyncVariable.ColumnDataType.STRING);

//default size=29, 소수자리=0

GDS.addDataColumn("pno",IXyncVariable.ColumnDataType.DECIMAL);

// default size = 4

GDS.addDataColumn("id1", IXyncVariable.ColumnDataType.INT,4);

// default size = 64

GDS.addDataColumn("name1", IXyncVariable.ColumnDataType.STRING,64);

//size=10, 소수자리=3

GDS.addDataColumn("pno1", IXyncVariable.ColumnDataType.DECIMAL, 10,

                  IXyncVariable.ColumnKeyType.NORMAL, 3);

//size=10, 소수자리=3, 반올림

GDS.addDataColumn("pno2", IXyncVariable.ColumnDataType.DECIMAL,10,

                   IXyncVariable.ColumnKeyType.NORMAL,3,

                  IXyncVariable.DecimalPointType.ROUND);

 

// 컬럼속성 지정이 끝났음을 알린다.

GDS.addDataColumnEnd();

 

 

·      addDataColumnEnd

Data Coulmn에 대한 추가가 종료되었음을 알려주고 Data Row에 대한 입력을 준비한다.

void addDataColumnEnd();

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

IIXyncService IXyncService = Loader.newService();

 

// DataSet을 생성한다.

IXyncDataSet GDS = IXyncService.newDataSet("output1");

 

// DataSet의 컬럼속성을 지정한다.

GDS.addDataColumn("id",  IXyncVariable.ColumnDataType.INT);

GDS.addDataColumn("name",IXyncVariable.ColumnDataType.STRING);

GDS.addDataColumn("pno", IXyncVariable.ColumnDataType.DECIMAL);

 

// 컬럼속성 지정이 끝났음을 알린다.

GDS.addDataColumnEnd();

 

 

·      addChangingDataColumnOld (+9개 오버로딩)

IXyncBasePage의 commonSelet, postSelect, multiSelect등의 DataSet의 컬럼헤더속성을 자동으로 지정하는 메소드를 호출하기 전에 자동화 하지 않을 DataSet의 컬럼헤더속성을 지정한다.

즉, DataReader나 .NET DataSet의 스키마 정보를 통해 IXYNC DataSet의 컬럼헤더속성을 설정하지 않고 addChangingDataColumn으로 지정한 값으로 컬럼헤더 속성을 지정할 경우 사용한다.

첫번째 메소드의 경우는 컬럼의 사이즈를 서버가 디폴트로 지정하도록 할 경우 사용하고, 나머지 메소드들은 사용자가 사이즈와 반올림 정도등을 지정할 경우 사용한다.

이 메소드는 DataSet의 컬럼헤더속성설정 이전에 사용한다.

void addChangingDataColumnOld(string stColName, int iDataType);

void addChangingDataColumnOld(string stColName,int iDataType,int iSize);

void addChangingDataColumnOld(string stColName,int iDataType,int iSize,

                          int iKeyType);

void addChangingDataColumnOld(string stColName,int iDataType,int iSize,

                          int iKeyType, int iDec);

void addChangingDataColumnOld(string stColName,int iDataType,int iSize,

                          int iKeyType, int iDec,int iRoundMode)

void addChangingDataColumnOld(string stColName, string stMappingName,

                          int iDataType)

void addChangingDataColumnOld(string stColName, string stMappingName,

                          int iDataType,int iSize);

void addChangingDataColumnOld(string stColName, string stMappingName,

                          int iDataType,int iSize,int iKeyType);

void addChangingDataColumnOld(string stColName, string stMappingName,

                          int iDataType,int iSize,int iKeyType, int iDec);

void addChangingDataColumnOld(string stColName, string stMappingName,

                          int iDataType, int iSize, int iKeyType, int iDec,

                          int iRoundMode);

 

Parameter 명

설명

string stColName

컬럼 이름을 입력한다.

string stMappingName

실제 클라이언트에서 사용한 원본 컬럼과 매핑되는 컬럼 이름을 입력한다.

int iDataType

컬럼 타입을 지정한다.

[IXyncDefine]

IXyncDefine.TB_BLOB    0x09 // BLOB Type

IXyncDefine.TB_URL     0x0a       // URL Type

IXyncDefine.TB_STRING  0x01   // String Type

IXyncDefine.TB_INT     0x02        // Int32 Type

IXyncDefine.TB_DECIMAL 0x04         // Decimal Type

IXyncDefine.TB_BIGINT  0x0d    // Int64 Type

IXyncDefine.TB_DATETIME  0x10     // DateTime Type

 

int iSize

컬럼의 전체 사이즈를 입력한다.

int iKeyType

컬럼의 Key 타입을 입력한다.

[IXyncDefine]

IXyncDefine.TB_NORMAL        0x00  // Nomal column

IXyncDefine.TB_NOTNULL       0x01 // NotNUll column

IXyncDefine.TB_KEY           0x03 // Key column

IXyncDefine.TB_SEQUENCE      0x07         // Sequence column

IXyncDefine.TB_CONSTANT      0x0F        // Constant column

int iDec

컬럼타입이 Decimal인 경우 컬럼의 소수점 이하 자리수를 입력한다.

int iRoundMode

컬럼타입이 Decimal인 경우 소숫점 처리 방식을 지정한다.

[IXyncDefine]

IXyncDefine.DECIMAL_CEIL       1     // 올림

IXyncDefine.DECIMAL_ROUND      2     // 반올림

IXyncDefine.DECIMAL_FLOOR      3     // 버림

 

사용예제)

IXyncBasePage oGBasePage = new IXyncBasePage(this.Page);

try {

       oGBasePage.initIXyncPage("default");

    if(oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA"){

              ServiceLoader Loader = new ServiceLoader(Server, Request,

                                                                                 Response);

              IIXyncService IXyncService = Loader.newService();

              IXyncConnection oConn =

                oGBasePage.IXyncDbHelper.addConnection( "Conn1",

               IXyncVariable.DbProviderType.MSSQL,

               null,

               300);

 

       string strSql = "select id, name, address, image_url, tel from emp";

 

              // DataSet을 생성한다.

              IXyncDataSet GDS = IXyncService.newDataSet("output1");

 

              // id, name, address, image_url, tel 중 변경할 DataSet의 컬럼속성

              // 만을 지정한다.

              GDS.addChangingDataColumnOld("id",IXyncDefine.TB_INT);

              GDS.addChangingDataColumnOld("image_url",IXyncDefine.TB_URL);

              // 원본 데이터소스의 컬럼명은 ‘org_name’이지만,

              // 클라이언트에서는 ‘map_name’을 사용한다.

              GDS.addChangingDataColumnOld("org_name", "map_name",

                            IXyncDefine.TB_STRING, 10);

 

              oGBasePage.commonSelect_byDataSet (oConn, GDS, strSql);

       }

}

catch (Exception except)

{

    // 예외 메세지를 저장하고, 결과 플래그를 false로 설정합니다. 

    oGBasePage.addMessage("user", "90001", except.Message);

    oGBasePage.setResult(false);

}

finally

{

    // IXyncBasePage객체를 해제합니다.

    // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

    oGBasePage.Release();

}  

 

·      addChangingDataColumn (+9개 오버로딩)

4.0에서 사용하던 addChangingDataColumnOld 메소드와 기능은 동일하지만, IXyncDefine 값 대신 4.0.1에서 추가된 IXyncVariable의 enum 값을 사용하여 정적 변수의 접근을 쉽게 하였다.

(부록 2-2 IXyncVariable 참조).

void addChangingDataColumn(string stColName,

IXyncVariable.ColumnDataType enmColumnDataType)

void addChangingDataColumn(string stColName,

IXyncVariable.ColumnDataType enmColumnDataType,

int iSize)

void addChangingDataColumn(string stColName,

IXyncVariable.ColumnDataType enmColumnDataType,

int iSize,IXyncVariable.ColumnKeyType enmKeyType)

void addChangingDataColumn(string stColName,

IXyncVariable.ColumnDataType enmColumnDataType,

int iSize,IXyncVariable.ColumnKeyType enmKeyType,

int iDec)

void addChangingDataColumn(string stColumnName,

IXyncVariable.ColumnDataType enmColumnDataType,

int iSize, IXyncVariable.ColumnKeyType enmKeyType,

int iDec,

IXyncVariable.DecimalPointType enmDecimalPoint)

void addChangingDataColumn(string stColName, string stMappingName,

IXyncVariable.ColumnDataType enmColumnDataType)

void addChangingDataColumn(string stColName, string stMappingName,

IXyncVariable.ColumnDataType enmColumnDataType,

int iSize)

void addChangingDataColumn(string stColName, string stMappingName,

IXyncVariable.ColumnDataType enmColumnDataType,

int iSize,

IXyncVariable.ColumnKeyType enmKeyType)

void addChangingDataColumn(string stColName, string stMappingName,

IXyncVariable.ColumnDataType enmColumnDataType,

int iSize,

IXyncVariable.ColumnKeyType enmKeyType,

int iDec)

void addChangingDataColumn(string stColumnName, string stMappingName,

IXyncVariable.ColumnDataType enmColumnDataType,

int iSize, IXyncVariable.ColumnKeyType enmKeyType,

                          int iDec,

                          IXyncVariable.DecimalPointType enmDecimalPoint)

 

Parameter 명

설명

string stColName

컬럼 이름을 입력한다.

string stMappingName

실제 클라이언트에서 사용한 원본 컬럼과 매핑되는 컬럼 이름을 입력한다. IX-SERVER for .NET 3.0 버전부터 지원

IXyncVariable. ColumnDataType enmColumnDataType

컬럼 타입을 지정한다.

[IXyncDefine]

IXyncDefine.TB_BLOB    0x09 // BLOB Type

IXyncDefine.TB_URL     0x0a    // URL Type

IXyncDefine.TB_STRING  0x01    // String Type

IXyncDefine.TB_INT     0x02    // Int32 Type

IXyncDefine.TB_DECIMAL 0x04    // Decimal Type

IXyncDefine.TB_BIGINT  0x0d    // Int64 Type

IXyncDefine.TB_DATETIME  0x10     // DateTime Type

 

int iSize

컬럼의 전체 사이즈를 입력한다.

IXyncVariable. ColumnKeyType enmKeyType

컬럼의 Key 타입을 입력한다.

[IXyncDefine]

IXyncDefine.TB_NORMAL        0x00  // Nomal column

IXyncDefine.TB_NOTNULL       0x01  // NotNUll column

IXyncDefine.TB_KEY           0x03  // Key column

IXyncDefine.TB_SEQUENCE      0x07  // Sequence column

IXyncDefine.TB_CONSTANT      0x0F  // Constant column

int iDec

컬럼타입이 Decimal인 경우 컬럼의 소수점 이하 자리수를 입력한다.

IXyncVariable. DecimalPointType enmDecimalPoint

컬럼타입이 Decimal인 경우 소숫점 처리 방식을 지정한다.

[IXyncDefine]

IXyncDefine.DECIMAL_CEIL       1     // 올림

IXyncDefine.DECIMAL_ROUND      2     // 반올림

IXyncDefine.DECIMAL_FLOOR      3     // 버림

 

사용예제)

// IXyncBasePage객체를 생성합니다.

IXyncBasePage oGBasePage = new IXyncBasePage(this.Page);

 

try{

    oGBasePage.initIXyncPage("default");

    if(oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA")

    {

        ServiceLoader Loader = new ServiceLoader(Server, Request,

                                              Response);

        IIXyncService IXyncService = Loader.newService();

        IXyncConnection oConn =                  

                       oGBasePage.IXyncDbHelper.addConnection( "Conn1",

                       IXyncVariable.DbProviderType.MSSQL,

                       null,

                       300);

 

    string strSql = "select id, name, address, image_url, tel from emp";

 

        // DataSet을 생성한다.

        IXyncDataSet GDS = IXyncService.newDataSet("output1");

 

        // id, name, address, image_url, tel 중 변경할 DataSet의

        // 컬럼속성만을 지정한다.

        GDS.addChangingDataColumn("id", IXyncVariable.ColumnDataType.INT);

        GDS.addChangingDataColumn("image_url",

                                   IXyncVariable.ColumnDataType.URL);

        // 원본 데이터소스의 컬럼명은 ‘org_name’이지만,

        // 클라이언트에서는 ‘map_name’을 사용한다.

        // 컬럼이름과 함께, 타입과 사이즈도 같이 변경하는 경우이다.

        GDS.addChangingDataColumn ("org_name", "map_name",

                            IXyncVariable.ColumnDataType.STRING, 10);

 

        oGBasePage.commonSelect_byDataSet (oConn, GDS, strSql);

    }

}

catch (Exception except)

{

    // 예외 메세지를 저장하고, 결과 플래그를 false로 설정합니다. 

    oGBasePage.addMessage("user", "90001", except.Message);

    oGBasePage.setResult(false);

}

finally

{

    // IXyncBasePage객체를 해제합니다.

    // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

    oGBasePage.Release();

}

 

·      addChangingDataColumnName

원본 데이터셋(또는 데이터 소스)에서 정의된 컬럼이름을 런타임 시에 다른이름으로 변경하여 사용하고자 할 경우 이용한다.

IX-SERVER for .NET 3.0 버전부터 지원한다.

void addChangingDataColumnName(string stColName, string stMappingName);

 

Parameter 명

설명

string stColName

컬럼 이름을 입력한다.

string stMappingName

실제 클라이언트에서 사용한 원본 컬럼과 매핑되는 컬럼 이름을 입력한다.

 

사용예제)

// IXyncBasePage객체를 생성합니다.

IXyncBasePage oGBasePage = new IXyncBasePage(this.Page);

 

try{

    oGBasePage.initIXyncPage("default");

    if(oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA")

    {

        ServiceLoader Loader = new ServiceLoader(Server, Request,

                                              Response);

        IIXyncService IXyncService = Loader.newService();

        IXyncConnection oConn =                  

                       oGBasePage.IXyncDbHelper.addConnection( "Conn1",

                       IXyncVariable.DbProviderType.MSSQL,

                       null,

                       300);

 

    string strSql = "select id, name, address, image_url, tel from emp";

        // DataSet을 생성한다.

        IXyncDataSet GDS = IXyncService.newDataSet("output1");

 

        // id, name, address, image_url, tel 중 변경할 DataSet의

        // 컬럼속성만을 지정한다.

        GDS.addChangingDataColumn("id", IXyncVariable.ColumnDataType.INT);

        GDS.addChangingDataColumn("image_url",

                              IXyncVariable.ColumnDataType.URL);

        // 원본 데이터소스의 컬럼명은 ‘org_name’이지만,

        // 클라이언트에서는 ‘map_name’을 사용한다.

        GDS.addChangingDataColumnName ("org_name", "map_name");

        GDS.addDataColumnEnd();

        oGaBasePage.commonSelect(oConn, GDS, strSql);

    }

}

catch (Exception except)

{

    // 예외 메세지를 저장하고, 결과 플래그를 false로 설정합니다. 

    oGBasePage.addMessage("user", "90001", except.Message);

    oGBasePage.setResult(false);

}

finally

{

    // IXyncBasePage객체를 해제합니다.

    // DB연결이 설정된 경우에는 이곳에서 자동으로 DB연결이 해제됩니다.

    oGBasePage.Release();

}

 

·      addDataRowValue

DataSet에 입력할 현재로우의 컬럼데이터 값을 세팅한다. (1개 오버로딩)

첫번째 메소드는 해당 index를 갖는 컬럼에 결과 데이터를 세팅한다. 두번째 메소드는 해당 컬럼이름을 갖는 컬럼에 결과 데이터를 세팅한다.

void addDataRowValue(int iIndex, object oValue);

void addDataRowValue(string strName, object oValue);

 

Parameter 명

설명

int iIndex

컬럼의 index을 입력한다. (index는 0부터 시작한다.)

string strName

컬럼의 이름을 입력한다.

object oValue

컬럼의 실제 데이터값을 입력한다.

 

사용예제)

// DataSet을 생성한다.

IXyncDataSet GDS = IXyncService.newDataSet("output1");

//…………………………………………………

// 쿼리문을 실행하고 그 결과셋을 받는다.              .

SqlCommand myCommand = new SqlCommand(stSQL, myConnection);

 

// 쿼리를 수행한 결과 셋을 받는다.

SqlDataReader dr = myCommand.ExecuteReader();

while(dr.Read()) {

   // 컬럼의 index를 이용하는 경우

    //GDS.addDataRowValue (0, dr["id"]);

    //GDS.addDataRowValue (1, dr["name"]);

    //GDS.addDataRowValue (2, dr["pno"]);

    // 컬럼의 이름을 이용하는 경우

    GDS.addDataRowValue ("id", dr["id"]);

    GDS.addDataRowValue ("name", dr["name"]);

    GDS.addDataRowValue ("pno", dr["pno"]);

   

// DataSet에 한 로우를 입력한다.

GDS.addDataRow();

}

 

·      addDataRow

DataSet에 한 Row 값을 입력한다.

퍼스트로우 방식인 경우는 내부적으로 firstrow_size 만큼 DataSet에 데이터가 쌓이게 되면 클라이언트로 데이터를 전송하게 된다.

void addDataRow();

 

사용예제)

 

// DB 접속 정보를 관리하는 임의의 class이다.

// IXYNC.NET에서 제공하는 것이 아님

IXyncDB DbObj = new IXyncDB();

SqlConnection myConnection = DbObj.GetSqlDBConnection();

string stSQL = "SELECT * FROM titles";

SqlCommand myCommand = new SqlCommand(stSQL, myConnection);

 

// DataSet을 생성한다.

IXyncDataSet GDS = IXyncService.newDataSet("output1");

//…………………………………………………

// 쿼리를 수행한 결과 셋을 받는다.

SqlDataReader dr = myCommand.ExecuteReader();

while(dr.Read())

{

       GDS.addDataRowValue ("id", dr["id"]);

       GDS.addDataRowValue ("name", dr["name"]);

       GDS.addDataRowValue ("pno", dr["pno"]);

      

// DataSet에 한 로우를 입력한다.

GDS.addDataRow();

}

 

 

·      addDataRows

DataSet에 DB쿼리결과 데이터 전체 Row 값을 입력한다.

퍼스트로우 방식인 경우는 내부적으로 firstrow_size 만큼 DataSet에 데이터가 쌓이게 되면 클라이언트로 데이터를 전송하게 된다. 첫번째 메소드는 SqlDataReader를 사용하여 Row 값들을 입력한다. 두번째 메소드는 OleDbDataReader를 사용하여 Row 값들을 입력한다. 세번째 메소드는 OracleDataReader를 사용하여 Row 값들을 입력한다. 네번째 메소드는 OdbcDataReader를 사용하여 Row 값들을 입력한다.

void addDataRows(SqlDataReader dr);

void addDataRows(OleDbDataReader dr);

void addDataRows(OracleDataReader dr);

void addDataRows(OdbcDataReader dr);

 

Parameter 명

설명

SqlDataReader dr

SqlDataReader를 통한 결과 데이터셋을 입력한다.

OleDbDataReader dr

OleDbDataReader를 통한 결과 데이터셋을 입력한다.

OracleDataReader dr

OracleDataReader를 통한 결과 데이터셋을 입력한다.

OdbcDataReader dr

OdbcDataReader를 통한 결과 데이터셋을 입력한다.

 

사용예제1) SqlDataReader

 

// DB 접속 정보를 관리하는 임의의 class이다.

// IXYNC.NET에서 제공하는 것이 아님

IXyncDB DbObj = new IXyncDB();

SqlConnection myConnection = DbObj.GetSqlDBConnection();

string stSQL = "SELECT * FROM titles";

SqlCommand myCommand = new SqlCommand(stSQL, myConnection);

 

// DataSet을 생성한다.

IXyncDataSet GDS = IXyncService.newDataSet("output1");

 

// …………………………………………………

// 쿼리를 수행한 결과 셋을 받는다.

SqlDataReader dr = myCommand.ExecuteReader();

// DataSet에 SqlDataReader를 통한 DB 결과셋을 입력한다.

GDS.addDataRows(dr);

 

 

사용예제2) OleDbDataReader

// DB 접속 정보를 관리하는 임의의 class이다.

// IXYNC.NET에서 제공하는 것이 아님

IXyncDB DbObj = new IXyncDB();

SqlConnection myConnection = DbObj.GetSqlDBConnection();

string stSQL = "SELECT * FROM titles";

SqlCommand myCommand = new SqlCommand(stSQL, myConnection);

 

// DataSet을 생성한다.

IXyncDataSet GDS = IXyncService.newDataSet("output1");

// …………………………………………………

 

// 쿼리를 수행한 결과 셋을 받는다.

OleDbDataReader dr = myCommand.ExecuteReader();

// DataSet에 OleDbDataReader 를 통한 DB 결과셋을 입력한다.

GDS.addDataRows(dr);

 

 

·      getDataRowCommandTypeOld

DataSet의 해당 DataRow의 CommandType(select/insert/update/delete)을 반환한다.

이 메소드는 Transaction Type 서비스에서 사용한다.

int getDataRowCommandTypeOld(int iRow);

 

Parameter 명

설명

int iRow

동작되는 Row index가 넘어온다.

사용예제)

IXyncBasePage oGBasePage =

           new IXyncBasePage(Server, Request, Response);

IXyncConnection oConn =

             oGBasePage.IXyncDbHelper.addConnection("conn1",

                        IXyncVariable.DbProviderType.MSSQL, null, 0);

 

string strSql = "";      // 쿼리문을 저장할 변수

// …………………………………………………

int i = 0; // IXYNC DataSet의 해당 DataTable의 인덱스

IXyncDataSet[] oaDataSet = oGBasePage.IXyncService.getDataSets ();

DataTable dtTable = oaDataSet[i].Tables[0];

for(int j=0; j< dtTable.Rows.Count; j++) {

  DataRow drRow = dtTable.Rows[j];

  if(oaDataSet[i].getDataRowCommandTypeOld(j) == IXyncDefine.TB_JOB_INSERT)

  {   //Insert Job

      // Insert 쿼리문을 작성합니다.

        strSql = " insert into getmethod_0800 (id, data1, data2) "+

" values (@id, @data1, @data2)";

           

        // 쿼리문에 포함된 호스트변수들의 파라미터값을 설정합니다.

        IXyncParameter oGparam = new IXyncParameter();

        oGparam.add ("id", drRow["id"]);

      oGparam.add ("data1", drRow["data1"]);

      oGparam.add ("data2", drRow["data2"]);

      oGBasePage.execNonQuery2(oConn, strSql, oGparam, null);

  }

  else if(oaDataSet[i].getDataRowCommandTypeOld(j) ==

                                            IXyncDefine.TB_JOB_UPDATE)

  {   // Update Job

      // Update 쿼리문을 작성합니다.

      strSql = " update getmethod_0800 "+

" set data1=@ data1, data2=@ data2where id=@id ";

            // 쿼리문에 포함된 호스트변수들의 파라미터값을 설정합니다.

        IXyncParameter oGparam = new IXyncParameter();

      oGparam.add ("data1", drRow["data1"]);

      oGparam.add ("data2", drRow["data2"]);

      oGparam.add ("id", drRow["id"]);

      oGBasePage.execNonQuery2(oConn, strSql, oGparam, null);

  }

  else if(oaDataSet[i].getDataRowCommandTypeOld(j) ==

                                            IXyncDefine.TB_JOB_DELETE)

  {   // Delete Job

        // Delete 쿼리문을 작성합니다.

      strSql = " delete from getmethod_0800 where id=@id ";       

        // 쿼리문에 포함된 호스트변수들의 파라미터값을 설정합니다.

        IXyncParameter oGparam = new IXyncParameter();

        oGparam.add ("id", drRow["id"]);

        oGBasePage.execNonQuery2(oConn, strSql, oGparam, null);

  }

}

 

·      getDataRowCommandType

DataSet의 해당 DataRow의 CommandType(select/insert/update/delete)을 반환한다.

이 메소드는 Transaction Type 서비스에서 사용한다.

IXyncVariable.RowCommandType getDataRowCommandType(int iRow);

 

Parameter 명

설명

int iRow

동작되는 Row index가 넘어온다.

IXyncVariable.RowCommandType

RetrunValue : IXyncVariable.RowCommandType

[IXyncVariable의 RowCommandType 열거형 값]

IXyncVariable.RowCommandType.NORMAL// 일반행

IXyncVariable.RowCommandType.INSERT        // 입력작업

IXyncVariable.RowCommandType.UPDATE   // 수정작업

IXyncVariable.RowCommandType.DELETE       // 삭제작업

 

사용예제)

IXyncBasePage oGBasePage =

           new IXyncBasePage(Server, Request, Response);

IXyncConnection oConn =

           oGBasePage.IXyncDbHelper.addConnection("conn1",      

           IXyncVariable.DbProviderType.MSSQL, null, 0);

string strSql = "";      // 쿼리문을 저장할 변수

// …………………………………………………

int i = 0; // IXYNC DataSet의 해당 DataTable의 인덱스

IXyncDataSet[] oaDataSet = oGBasePage.IXyncService.getDataSets ();

 

DataTable dtTable = oaDataSet[i].Tables[0];

for(int j=0; j< dtTable.Rows.Count; j++)

{

  DataRow drRow = dtTable.Rows[j];

  if(oaDataSet[i].getDataRowCommandType(j) ==

                                  IXyncVariable.RowCommandType.INSERT)

  {   //Insert Job

      // Insert 쿼리문을 작성합니다.

    strSql = " insert into getmethod_0800 (id, data1, data2) "+

             " values (@id, @data1, @data2)";           

      // 쿼리문에 포함된 호스트변수들의 파라미터값을 설정합니다.

      IXyncParameter oGparam = new IXyncParameter();

      oGparam.add ("id", drRow["id"]);

      oGparam.add ("data1", drRow["data1"]);

      oGparam.add ("data2", drRow["data2"]);

      oGBasePage.execNonQuery2(oConn, strSql, oGparam, null);

  }

  else if(oaDataSet[i].getDataRowCommandType(j) ==

                                 IXyncVariable.RowCommandType.UPDATE)

  {   // Update Job

      // Update 쿼리문을 작성합니다.

      strSql = " update getmethod_0800 "+

               " set data1=@ data1, data2=@ data2where id=@id ";

      // 쿼리문에 포함된 호스트변수들의 파라미터값을 설정합니다.

      IXyncParameter oGparam = new IXyncParameter();

      oGparam.add ("data1", drRow["data1"]);

      oGparam.add ("data2", drRow["data2"]);

      oGparam.add ("id", drRow["id"]);

      oGBasePage.execNonQuery2(oConn, strSql, oGparam, null);

  }

  else if(oaDataSet[i].getDataRowCommandType(j) ==

                                 IXyncVariable.RowCommandType.DELETE)

  {   // Delete Job

        // Delete 쿼리문을 작성합니다.

      strSql = " delete from getmethod_0800 where id=@id ";       

      // 쿼리문에 포함된 호스트변수들의 파라미터값을 설정합니다.

      IXyncParameter oGparam = new IXyncParameter();

      oGparam.add ("id", drRow["id"]);

      oGBasePage.execNonQuery2(oConn, strSql, oGparam, null);

  }

}

 

·      isInsertRow, isUpdateRow, isDeleteRow, isNormalRow

DataSet의 해당 DataRow의 CommandType(select/insert/update/delete)의 bool 형을 반환한다.

이 메소드들은 Transaction Type 서비스에서 사용한다.

bool isInsertRow(int iRow)

bool isUpdateRow(int iRow)

bool isDeleteRow(int iRow)

bool isNormalRow(int iRow)

 

Method 명

반환값 설명

isInsertRow

DataSet의 해당 DataRow의 CommandType이 Insert 일때 TRUE 를 반환한다.

isUpdateRow

DataSet의 해당 DataRow의 CommandType이 Update 일때 TRUE 를 반환한다.

isDeleteRow

DataSet의 해당 DataRow의 CommandType이 Delete 일때 TRUE 를 반환한다.

isNormalRow

DataSet의 해당 DataRow의 CommandType이 Select 일때 TRUE 를 반환한다.

사용예제)

IXyncBasePage oGBasePage =

                     new IXyncBasePage(Server, Request, Response);

IXyncConnection oConn =

               oGBasePage.IXyncDbHelper.addConnection("conn1",

               IXyncVariable.DbProviderType.MSSQL, null, 0);

string strSql = "";    // 쿼리문을 저장할 변수

// …………………………………………………

 int i = 0; // IXYNC DataSet의 해당 DataTable의 인덱스

 IXyncDataSet[] oaDataSet = oGBasePage.IXyncService.getDataSets ();

 

DataTable dtTable = oaDataSet[i].Tables[0];

for(int j=0; j< dtTable.Rows.Count; j++)

{

    DataRow drRow = dtTable.Rows[j];

       if(oaDataSet[i].isInsertRow(j))    //Insert Job

    {  

        // Insert 쿼리문을 작성합니다.

        strSql = " insert into getmethod_0800 (id, data1, data2) "+

" values (@id, @data1, @data2)";

           

        // 쿼리문에 포함된 호스트변수들의 파라미터값을 설정합니다.

            IXyncParameter oGparam = new IXyncParameter();

oGparam.add ("id", drRow["id"]);

        oGparam.add ("data1", drRow["data1"]);

        oGparam.add ("data2", drRow["data2"]);

       

oGBasePage.execNonQuery2(oConn, strSql, oGparam, null);

    }

        else if(oaDataSet[i].isUpdateRow(j))    // Update Job

    {  

        // Update 쿼리문을 작성합니다.

        strSql = " update getmethod_0800 "+

" set data1=@ data1, data2=@ data2where id=@id ";

 

            // 쿼리문에 포함된 호스트변수들의 파라미터값을 설정합니다.

            IXyncParameter oGparam = new IXyncParameter();

        oGparam.add ("data1", drRow["data1"]);

        oGparam.add ("data2", drRow["data2"]);

oGparam.add ("id", drRow["id"]);

       

oGBasePage.execNonQuery2(oConn, strSql, oGparam, null);

    }

        else if(oaDataSet[i].isDeleteRow(j))    // Delete Job

    {  

        // Delete 쿼리문을 작성합니다.

        strSql = " delete from getmethod_0800 where id=@id ";

       

        // 쿼리문에 포함된 호스트변수들의 파라미터값을 설정합니다.

            IXyncParameter oGparam = new IXyncParameter();

oGparam.add ("id", drRow["id"]);

 

oGBasePage.execNonQuery2(oConn, strSql, oGparam, null);

    }

}

 

·      copyDataTable

.NET framework에서 제공하는 타입인 .NET DataTable객체를 IXYNC DataSet의 DataTable 객체로 복사한다.

이 메소드는 DataTable Header 스키마와 Data전체를 복사하는 메소드로 IXYNC DataSet이 생성되어 있고 DataTable이 비어 있을 때만 정상동작한다.

첫 번째 파라미터는 IXYNC DataSet으로 복사할 .NET framework의 .NET DataTable 객체를 입력한다.

void copyDataTable(DataTable iDataTable);

 

Parameter 명

설명

DataTable iDataTable

IXYNC DataSet으로 복사할 .NET Framework에서 제공하는 타입인 .NET DataTable 객체를 입력한다.

사용예제)

// IXYNC DataSet을 생성한다.

IXyncDataSet GDS = IXyncService.newDataSet("output1");

// …………………………………………………

 

// DB 접속 정보를 관리하는 임의의 class이다.

// IXYNC.NET에서 제공하는 것이 아님. 사용자가 임의로 생성해야 함.

IXyncDB DbObj = new IXyncDB();

SqlConnection myConnection = DbObj.GetSqlDBConnection();

string stSQL = "SELECT * FROM titles";

SqlCommand myCommand = new SqlCommand(stSQL, myConnection);

 

// 쿼리를 수행한 결과 셋을 pure .NET DataTable에 입력한다.

SqlDataReader dr = myCommand.ExecuteReader();

 

// pure .NET DataTable 생성

DataSet ds부서조회 = new DataSet("testDataSet");

ds부서조회.Tables.Add("testDataTable");

 

// 부서조회 컬럼 생성

DataColumn myColumn = new DataColumn();

myColumn.DataType = System.Type.GetType("System.String");

myColumn.AllowDBNull = false;

myColumn.Unique = false;

myColumn.Caption = "deptnm";

myColumn.ColumnName = "deptnm";

myColumn.DefaultValue = "";

myColumn.MaxLength = 100;

// Add the column to the table.

ds부서조회.Tables[0].Columns.Add(myColumn);

 

ds부서조회.Tables[0].Columns.Add("year",

                                     Type.GetType("System.Int32"));

ds부서조회.Tables[0].Columns.Add("amt1",

                                 Type.GetType("System.Int32"));

ds부서조회.Tables[0].Columns.Add("amt2",

                                 Type.GetType("System.Int32"));

ds부서조회.Tables[0].Columns.Add("dec1",

                                 Type.GetType("System.Decimal"));

 

while(myReader.Read())

{  

    int iColumn;

    DataRow row = ds부서조회.Tables[0].NewRow();

    for (iColumn=0; iColumn< myReader.FieldCount; iColumn++)

    {

        row[iColumn] = myReader.GetValue(iColumn);

    }

    row[iColumn] = 12345.123456789;

    ds부서조회.Tables[0].Rows.Add(row);

}

 

//기 구성된 .NET DataTable을 IX-SERVER DataSet으로 카피한다. 스키마까지

// 헤더와 데이터복사

GDS.copyDataTable(ds부서조회.Tables["testDataTable"]);

//GDS.cloneDataTable(ds부서조회.Tables[0]); // 헤더만복사 (1)

//GDS.cloneDataTableHeader(ds부서조회.Tables[0]);//헤더만복사(1)==(2)

//GDS.appendDataTable(ds부서조회.Tables[0]); // 데이터만 복사

 

GDS.end();

 

·      addDataColumsHeader

cloneDataTableHeader  =  cloneDataTable (Ver 3.0) 과 동일한 메소드이다.

.NET Framework에서 제공하는 타입인 일반 .NET DataTable 객체의 Header 스키마 또는 DataReader의 스키마 만을 IXYNC DataSet의 DataTable 객체로 복사한다.

이 메소드는 DataTable Header 스키마를 복사하는 메소드로 IXYNC DataSet이 생성되어 있고 DataTable 객체가 비어 있을 때만 정상동작한다.

첫번째 파라미터는 IXYNC DataSet으로 복사할 .NET Framework DataTable 객체를 입력한다.

예제는 copyDataTable의 예제를 참조하기 바란다.

void addDataColumnsHeader (DataTable iDataTable);

void addDataColumnsHeader (lDataReader myDataReader);

 

Parameter 명

설명

DataTable iDataTable

IXYNC DataSet으로 복사할 .NET Framework의 일반 .NET DataTable 객체를 입력한다.

lDataReader myDataReader

IXYNC DataSet으로 복사할 lDataReader 객체를 입력한다.

사용예제)

 

// DB 접속 정보를 관리하는 임의의 class이다.

// IXYNC.NET에서 제공하는 것이 아님. 사용자가 임의로 생성해야 함.

// SQLSERVER와의 커넥션 객체를 생성한다.              .

IXyncDB DbObj = new IXyncDB();

SqlConnection myConnection = DbObj.GetSqlDBConnection();

string stSQL = "SELECT * FROM titles";

 

// 쿼리문을 실행하고 그 결과셋을 받는다.              .

SqlCommand myCommand = new SqlCommand(stSQL, myConnection);

myConnection.Open();

       

// lDataReader로부터 IXyncDataTable의 헤더정보를 만든다.

lDataReader dr = myCommand.ExecuteReader();

 

// IDataReader로부터 IXyncDataTable의 헤더정보를 만든다.

oDataSet. addDataColumnsHeader(dr);

// lDataReader로부터 IXyncDataTable에 데이터를 채워 넣는다.

oDataSet.addDataRows(dr);

 

// 결과셋 객체를 해제한다.

dr.Close();

myConnection.Close();

 

 

·      appendDataTable

.NET Framework의 일반  DataTable의 Header 스키마를 제외한 Data부분만을 IXYNC DataSet의 DataTable로 복사한다.

이 메소드는 DataTable의 Data를 복사하는 메소드로 IXYNC DataSet이 생성되어 있을 때만 정상동작한다. 첫번째 파라미터는 IXYNC DataSet으로 복사할  .NET Framework의 일반  DataTable 객체를 입력한다.

예제는 copyDataTable의 예제를 참조하기 바란다.

void appendDataTable(DataTable iDataTable);

 

Parameter 명

설명

DataTable iDataTable

IXYNC DataSet으로 복사할 .NET Framework에서 제공하는 일반 .NET DataTable 객체를 입력한다.

 

·      fillData

IXyncDataSet 에 결과셋의 데이터를 채워넣는다.

void fillData(DataTable iDataTable)

void fillData(lDataReader myDataReader)

사용예제)

 

IXyncBasePage oGBasePage = new IXyncBasePage(this.Page);

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

IIXyncService IXyncService = Loader.newService();

 

IXyncConnection oConn =                  

               oGBasePage.IXyncDbHelper.addConnection( "Conn1",

               IXyncVariable.DbProviderType.MSSQL,

               null,

               300);

 

string strSql = "select id, name, address, image_url, tel from emp";

 

// DataSet을 생성한다.

IXyncDataSet IXyncDS = IXyncService.newDataSet("output1");

IDataReader myReader = oGBasePage.IXyncDbHelper.buildDataReader(oConn,

                                                             strSql);

IXyncDS.fillData(myReader);

 

 

·      convertToNetDataSet

IXYNC DataSet을 pure .NET DataSet으로 캐스팅한다. 특히, IXYNC DataSet 만이 가지고 있는 각 로우의 작업스타일(command type) 필드까지 복사한다.

DataSet convertToDataSet();

사용예제)

 

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

IIXyncService IXyncService = Loader.newService();

 

DataSet oNetDataSet;

int iRowCommandType = 0;

 

// __IXync_command_type 필드가 추가되어 복사됩니다.

// oNetDataSet = (DataSet) IXyncService.getDataSet("input1"); 과 같이

// 곧바로 캐스팅 하면 IXYNC DataSet의 command type 은 복사되지 않습니다.

oNetDataSet = IXyncService.getDataSet("input1").convertToNetDataSet();

 

DataTable dtTable = oNetDataSet.Tables[0];

 

for(int i=0; i < dtTable.Rows.Count; i++)

{

DataRow drRow = dtTable.Rows[i];

 

iRowCommandType =

          Convert.ToInt32(dtTable.Rows[i][IXyncDefine.COMMAND_TYPE_STRING]);

if(iRowCommandType == IXyncDefine.TB_JOB_INSERT)

{

//insert 작업을 합니다.

}

else if(iRowCommandType == IXyncDefine.TB_JOB_UPDATE)

{

//update 작업을 합니다.

}

else if(iRowCommandType == IXyncDefine.TB_JOB_DELETE)

{

//delete 작업을 합니다.

}

}

 

 

·      end

IXyncDataSet 객체를 해제한다.

이떄 내부적으로는 DataSet에 남은 로우데이터들을 클라이언트로 한꺼번에 전송한다.

void end();

사용예제)

 

// DataSet을  생성한다.

IXyncDataSet GDS = IXyncService.newDataSet("output1");

// ……………….

// IXyncDataSet객체를 해제한다.

GDS.end();

 

 

 

 

IXyncMessageSet

METHODS

·      addMessage

클라이언트로 송신 및 로그에 기록할 Message를 추가한다.

void addMessage(string stType, string stCode, string stMessage);

 

Parameter 명

설명

string stType

클라이언트에서 구분할 메시지타입을 입력한다. (예: "System", "User", "Etc", …)

string stCode

메시지코드값을 입력한다.

string stMessage

메시지를 입력한다.

사용예제)

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

IIXyncService IXyncService = Loader.newService("domain_name");

IXyncMessageSet GMS = IXyncService.getMessageSet();

// …………………………………………

GMS.addMessage("user", "70001", "성공");

GMS.printMessage(true);

 

·      setResult

Message를 전송하기전에 성공메시지인지 실패메시지인지를 지정한다.

void setResult(bool boSuccess);

 

Parameter 명

설명

bool boSuccess

성공/실패 여부를 입력한다.

사용예제)

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

IIXyncService IXyncService = Loader.newService("domain_name");

IXyncMessageSet GMS = IXyncService.getMessageSet();

//…………………………………………

GMS.addMessage("user", "70001", "성공");

GMS.setResult(true);

GMS.printMessage();

 

·      getResult

Transaction 작업에서 작업이 성공인지 실패인지 결과를 얻어온다.

 

bool getResult();

 

반환값

설명

bool

작업의 성공/실패 여부를 얻어온다.

사용예제)

 

printMessage 예제를 참조 하시오.

 

 

·      printMessage

메시지(서비스 수행결과)를 클라이언트로 송신한다. (1개 오버로딩)

이 메소드 호출은 Aspx서비스 내에서 단 한번만 이루어져야 한다. 두번째 메소드는 setResult() 와 printMessage() 를 통합한 형태의 메소드 이다.

void printMessage();

void printMessage(bool boSuccess);

 

반환값

설명

bool boSuccess

작업의 성공/실패 여부를 입력한다.

사용예제)

ServiceLoader Loader = new ServiceLoader(Server, Request, Response);

 

IIXyncService IXyncService = Loader.newService(Arg_domain_name);

IXyncMessageSet GMS = IXyncService.getMessageSet();

//…………………………………………

GMS.addMessage("user", "70001", "성공");

GMS.printMessage(true);  // 이것은 코맨트부분의 두행의 수행결과와 같다

 

string stPacketData = "";

if (false == GMS.getResult ())

    stPacketData += "Result,0,SUCC\r\n";

else

    stPacketData += "Result,-1,FAIL\r\n";

 

 

 

IXyncDebugLoger

METHODS

·      writeLog

Config에서 DebugLog의 log_debug_file_name로 설정한 파일에 사용자 로그를 남기기 위해 사용한다. 보통 개발시에 서비스 디버깅을 위해 사용한다. (+1개 오버로딩)

void writeLog(string stLogContent);

void writeLog(byte[] btaData);

 

Parameter 명

설명

string stLogContent

로그로 기록할 스트링형태의 메시지를 입력한다.

byte[] btaData

로그로 기록할 바이너리형태의 메시지를 입력한다.

사용예제)

 

IIXyncService IXyncService = Loader.newService("crm_service");

IIXyncLoger GDebugLoger = IXyncService.getDebugLoger();

GDebugLoger.writeLog("테스트 메시지 입니다.");

 

// Binary Data를 직접 넘길려면 byte array를 선언해서 값을 넘겨야 한다.

byte[] baData = new byte[1];

while(dr.Read())

{

    baData = (byte[]) dr["data_url"];

}

Response.BinaryWrite(baData);

GDebugLoger.writeLog(baData);

 

 

 

IXyncParameterProperty

Parameter의 Property를 정의한 구조체입니다.

PROPERTIES

·      ParameterName [ get, set ]

IXYNC Parameter 이름을 가져오거나 설정합니다.

 

·      Size [ get, set ]

열 내부에 있는 데이터의 최대 크기를 바이트단위로 가져오거나 설정합니다.

 

·      Direction [ get, set ]

매개변수가 입력전용, 출력전용, 양방향 또는 저장프로시저의 반환값 매개변수 인지 여부를 나타내는 값을 가져오거나 설정합니다.

 

·      Value [ get, set ]

매개변수값을 가져오거나 설정합니다.

 

·      DbType [ get, set ]

매개변수 개체의 데이터 형식을 가져오거나 설정합니다.

 

·      Precision [ get, set ]

Value 속성을 나타내는데 사용된 숫자의 최대 자릿수를 가져오거나 설정합니다.

 

·      Scale [ get, set ]

Value 을 확인하는 소수 자릿수의 수를 가져오거나 설정합니다.

 

 

IXyncParameter

IXyncParameter는 키/값을 갖는 ArrayList 로 DB 파라미터를 관리하는 객체입니다.

오버로드된 add 메소드를 사용해서 키, 값뿐 아니라 DB Type, Size, Precision, Scale, Direction 등을 명시적으로 지정하여 좀 더 세밀하게 DB 파라미터를 관리할 수 있습니다.

PROPERTIES

·      ParameterCollection [ get, set ]

IXYNC Parameter 개체들을 담고있는 ArrayList를 반환합니다.

 

METHODS

·      add (+7개 오버로드)

IXYNC Parameter 객체에 DB 파라미터 하나를 추가합니다.

void add(string strName, object oValue)

void add(string strName, object oValue, ParameterDirection enmDirection)

void add(string strName, object oValue, IXyncVariable.DbType enmDbType)

void add(string strName, object oValue, IXyncVariable.DbType enmDbType,

         int nSize)

void add(string strName, object oValue, IXyncVariable.DbType enmDbType,

         ParameterDirection enmDirection)

void add(string strName, object oValue, IXyncVariable.DbType enmDbType,

         int nSize, ParameterDirection enmDirection)

void add(string strName, object oValue, IXyncVariable.DbType enmDbType,

         int nSize, byte btPrecision, byte btScale)

void add(string strName, object oValue, IXyncVariable.DbType enmDbType,

        int nSize, byte btPrecision, byte btScale,

        ParameterDirection enmDirection)

 

Parameter 명

설명

string strName

DB 파라미터의 이름을 지정합니다.

object oValue

DB 파라미터의 값을 지정합니다.

IXyncVariable.DbType enmDbType

DB 파라미터의 DB Type 값을 지정합니다. (IXyncVariable 값 사용)

         [IXyncVariable의 DbType 열거형 값]

         String: 가변길이 문자열입니다.

         Char: 고정길이 문자열입니다.

         Text: 긴 문자열입니다. 6143 바이트까지 지원됩니다.

         Int: 32비트 부호있는 정수형입니다.

         BigInt: 64비트 부호 있는 정수형식입니다.

         Double: 부동 소숫점 수자입니다.

         Decimal: 고정전체 자릿수 및 소수 자릿수 값입니다.

         DateTime: 날짜 및 시간데이터입니다.

         Binary: 이진데이터의 고정길이 스트림값입니다.

            BLOB 타입에 사용합니다.

         Cursor: 커서타입을 지정할 경우 사용합니다. Oracle

            클라이언트 공급자에서만 지원되는 타입입니다.

int nSize

DB 파라미터의 크기를 지정합니다.

byte btPrecision

DB 파라미터의 전체 자리수를 지정합니다.

byte btScale

DB 파라미터의 소수 자리수를 지정합니다.

ParameterDirection enmDirection

DB 파라미터의 매개 변수 방향 속성을 지정합니다. (ParameterDirection 열거형 사용)

    [ParameterDirection 열거형 값]

         Input : 입력 매개 변수입니다.

         InputOutput: 입력과 출력 모두 사용할 수 있습니다.

         Output : 출력 매개 변수 입니다.

         ReturnValue: 저장 프로시저, 기본 제공 함수, 사용자

                 정의 함수 등과 같은 연산으로부터 반환값을

                 나타냅니다

 

 

사용예제)

 

IXyncBasePage oGBasePage = new IXyncBasePage(this.Page);

 

// IXyncParameter 객체 생성

IXyncParameter oGparam = new IXyncParameter();

// oGparam 객체에 Dbtype = Int(int32) 값을 갖는 DB 파라미터 추가.

oGparam.add("empid", oGBasePage.getStringParam("empid"), IXyncVariable.DbType.Int);

// oGparam 객체에 size = 20(byte), Dbtype = String 값을 갖는 DB 파라미터 추가.

oGparam.add("empname", oGBasePage.getStringParam("empname"),

IXyncVariable.DbType.String, 20);

// oGparam 객체에 size = 8(byte), precision = 15, scale = 3 , Dbtype = BigInt(int64)

// 값을 갖는 DB 파라미터 추가.

oGparam.add("totaccount", oGBasePage.getStringParam("totaccount "),

            IXyncVariable.DbType. BigInt, 8, 15, 3);

//…

 

 

 

ActivexRollupFilter

ActiveX 관련 IE 부분패치에 대응하기 위한 RollupFilter 모듈입니다.

CONSTRUCT

·      ActivexRollupFilter (+1개 오버로드)

 

public ActivexRollupFilter(HttpApplication global,

      string strProjectMapPath);

public ActivexRollupFilter(HttpApplication global,

     string strProjectMapPath, IXyncVariable.PacketEncodingType enumType)

 

Parameter 명

설명

HttpApplication global

HttpApplication 클래스의 개체를 사용합니다.

ASP.NET 응용 프로그램의 모든 응용 프로그램 개체에 공통된 메서드, 속성 및 이벤트를 정의합니다. 이 클래스는 사용자가 global.asax 파일에 정의한 응용 프로그램의 기본 클래스입니다.

string strProjectMapPath

ActivexRollupFilter를 적용할 웹프로젝트(웹사이트)의 전체 경로를 지정합니다.

IXyncVariable. PacketEncodingType enumType

클라이언트 DataSet 콤포넌트와 상호 교환되는 컬럼데이터의 인코드타입을 지정합니다.

[IXyncVariable의 PacketEncodingType 열거형 값]

IXyncVariable.PacketEncodingType.NOMAL// 일반 ANSI 형식

IXyncVariable.PacketEncodingType.UTF8 // UTF8 형식

IXyncVariable.PacketEncodingType.UNICODE// UTF-16 형식

// UTF-16 BigEndian 형식

IXyncVariable.PacketEncodingType.UNICODEBIG        

 

PROPERTIES

·      FilterKeyName [ get, set ]

ActivexRollFilter 기능을 제어할 키이름을 담고있는 속성값입니다.

키이름을 설정하지 않을 경우 default 값은 "ActivexRollupFilter" 입니다.

사용예제)

//Global.asax 파일에서 Application_BeginRequest 부분에 다음코드를

//추가한다.

 

protected void Application_BeginRequest(Object sender, EventArgs e) {

    // IXyncLib를 사용하는 ASPX서비스에 대하여

// IE 6.0 부분패치에 대한 필터링을 수행하도록 객체를 등록한다.

// Response.Filter = new IXyncLib.ActivexRollupFilter(this,

// Request.ApplicationPath);

 

    IXyncLib.ActivexRollupFilter oGFilter =

new IXyncLib.ActivexRollupFilter(this,

Request.ApplicationPath);

oGFilter.FilterKeyName = "MyFilter";

Response.Filter = oGFilter;

}

 

//web.config 파일에서 <appSettings> 영역에 위에서 설정한 FileKeyName 값을 설정한다.

<appSettings>

         <!-- IE patch에 대응하기 위한 키값 설정

              Key : FileKeyName ( default : "ActivexRollupFilter")

              Value : "TRUE"  – ActiveRollupFileter 활성화

                      "FALSE" – ActiveRollupFileter 비활성화

-->

<!-- 키값을 지정하지않은경우 -->

<add key="ActivexRollupFilter" value="FALSE"/>

<!-- 키값을 지정한 경우 -->

<add key="MyFilter" value="TRUE"/>

</appSettings>

 

 

 

 

 

 

IIXyncServiceCall

 

IX-SERVER 서비스 간의 통신을 할 수 있도록 API를 제공하는 인터페이스입니다.

[전제조건]

1. 조회서비스만 지원됩니다.

2. 호출되는 서비의 전송패킷이 IX-SERVER New Packet (BINARY, CSV30) 일 때만 정상적으로 데이터를 수신할 수 있습니다.

METHODS

·      getData (+1개 오버로드)

기 작성된 IX-SERVER 서비스에 Get방식으로 요청을 보내어 결과셋으로 IXyncDataSet을 생성하는 메소드입니다.

[주의 사항]

 이 메소드를 사용하여 얻어진 데이터셋을 재 가공하여 클라이언트로 보내는 경우는 반드시 호출하는 쪽의 서비스에서는 AllRow 방식을 사용해야 합니다.

bool getData(string Uri, string OutputDataSetName);

 bool getData(CommunicationInfo oComInfo);

 

Parameter 명

설명

string Uri

호출되는 IX-SERVER 서비스의 인터넷상의 위치값인 Uri입니다.

‘http://127.0.0.1/Test/Test.aspx?RequestData=IXYNC_NET_DATA‘와 같이 http 전체 경로와 필요한 파라미터로 구성된 Uri를 지정합니다.

string OutputDataSetName

호출되는 IX-SERVER 서비스가 결과셋으로 생성할 IXyncDataSet의 이름입니다.

CommunicationInfo oComInfo

IX-SERVER 서비스를 호출하기 위해 필요한 정보를 담고 있는 객체로 다음과 같은 구조를 가지고 있습니다.

[CommunicationInfo 객체의 구조]

CommunicationInfo.ServiceUri

: 호출되는 IX-SERVER 서비스의 인터넷상의 위치값

CommunicationInfo.Params

: 호출 IX-SERVER 서비스에 필요한 파라미터 값들을 정의하며 IXyncParameter 자료구조를 사용합니다.

CommunicationInfo.Socd

: 호출 IX-SERVER 서비스가 생성하거나 참조할 IXyncDataSet들 간의 매핑 관계(SOCD)를 정의하는 객체입니다. Socd는 GSocdInfo객체의 컬렉션으로 구성되어 있다.

[GSocdInfo 객체 구조]

GSocdInfo.DataSetType: DataSet의 Input / Ouput 타입

GSocdInfo.ServerDataSetName

: 호출되는 IX-SERVER 서비스쪽에서 사용되는 데이터셋 이름                                    GSocdInfo.ClientDataSetName

: 호출하는 IX-SERVER 서비스쪽에서 사용하는 데이터셋 이름                               과 같은 구조를 가지고 있습니다.

 

사용예제1)

// IX-SERVER페이지를 생성합니다.

IXyncBasePage oGBasePage = new IXyncBasePage(this.Page);

 

try

{               

// IX-SERVER페이지를 초기화 합니다.

oGBasePage.initIXyncPage("default");

 

// 다음 코드는 반드시 initIXyncPage후에 와야 합니다.

if(oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA"){

   //getData 메소드 호출시 직접 호출할 서비스의 Uri를 기술하는 예입니다.

if(oGBasePage.IXyncServiceCall.getData(

"http://localhost/IXyncNetSample50_VS2003/Grid/GridSelect.aspx?"

+ "RequestData= IXYNC_NET_DATA", "output1")) {

           IXyncDataSet oGDS

                 = oGBasePage.IXyncService.getDataSet("output1");

          if(oGDS != null)

               oGDS.end();

        }

        else   

// Error 처리는 안해도 IXyncBasePage 릴리즈시에 자동으로 처리된다.

        {

          oGBasePage.addMessage2(IXyncVariable.MessageType.Application,

"90001", "서비스 호출에 실패");

          oGBasePage.setResult(false);

        }

   }// end of if(oGBasePage.getStringParam(("RequestData") …

}// end of try

catch(Exception exp)

{

  oGBasePage.addMessage2(IXyncVariable.MessageType.System,

"90000", exp.Message);

    oGBasePage.setResult(false);

}

finally

{

    oGBasePage.Release(); 

  }

 

사용예제2)

// IX-SERVER페이지를 생성합니다.

IXyncBasePage oGBasePage = new IXyncBasePage(this.Page);

try{

// IX-SERVER페이지를 초기화 합니다.

oGBasePage.initIXyncPage("default");

 

// 다음 코드는 반드시 initIXyncPage후에 와야 합니다.

if(oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA"){

    // getData 메소드 호출시 직접 호출할 서비스의 Uri를 기술하지 않고

    // CommunicationInfo 객체를 이용하여 호출하는 예입니다.

        CommunicationInfo oComInfo = new CommunicationInfo();

        oComInfo.ServiceUri =  

        "http://localhost/IXyncNetSample50_VS2003/Grid/GridSelect.aspx";

// SOCD를 생성하지 않으면 디폴트 SOCD인 'O:output=output' 이 생성된다.

// oComInfo.Socd.Add(new GSocdInfo(IXyncVariable.DataSetType.OUTPUT,

//"output1", "output2"));

        oComInfo.Params.Add("RequestData", "IXYNC_NET_DATA");

        if(oGBasePage.IXyncServiceCall.getData(oComInfo))      {

            IXyncDataSet oGDS

               = oGBasePage.IXyncService.getDataSet("output");

           if(oGDS != null) oGDS.end();

        }

        else

        {// Error 처리는 안해도 IXyncBasePage 릴리즈시에 자동으로 처리된다.

           oGBasePage.addMessage2(IXyncVariable.MessageType.Application,

"90001", "서비스 호출에 실패");

           oGBasePage.setResult(false);

         }

}

}

catch(Exception exp)

{

oGBasePage.addMessage2(IXyncVariable.MessageType.System,

"90000", exp.Message);

        oGBasePage.setResult(false);

}

finally

{

         oGBasePage.Release();

}

 

·      getOutputDataSet (+1개 오버로드)

기 작성된 IX-SERVER 서비스에 Get방식으로 요청을 보내어 결과셋으로 IXyncDataSet을 바로 리턴받는 메소드입니다. 이 메소드는 IXyncServiceCall.getData 메소드와 IXyncService.getDataSet 메소드를 한꺼번에 처리하는 메소드로 생각할 수 있습니다.

IXyncDataSet getOutPutDataSet(string Uri, string OutputDataSetName);

IXyncDataSet getOutPutDataSet(CommunicationInfo oComInfo);

 

Parameter 명

설명

string Uri

호출되는 IX-SERVER 서비스의 인터넷상의 위치값인 Uri입니다.

‘http://127.0.0.1/Test/Test.aspx?RequestData=IXYNC_NET_DATA‘와 같이 http 전체 경로와 필요한 파라미터로 구성된 Uri를 지정합니다.

string OutputDataSetName

호출되는 IX-SERVER 서비스가 결과셋으로 생성할 IXyncDataSet의 이름입니다.

CommunicationInfo oComInfo

IX-SERVER 서비스를 호출하기 위해 필요한 정보를 담고 있는 객체로 다음과 같은 구조를 가지고 있습니다.

[CommunicationInfo 객체의 구조]

CommunicationInfo.ServiceUri

: 호출되는 IX-SERVER 서비스의 인터넷상의 위치값

CommunicationInfo.Params

: 호출 IX-SERVER 서비스에 필요한 파라미터 값들을 정의하며SortedList 자료구조를 사용합니다.

CommunicationInfo.Socd

: 호출 IX-SERVER 서비스가 생성하거나 참조할 IXyncDataSet들 간의 매핑 관계(SOCD)를 정의하는 객체입니다. Socd는 GSocdInfo객체의 컬렉션으로 구성되어 있다.

[GSocdInfo 객체 구조]

GSocdInfo.DataSetType

: DataSet의 Input / Ouput 타입

GSocdInfo.ServerDataSetName

: 호출되는 IX-SERVER 서비스쪽에서 사용되는 데이터셋 이름                                    GSocdInfo.ClientDataSetName

: 호출하는 IX-SERVER 서비스쪽에서 사용하는 데이터셋 이름                               과 같은 구조를 가지고 있습니다.

 

사용예제1)

// IX-SERVER페이지를 생성합니다.

IXyncBasePage oGBasePage = new IXyncBasePage(this.Page);

try {               

// IX-SERVER페이지를 초기화 합니다.

oGBasePage.initIXyncPage("default");

 

// 다음 코드는 반드시 initIXyncPage후에 와야 합니다.

if(oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA"){

       CommunicationInfo oComInfo = new CommunicationInfo();

       oComInfo.ServiceUri =

        "http://localhost/IXyncNetSample50_VS2003/Grid/GridSelect.aspx";

    // SOCD를 생성하지 않으면 디폴트 SOCD인 'O:output=output' 이

// 생성된다.

    //oComInfo.Socd.Add(new GSocdInfo(IXyncVariable.DataSetType.OUTPUT,

// "output1", "output2"));

       oComInfo.Params.Add("RequestData", "IXYNC_NET_DATA");

 

       IXyncDataSet oGDS =

          oGBasePage.IXyncServiceCall.getOutputDataSet(oComInfo);

      

       if(oGDS != null) oGDS.end();

}

}

catch(Exception exp)

{

oGBasePage.addMessage2(IXyncVariable.MessageType.System, "90000",

                  exp.Message);

oGBasePage.setResult(false);

}

finally

{

oGBasePage.Release();

}

 

 

IIXyncQueryStorage

 

서비스 내부에서 사용할 쿼리문을 XML file로 관리하기 위한 메소드를 제공하는 인터페이스입니다.

METHODS

·      setFilePath

IXYNC for .NET에서는 쿼리문을 담은 XML 파일의 경로를 Configuration으로 관리합니다. 별도로 XML 파일의 경로를 설정하지 않으면 항상 해당도메인의 Config 파일에서 정의한 QueryStorage / xml_query_file_name 속성값을 참조합니다.

setFilePath는 Config파일에서 정의한 속성값을 무시하고 별도의 경로에서 쿼리문을 가진 Xml File을 사용하고자 할 때 유용한 메소드입니다.

void setFilePath (string strXmlFilePath);

 

Parameter 명

설명

string strXmlFilePath

호출되는 IX-SERVER 서비스의 인터넷상의 위치값인 Uri입니다.

‘http://127.0.0.1/Test/Test.aspx?RequestData=IXYNC_NET_DATA‘와 같이 http 전체 경로와 필요한 파라미터로 구성된 Uri를 지정합니다.

 

사용예제)

XmlQueryInfo oQueryInfo = null;    // 쿼리문을 저장할 변수

 

// IX-SERVER 기본페이지를 생성합니다.

IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response);

 

try{

    // IX-SERVER페이지를 초기화 합니다.

    oGBasePage.initIXyncPage("default");

    // Xml 파일로부터 쿼리문을 읽어오기위한 작업을 수행합니다.

    // initIXyncPage 이후에 호출해야 합니다.

    string strXmlFilePath =

        Server.MapPath("/IXyncNetSample50_VS2003") +

                                    "/QueryManage/QueryData.xml";

    // Config 파일에서 적용한 경로를 임의로 수정할때 사용합니다.

    oGBasePage.IXyncQueryStorage.setFilePath(strXmlFilePath);

 

// Web Server Alias를 통하여 Mdb file의 위치를 얻기위한 객체를 생성한다.

    string strConnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SHIFT\IXYNC .NET 3.0\IXyncNetSample\include\IXyncSample.mdb";

 

    IXyncConnection oConn =

             oGBasePage.IXyncDbHelper.addConnection("conn1",                      

                                     IXyncVariable.DbProviderType.OLEDB,

                                     strConnString, 0);

   

    if (oGBasePage.getStringParam("RequestData")==

                                                             "IXYNC_NET_DATA_GET") {

      oQueryInfo = oGBasePage.IXyncQueryStorage.getQueryInfo(

"IXyncNetSample50_VS2003.QueryManage.TransactionQuery.Select");

      if(oQueryInfo.IsSuccess)

      {

        oGBasePage.commonSelect(oConn, oQueryInfo.QueryString, null);

      }

      else

      {

        oGBasePage.addMessage2(IXyncVariable.MessageType.System,

                             "90000", oQueryInfo.ErrorMsg);

        oGBasePage.setResult(false);

      }

    }

}

catch (Exception except){

    oGBasePage.addMessage2(IXyncVariable.MessageType.Application,

           "90001", except.Message);

    oGBasePage.setResult(false);

}

finally{

        oGBasePage.Release();

}

 

·      getQueryInfo

IXYNC for .NET에서 미리 정한 구조를 가진 XML 파일로부터 지정된 쿼리문을 읽어 옵니다.   

XmlQueryInfo getQueryInfo (string strEntityName);

 

Parameter 명

설명

string strEntityName

XML 파일에서 찾을 쿼리문을 담고있는 앤티티명입니다.

 

XmlQueryInfo (반환값)

쿼리문을 얻는데 성공/실패 여부 정보 얻어온다.

특히 실패인 경우에는 실패의 원인을 알 수 있는 에러메세지 정보를 함께 담아서 리턴한다.

이때 리턴되는 XmlQueryInfo 클래스의 구조는 다음과 같다.

XmlQueryInfo.IsSuccess  :쿼리를 얻는데 성공했으면 true

XmlQueryInfo.QueryString:얻어온 쿼리문

XmlQueryInfo.ErrorMsg

:XmlQueryInfo.IsSuccess == false 인 경우에 에러메세지

여기에서 사용되는 XML 파일의 구조는 다음과 같아야 합니다.

<?xml version="1.0" encoding="utf-8"?>

<Query>

        <앤티티명_1>

        <![CDATA[

            쿼리문1…

        ]]>

    </앤티티명_1>

        ……………….

<앤티티명_n>

        <![CDATA[

            쿼리문2…

        ]]>

    </앤티티명_n>

</Query>

 

 

사용예제1) Query1.xml

<?xml version="1.0" encoding="utf-8"?>

<Query>

   <IXyncNetSample50_VS2003.QueryManage.TransactionQuery.Select>

    <![CDATA[

        select * from Grid2

    ]]>

</IXyncNetSample50_VS2003.QueryManage.TransactionQuery.Select>

    <IXyncNetSample50_VS2003.QueryManage.TransactionQuery.Insert>

    <![CDATA[

        insert into Grid2(sabun ,name , amt1 , amt2, chk, gubun )

        values (@sabun ,@name , @amt1 , @amt2, @chk, @gubun)

    ]]>

</IXyncNetSample50_VS2003.QueryManage.TransactionQuery.Insert>

    <IXyncNetSample50_VS2003.QueryManage.TransactionQuery.Update>

    <![CDATA[

        update Grid2

        set name=@name, amt1=@amt1, amt2=@amt2, chk=@chk, gubun=@gubun

        where sabun=@sabun

    ]]>

</IXyncNetSample50_VS2003.QueryManage.TransactionQuery.Update>

    <IXyncNetSample50_VS2003.QueryManage.TransactionQuery.Delete>

    <![CDATA[

        delete from Grid2

        where sabun=@sabun

    ]]>

</IXyncNetSample50_VS2003.QueryManage.TransactionQuery.Delete>

</Query>

 

사용예제2) cs

// IX-SERVER 기본페이지를 생성합니다.

IXyncBasePage oGBasePage

     = new IXyncBasePage(Server, Request, Response);

try{

    // IX-SERVER페이지를 초기화 합니다.

    oGBasePage.initIXyncPage("default");

 

// Xml 파일로부터 쿼리문을 읽어오기위한 작업을 수행합니다.

// initIXyncPage 이후에 호출해야 합니다.

// Web Server Alias를 통하여 Mdb file의 위치를 얻기위한 객체를

// 생성한다.

    string strConnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SHIFT\IXYNC .NET 3.0\IXyncNetSample\include\IXyncSample.mdb";

 

    IXyncConnection oConn =

             oGBasePage.IXyncDbHelper.addConnection("conn1",                      

                                     IXyncVariable.DbProviderType.OLEDB,

                                     strConnString, 0);

    if (oGBasePage.getStringParam("RequestData") ==

                                                 "IXYNC_NET_DATA_GET")

    {

      XmlQueryInfo oQueryInfo = 

        oGBasePage.IXyncQueryStorage.getQueryInfo(

        "IXyncNetSample50_VS2003.QueryManage.TransactionQuery.Select");

      if(oQueryInfo.IsSuccess)    {

        oGBasePage.commonSelect(oConn, oQueryInfo.QueryString, null);

      }

      else { // 에러처리

        oGBasePage.addMessage2(IXyncVariable.MessageType.System,

              "90000", oQueryInfo.ErrorMsg);

        oGBasePage.setResult(false);

      }

    }

}

catch (Exception except){

    oGBasePage.addMessage2(IXyncVariable.MessageType.Application,

"90001", except.Message);

oGBasePage.setResult(false);

}

finally{

        oGBasePage.Release();

}

 

·      getQueryInfoByXPath

미리 정해지지 않은 임의의 구조를 가진 XML 파일로부터 XPath 를 통하여 쿼리문을 얻어 옵니다.   

XmlQueryInfo getQueryStringByXPath (string strStatementPath);

 

Parameter 명

설명

string strStatementPath

XML 파일에서 찾을 쿼리문을 담고있는 XPath 경로입니다.

XmlQueryInfo (반환값)

쿼리문을 얻는데 성공/실패 여부 정보 얻어온다.

특히 실패인 경우에는 실패의 원인을 알 수 있는 에러메세지 정보를 함께 담아서 리턴한다.

이때 리턴되는 XmlQueryInfo 클래스의 구조는 다음과 같다.

XmlQueryInfo.IsSuccess  :쿼리를 얻는데 성공했으면 true

XmlQueryInfo.QueryString:얻어온 쿼리문

XmlQueryInfo.ErrorMsg

:XmlQueryInfo.IsSuccess == false 인 경우에 에러메세지

 

사용예제1) Query2.xml

<?xml version="1.0" encoding="utf-8"?>

<Query>

<Select>

<Statement id="IXyncNetSample50_VS2003.QueryManage.SelectQuery.01">

    <![CDATA[

        select deptnm, year, amt1, amt2 from Grid1

    ]]>

</Statement>

</Select>

<Transaction>

   <Statement id="IXyncNetSample50_VS2003.QueryManage.TransactionQuery.01">

    <![CDATA[

        INSERT INTO BigintTest(Name, SI_Amt, I_Amt, BI_Amt)

        VALUES (@Name, @SI_Amt , @I_Amt, @BI_Amt )

    ]]>

</Statement>

</Transaction>

</Query>

 

사용예제2) cs

XmlQueryInfo oQueryInfo = null;      // 쿼리문을 저장할 변수

IXyncBasePage oGBasePage = new IXyncBasePage(this.Page);

 

try{                

// IX-SERVER페이지를 초기화 합니다.

oGBasePage.initIXyncPage("default", IXyncVariable.PacketEncodingType.NORMAL,

               IXyncVariable.ResponsePacketType.BINARY, true, -1);

// 다음 코드는 반드시 initIXyncPage후에 와야 합니다.

if(oGBasePage.getStringParam("RequestData") == "IXYNC_NET_DATA")

{

    // DB Connection을 추가합니다.

    string strConnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SHIFT\IXYNC .NET 3.0\IXyncNetSample\include\IXyncSample.mdb";

    IXyncConnection oConn =

             oGBasePage.IXyncDbHelper.addConnection("conn1",                      

                                     IXyncVariable.DbProviderType.OLEDB,

                                     strConnString, 0);

   

    oQueryInfo = oGBasePage.IXyncQueryStorage.getQueryInfoByXPath(

               "//Statement[@id='IXyncNetSample50_VS2003."

             + "QueryManage.SelectQuery.01']");

    if(oQueryInfo.IsSuccess)    {

      // 쿼리를 실행하여 결과를 클라이언트로 전송합니다.

      oGBasePage.commonSelect(oConn, oQueryInfo.QueryString);

    }

    else{

      oGBasePage.addMessage2(IXyncVariable.MessageType.Application,

                             "90000", oQueryInfo.ErrorMsg);

      oGBasePage.setResult(false);

    }

}

}

catch (Exception except){

// 예외 메세지를 저장하고, 결과 플래그를 false로 설정합니다. 

oGBasePage.addMessage("user", "90001", except.Message);

oGBasePage.setResult(false);

}

finally{

// IXyncBasePage객체를 해제합니다.

oGBasePage.Release();

}

 

부록

 

IXyncDefine

IX-SERVER에서 사용되는 상수를 정의한 객체입니다.

주요 내용을 살펴보면 아래와 같습니다.

 

칼럼의 Data Type

 

TB_STRING

Column의 string 유형을 나타낸다.

TB_INT

Column의 int32 유형을 나타낸다.

TB_BIGINT

Column의 int64 유형을 나타낸다

TB_DECIMAL

Column의 decimal 유형을 나타낸다.

TB_BLOB

Column의 blob 유형을 나타낸다.

TB_URL

Column의 url 유형을 나타낸다.

TB_DATETIME

Column 의 DateTime 유형을 나타낸다.

TB_SEC_STRING

Column의 암호화된 string 유형을 나타낸다.

TB_SEC_INT

Column의 암호화된 int 유형을 나타낸다.

TB_SEC_DECIMAL

Column의 암호화된 decimal 유형을 나타낸다.

TB_SEC_BLOB

Column의 암호화된 blob 유형을 나타낸다.

TB_SEC_URL

Column의 암호화된 url 유형을 나타낸다.

 

칼럼의 Key Permision

 

TB_NORMAL

Normal Column

TB_NOTNULL

Not Null Column

TB_KEY

Key Column

TB_SEQUENCE

Sequence Column

TB_CONSTANT

Constant Column

 

Row Command Type

 

TB_JOB_NORMAL

SELECT

TB_JOB_INSERT

INSERT

TB_JOB_UPDATE

UPDATE

TB_JOB_DELETE

DELETE

 

송수신 Format

 

CSV30_FORMAT

CSV 형의 포맷

BIN_FORMAT

Binary 형의 포맷

CSV_FORMAT

CSV 형의 포맷 (Data Export 시)

 

 

 

Message의 언어

 

GN_MESSAGE_LANGUAGE_KOR

한국어를 뜻함

GN_MESSAGE_LANGUAGE_ENG

영어를 뜻함

 

Response Target Type

 

GN_TARGET_COMMON

일반적인 경우 (Component)

GN_TARGET_PLD

Presentation Layout Designer인 경우

GN_TARGET_DWB

Dynamic Web Builder인 경우

 

Decimal 소스점 처리방식

 

DECIMAL_CEIL

올림

DECIMAL_ROUND

반올림

DECIMAL_FLOOR

버림

 

DB Provider Type

 

PROVIDERTYPE_MSSQL

DB Cleint 공급자가 MSSQL인 경우

PROVIDERTYPE_OLEDB

DB Client공급자가 OLEDB인 경우

PROVIDERTYPE_ORACLE

DB Client공급자가 ORACLE인 경우

PROVIDERTYPE_ODBC

DB Client공급자가 ODBC인 경우

PROVIDERTYPE_ODP

DB Client공급자가 ODP .NET인 경우

 

Response String Column Data Code Type

 

RESPONSE_CODE_ANSI

Default Code 사용

RESPONSE_CODE_UTF8

UTF8 Code 사용

RESPONSE_CODE_UNICODE

UTF16 Little Endian Code 사용

RESPONSE_CODE_UNICODEBIG

UTF16 Big Endian Code 사용

 


 

 

IXyncVariable

                    IX-SERVER에서 사용되는 상수를 정의한 객체입니다.

주요 내용을 살펴보면 아래와 같습니다.

 

시스템 이벤트로그 앤트리의 이벤트 형식

 

EventLogEntryType.Error

오류 이벤트

EventLogEntryType.FailureAudit

오류 감시 이벤트

EventLogEntryType.Information

정보 이벤트

EventLogEntryType.SuccessAudit

성공적인 감시 이벤트

EventLogEntryType.Warning

경고 이벤트

 

칼럼의 Data Type

 

ColumnDataType.STRING

Column의 string 유형을 나타낸다.

ColumnDataType.INT

Column의 int32 유형을 나타낸다.

ColumnDataType.BIGINT

Column의 int64 유형을 나타낸다.

ColumnDataType.DECIMAL

Column의 decimal 유형을 나타낸다.

ColumnDataType.BLOB

Column의 blob 유형을 나타낸다.

ColumnDataType.URL

Column의 url 유형을 나타낸다.

ColumnDataType.DATETIME

Column의 DateTime 유형을 나타낸다.

 

칼럼의 Key Permision

 

ColumnKeyType.NORMAL

Normal Column

ColumnKeyType.NOTNULL

Not Null Column

ColumnKeyType.KEY

Key Column

ColumnKeyType.SEQUENCE

Sequence Column

ColumnKeyType.CONSTANT

Constant Column

 

Row Command Type

 

RowCommandType.NORMAL

SELECT

RowCommandType.INSERT

INSERT

RowCommandType.UPDATE

UPDATE

RowCommandType.DELETE

DELETE

 

송수신 Format

 

ResponsePacketType.CSV30

CSV 형의 포맷

ResponsePacketType.BIN

Binary 형의 포맷

ResponsePacketType.CSV

CSV 형의 포맷 (Data Export 시)

ResponsePacketType.XML

XML 형의 포맷

ResponsePacketType.JSON

JSON 형의 포맷

 

 

 

Message의 언어

 

MessageLanguage.KOR

한국어를 뜻함

MessageLanguage.ENG

영어를 뜻함

      

Decimal 소스점 처리방식

 

DecimalPointType.CEIL

올림

DecimalPointType.ROUND

반올림

DecimalPointType.FLOOR

버림

 

DB Provider Type

 

DbProviderType.MSSQL

DB Cleint 공급자가 MSSQL인 경우

DbProviderType.OLEDB

DB Client공급자가 OLEDB인 경우

DbProviderType.ORACLE

DB Client공급자가 ORACLE인 경우

DbProviderType.ODBC

DB Client공급자가 ODBC인 경우

DbProviderType.ODP

DB Client공급자가 ODP .NET인 경우

 

Response String Column Data Code Type

 

PacketEncodingType.NOMAL

Default Code 사용

PacketEncodingType.UTF8

UTF8 Code 사용

PacketEncodingType.UNICODE

UTF16 Little Endian Code 사용

PacketEncodingType.UNICODEBIG

UTF16 Big Endian Code 사용

        

DB쿼리 파라미터에 사용되는 DbType.

 

DbType.String

가변길이 문자열

DbType.Char

고정길이 문자열.

DbType.Text

긴 문자열(6143 바이트까지 지원)

DbType.int

32비트 부호있는 정수형

DbType.Bigint

64비트 부호있는 정수형

DbType.Double

부동 소수점

DbType.Decimal

고정전체 자릿수 및 소수 자릿수

DbType.DateTime

날짜 및 시간데이터

DbType.Binary

이진데이터의 고정길이 스트림값

(BLOB 타입 사용시)

DbType.Cursor

커서타입을 지정할 경우

(Oracle 클라이언트 공급자에서만 지원)