쉬프트-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 |
표번호 |
|
참조한 URL |
|
|
[ ] |
메뉴 명이나 버튼 명 등을 나타냄 |
본 매뉴얼을 통해서 자주 볼 수 있는 용어는 다음과 같다.
|
VS.NET |
VS.NET(Visual Studio .NET)는 .NET
Framework의 기능을 활용
하여ASP.NET 웹 응용
프로그램, XML Web
Services, 데스크톱 응용 프로그램
및 모바일
응용 프로그램을
빌드할 수
있는 마이크로소프트사의
통합 개발
환경입니다. |
|
IXSERVER .NET |
닷넷환경에서 UI프리젠테이션 서비스를 만드는 최적의 솔루션입니다. |
|
|
|
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 객체를 생성한다.
그러나, 실제 사용자에게 열려있는
객체는 인터페이스를
위주로 하며, 다음과 같은 객체들이
있다.
|
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 객체로 구현된다. |
IXync의 서비스를 관장하는 IXyncService객체를 생성해 주는 ServiceLoader 객체를
담고있는 속성값이다.
사용예제)
|
IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response); IIXyncService oGaService
= oGBasePage.IXyncLoader.newService("default"); |
IXync의 서비스를 관장하는 IXyncService 객체를 담고있는 속성값이다.
사용예제)
|
IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response); IXyncMessageSet oGaMessageSet = oGBasePage .IXyncService.getMessageSet(); |
클라이언트 콤포넌트로 메시지를 전송하기 위한 객체 IXyncMessageSet객체를
담고있는 속성값이다.
사용예제)
|
IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response); oGBasePage.IXyncMessage.addMessage ("User", "90001",
except.Message); |
클라이언트 콤포넌트로부터 요청받은 HttpRequest와
데이터들을 담고있는 IXyncRequest 객체를 담고있는 속성값이다.
사용예제)
|
IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response); string strParam
= oGBasePage .IXyncRequest.getParameter("empid"); |
클라이언트 콤포넌트로 전송할 HttpResponse와
데이터들을 담고있는 IXyncResponse 객체를 담고있는 속성값이다.
사용예제)
|
IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response); int nType = oGBasePage.IXyncResponse.getTargetType(); |
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); |
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) |
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); } |
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"); |
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(); } |
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
); |
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){ ……………………… } |
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){ ……………………… } |
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",
"빈값")!= "빈값"){ ……………………… } |
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) { ……………………… } |
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") { ……………………… } |
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") { ……………………… } |
클라이언트로
전송할 메시지 만들고 축적한다. 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); } |
클라이언트로
전송할 메시지 만들고 축적한다. 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); } |
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); } |
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(); } |
메시지(서비스 수행결과)를 클라이언트로 송신한다. 이 메소드 호출은 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(); } |
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(); } } |
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(); } } |
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(); } } |
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(); } } |
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(); } } |
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(); } } |
여러
개의 조회 서비스작업을 하나의 서비스에서 처리할 수 있도록 지원하는 메소드이다. 각 파라미터는 배열형태로
되어 있으며, 조회 서비스의 개수만큼 모든 파라미터들은 같은 배열크기를 선언하여 사용한다.
|
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(); } |
여러
개의 조회 서비스작업을 하나의 서비스에서 처리할 수 있도록 지원하는 메소드이다. 각 파라미터는 배열형태로
되어 있으며, 조회 서비스의 개수만큼 모든 파라미터들은 같은 배열크기를 선언하여 사용한다.
이
메소드는 주로 클라이언트로 전송할 데이터셋의 특정컬럼을 추가 또는 변경하는 작업이 필요한 경우에 사용한다.
|
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(); } |
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(); } |
조회전용
스토어드 프로시져를 수행하는 메소드이다.
|
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(); } |
조회전용 스토어드 프로시져를 수행하는 메소드이다. 미리 정의된 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(); } |
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(); } |
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(); } |
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(); } |
서버의
특정디렉터리에 저장되어 있는 BLOB데이터(File)를 다운로드
받는 메소드 이다.
|
void downloadFile(string
strFileFullPath ) void
downloadFile(string strMappath, string strFilename) |
|
Parameter
명 |
설명 |
|
string strFileFullPath |
파일이 위치해 있는 곳을 가리키는 전체경로이다. |
|
string strMappath |
파일이 위치해 있는 디렉터리 경로를 웹서버의 입장에서 기술한 값이다. 즉,
웹서버의 디렉터리 Aliasing 값이다. |
|
string strFilename |
파일이름을 입력한다. |
사용예제)
|
deleteFile 예제를 참조하시오 |
서버의
특정디렉터리에 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 예제를 참조하시오 |
서버의
특정디렉터리에 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(); } |
서버의
특정디렉터리에 있는 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(); |
서버상에
일반권한을 가진 디렉터리를 생성한다.
|
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"); |
디렉터리를
삭제한다.
|
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); |
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(); } |
AJAX.NET이나 Atlas 등 IXyncService객체를 이용하지 않는 서비스 저작시 지원을 위한 클래스 인터페이스 입니다.
(AJAX.NET 구현방법의 자세한 내용은 "IXyncNet_Developement.doc" 문서를 참고.)
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); |
IX-SERVER에서 발생하는 시스템 상황을 로깅하기 위한 IIXyncLoger 객체를 담고 있는 속성값 이다.
서버의 특정디렉터리에 BLOB데이터(File)를 저장하는 메소드 이다.
|
void
saveFile(string strFileFullPath, byte[] bData) |
|
Parameter
명 |
설명 |
|
string strFileFullPath |
파일이 위치해 있는 곳을 가리키는 전체경로이다. |
|
byte[] bData |
BLOB
Data(File Binary Data) 값이다. |
서버의 특정디렉터리에 BLOB데이터(File)를 삭제하는 메소드 이다.
|
void
deleteFile( string strFileFullPath) |
|
Parameter
명 |
설명 |
|
string strFileFullPath |
파일이
위치해 있는 곳을 가리키는 전체경로이다. |
서버의 특정디렉터리에 있는 BLOB데이터(File)를 Filestream을 통하여 Binary 데이터로 읽어 들인다.
|
Byte
[]
getBinaryDataFromFile ( string
strFileFullPath) |
|
Parameter
명 |
설명 |
|
string strFileFullPath |
파일이
위치해 있는 곳을 가리키는 전체경로이다. |
서버상에 일반권한을 가진 디렉터리를 생성한다.
|
DirectoryInfo createDirectory
( string strDirectoryFullPath) |
|
Parameter
명 |
설명 |
|
string strDirectoryFullPath |
생성할 디렉터리의 절대경로이다. 경로상에 명시된 모든 디렉터리에 대하여 디렉터리가 존재하지 않을 경우는 새롭게 생성한다. |
디렉터리를 삭제한다.
|
void
deleteDirectory(string strDirectoryFullPath, bool bDeleteSubDirectory) |
|
Parameter
명 |
설명 |
|
string strDirectoryFullPath |
삭제할
디렉터리의 절대경로이다. |
|
bool bDeleteSubDirectory |
부디렉터리까지 삭제할지 여부를 지정한다.
값이 False일 경우, 만일 하위 디렉터리가
존재하면 예외가 발생하고, True이면 하위 디렉터리가 존재할 경우 하위 디렉터리까지 한꺼번에 삭제한다. |
DataReader객체를 .NET DataSet을 변환하여 리턴한다.
|
DataSet
convertDataReaderToDataSet (IDataReader oiDataReader) |
|
Parameter
명 |
설명 |
|
IDataReader oiDataReader |
.NET DataSet으로 변환할 DataReader를 지정한다. |
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(); } |
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(); } |
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); |
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); |
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"); |
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(); |
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(); } |
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(); } |
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); |
커넥션명을 가지고 실제 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 객체를 구분하는 유일한 키값이다.
사용예제)
|
IXyncBasePage oGBasePage = new IXyncBasePage(Server, Request, Response); IXyncConnection oGaConn = oGBasePage.IXyncDbHelper.addConnection( "Conn1",
IXyncVariable.DbProviderType.MSSQL, null, 0); //
strConnectionName에는 "Conn1" 값이 저장되어 있을 것이다. String
strConnectionName = oGaConn.ConnectionName; |
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; |
실제 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; |
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; |
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; |
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; |
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(); |
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(); |
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(); |
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); |
새로운 서비스 개체를 생성하고 서비스
핸들러를 반환한다.(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"); |
환경설정값 중 압축설정 여부를 알아보기
위해 사용한다.
ConfigProperty에서 압축여부의 플래그 값인 format_compress_enable 값을 반환한다.
|
bool
getConfigCompress(); |
사용예제)
|
ServiceLoader
Loader = new ServiceLoader(Server, Request, Response); IIXyncService IXyncService = Loader.newService(); bool bIsCompress
= IXyncService.getConfigCompress(); |
ConfigProperty에서 퍼스트로우 데이터 패킷의 로우
사이즈인 firstrow_size을 반환한다.
|
int getConfigFirstRowSize (); |
사용예제)
|
ServiceLoader
Loader = new ServiceLoader(Server, Request, Response); IIXyncService IXyncService = Loader.newService(); int iFirstRowSz =
IXyncService.getConfigFirstRowSize(); |
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(); } |
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); |
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"); |
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")){ ………………………… } } |
디버그 로거를 반환한다.
|
IIXyncLoger
getDebugLoger(); |
사용예제)
|
ServiceLoader
Loader = new ServiceLoader(Server, Request, Response); IIXyncService IXyncService = Loader.newService(); IIXyncLoger GLoger
= IXyncService.getDebugLoger(); |
이벤트 로거를 반환한다.
|
IIXyncLoger getEventLoger(); |
사용예제)
|
ServiceLoader
Loader = new ServiceLoader(Server, Request, Response); IIXyncService IXyncService = Loader.newService(); IIXyncLoger GLoger
= IXyncService.getEventLoger(); |
메시지 로거를 반환한다.
|
IIXyncLoger getMessageLoger
(); |
사용예제)
|
ServiceLoader
Loader = new ServiceLoader(Server, Request, Response); IIXyncService IXyncService = Loader.newService(); IIXyncLoger GLoger
= IXyncService.getMessageLoger(); |
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); |
현재 수신핸들러를 반환한다.
|
IIXyncRequest
getRequest(); |
사용예제)
|
ServiceLoader
Loader = new ServiceLoader(Server, Request, Response); IIXyncService IXyncService = Loader.newService(); IIXyncRequest IXyncResquest
= IXyncService.getRequest(); |
현재 송신핸들러를 반환한다.
두번째 메소드는 특정한 상황에서 송신
데이터 패킷의 형태를 변환 하고자 할 때 사용한다. 일반적인
경우에는 서비스개체 생성시에 설정한 환경설정값에 따라 송신 데이터 패킷의 형태가 결정된다.
|
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); |
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"); |
IXYNC
Service 객체를 해제하고 서비스 종료를 처리한다.
|
void
end(); |
사용예제)
|
ServiceLoader
Loader = new ServiceLoader(Server, Request, Response); IIXyncService IXyncService = Loader.newService(); //………………. // IXYNC Service객체를 해제한다. IXyncService.end(); |
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(); |
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"]); |
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(); |
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(); |
현재 지정된 송신대상을 반환한다.
|
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 가 아닌 경우에만 실제 쿼리작업을 진행한다. } |
현재
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(); |
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(); |
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(); |
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(); |
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(); } |
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(); } |
원본 데이터셋(또는
데이터 소스)에서 정의된 컬럼이름을 런타임 시에 다른이름으로 변경하여 사용하고자 할 경우 이용한다.
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(); } |
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(); } |
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(); } |
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); |
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); } } |
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); } } |
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); } } |
.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(); |
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(); |
.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 객체를 입력한다. |
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); |
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 작업을 합니다. } } |
IXyncDataSet 객체를 해제한다.
이떄 내부적으로는 DataSet에 남은 로우데이터들을 클라이언트로
한꺼번에 전송한다.
|
void
end(); |
사용예제)
|
// DataSet을 생성한다. IXyncDataSet GDS = IXyncService.newDataSet("output1"); // ………………. // IXyncDataSet객체를 해제한다. GDS.end(); |
클라이언트로 송신 및 로그에 기록할 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); |
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(); |
Transaction
작업에서 작업이 성공인지 실패인지 결과를 얻어온다.
|
bool getResult(); |
|
반환값 |
설명 |
|
bool |
작업의 성공/실패 여부를 얻어온다. |
사용예제)
|
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"; |
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); |
Parameter의 Property를 정의한 구조체입니다.
IXYNC Parameter 이름을 가져오거나 설정합니다.
열
내부에 있는
데이터의 최대
크기를 바이트단위로
가져오거나 설정합니다.
매개변수가
입력전용, 출력전용, 양방향 또는
저장프로시저의 반환값
매개변수 인지
여부를 나타내는
값을 가져오거나
설정합니다.
매개변수값을
가져오거나 설정합니다.
매개변수
개체의 데이터
형식을 가져오거나
설정합니다.
Value 속성을 나타내는데
사용된 숫자의
최대 자릿수를
가져오거나 설정합니다.
Value 을 확인하는 소수 자릿수의 수를 가져오거나 설정합니다.
IXyncParameter는 키/값을 갖는 ArrayList 로 DB 파라미터를 관리하는 객체입니다.
오버로드된 add 메소드를 사용해서 키, 값뿐 아니라 DB Type, Size, Precision, Scale, Direction 등을 명시적으로 지정하여 좀 더 세밀하게 DB 파라미터를 관리할 수 있습니다.
IXYNC Parameter 개체들을 담고있는 ArrayList를 반환합니다.
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); //… |
ActiveX 관련 IE 부분패치에 대응하기 위한 RollupFilter 모듈입니다.
|
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 |
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 =
Request.ApplicationPath); oGFilter.FilterKeyName
= "MyFilter";
} //web.config 파일에서 <appSettings> 영역에
위에서 설정한 FileKeyName 값을 설정한다. <appSettings>
<!-- IE
patch에 대응하기 위한 키값 설정
Key : FileKeyName ( default : "ActivexRollupFilter") Value
: "TRUE" – ActiveRollupFileter 활성화
"FALSE" –
ActiveRollupFileter 비활성화 --> <!-- 키값을 지정하지않은경우 --> <add key="ActivexRollupFilter" value="FALSE"/> <!-- 키값을 지정한 경우 -->
</appSettings> |
IX-SERVER 서비스 간의 통신을 할 수 있도록 API를 제공하는 인터페이스입니다.
[전제조건]
1. 조회서비스만 지원됩니다.
2. 호출되는 서비의 전송패킷이 IX-SERVER New Packet (BINARY, CSV30) 일 때만 정상적으로 데이터를 수신할 수 있습니다.
기 작성된 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(); } |
기 작성된 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(); } |
서비스 내부에서 사용할 쿼리문을 XML file로 관리하기 위한 메소드를 제공하는 인터페이스입니다.
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(); } |
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(); } |
미리 정해지지 않은 임의의 구조를 가진 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(); } |