9.샘플 프로젝트 (서비스 만들기-jsp)

XPLATFORM 프로그램에서 사용하는 Server Side Service를 작성해 보겠습니다.

XPLATFORM 프로그램은 화면(Form)에서 입력 받은 데이터를 서버로 전송할 때 “Transaction” 함수를 사용합니다. 해당 “Transaction” 함수는 입력 받은 변수와 Dataset을 XML Format으로 변형하여 호출한 JSP에게 전달합니다. 호출한 JSP의 결과값은 “Transaction” 호출 시에 등록한 Callback 함수에서 ErrorCode, ErrorMsg 인자를 통해 확인이 가능합니다.

Server Side 에 작성되는 서비스는 JSP, Java Servlet, ASP, ASP.NET, PHP 등의 언어를 사용할 수 있습니다. 본 예제에서는 화면(Form)에서 입력 받은 데이터를 JSP를 사용하여 Database(MySql)에 접근하여 저장합니다. 작성된 서비스는 웹브라우저를 통해서는 입력값을 DataSet 형태로 전달할 수 없습니다. 따라서 XPLATFORM 화면을 통해서만 테스트 할 수 있습니다.

일반적으로 사용되는 서버구성 예

서비스 작성언어 : Java 계열(Java Servlet, JSP), ASP 계열(ASP, ASP.NET)

웹서버 : Apache, WAS에 포함되어 있는 웹서버

데이터베이스(Database) : Oracle, MS SQLServer, Sybase, DB2

WAS(Web Application Server) : WebLogic, WebSphere, JEUS, Tomcat, Resin

서비스 작성언어에서 데이터베이스(Database) 연결모듈을 제공받으셔야 합니다.
서비스를 작성할 때는 USXtudio를 사용하지 않고 일반 웹에디터(eclips, Visual Studio .NET, NotePad, …)를 사용합니다.
본 예제는 JSP를 사용하여 Tomcat에서 실행이 가능하도록 구현되었습니다.

9.1조회 서비스

<!-- 3. XPLATFORM XAPI(라이브러리) 선언하기 -->
<!-- 2. Java 라이브러리를 선언하기 -->
<!-- 1. 기본 JSP 만들기 -->
<%
/** 4. XPLATFORM 기본객체(PlatformData) 생성하기 **/
/** 7-1. ErrorCode, ErrorMsg 처리하기 **/
try {
    /** 5-1. Database Connection **/
    try {
        /** 5-2. SQL 수행구문 작성하기 **/
        /** SELECT 처리 **/
        /** 6. Dataset 생성 및 Data를 Dataset에 저장하기 **/
        /** 7-2. ErrorCode, ErrorMsg 처리하기 **/
    } catch (SQLException e) {
        /** 7-3. ErrorCode, ErrorMsg 처리하기 **/
    }
    /** 5-3. Database Close**/
} catch (Throwable th) {
    /** 8-4. ErrorCode, ErrorMsg 처리하기 **/
}
/** 8-5. ErrorCode, ErrorMsg 처리하기 **/
/** 9. XML output 객체(PlatformResponse) 만들기 **/
%>

9.1.1전체 코드 (search.jsp)

<!-- 3.XPLATFORM XAPI(라이브러리) 선언하기 -->
<%@ page import="com.tobesoft.xplatform.data.*" %>
<%@ page import="com.tobesoft.xplatform.tx.*" %>
<!-- 2. Java 라이브러리를 선언하기 -->
<%@ page import="java.sql.*"%>
<!-- 1. 기본 JSP 만들기 -->
<%@ page contentType="text/xml; charset=UTF-8" %>
<%!
public String rsGet(ResultSet rs,String id)throws Exception{
    if(rs.getString(id) == null)return "";
    else return rs.getString(id);
}
public boolean isEmpty(String str) {
    if (str == null)return true;
    if ("".equals(str.trim()))return true;
    return false;
}
%>
<%
out.clearBuffer();

/** 4.XPLATFORM 기본객체(PlatformData) 생성하기 **/
PlatformData pdata = new PlatformData();

/** 7-1. ErrorCode, ErrorMsg 선언부분 **/
int nErrorCode = 0;
String strErrorMsg = "START";
/** 5-1.Database 연결 **/
try {
    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;

    try {
        String url = "JDBC:mysql://localhost:3306/demo";
        Class.forName("com.mysql.jdbc.Driver"); 
        con = DriverManager.getConnection(url,"demo","1234");
        stmt = con.createStatement();

        /** 5-2.SQL 수행구문 작성하기 **/
        String sql = " SELECT * FROM customer " ;

        if (!isEmpty(request.getParameter("keyword"))){
            sql += " WHERE LCASE(name) like LCASE('%" 
                + request.getParameter("keyword")+ "%') " ;
        }
        rs = stmt.executeQuery(sql);

        /** 6. Dataset 생성 및 Data를 Dataset에 저장하기 **/
        DataSet ds = new DataSet("customers");
        ds.addColumn("id",DataTypes.INT);
        ds.addColumn("name",DataTypes.STRING, 16);
        ds.addColumn("email", DataTypes.STRING, 32);
        ds.addColumn("birthday", DataTypes.STRING, 8);
        ds.addColumn("phone", DataTypes.STRING, 16);
        ds.addColumn("home_addr", DataTypes.STRING, 256);
        ds.addColumn("company", DataTypes.STRING, 32);
        ds.addColumn("jobtitle", DataTypes.STRING, 32);
        ds.addColumn("busi_phone", DataTypes.STRING, 16);
        ds.addColumn("busi_addr", DataTypes.STRING, 256);

        int row = 0;
        while(rs.next()){
            row = ds.newRow();
            ds.set(row,"id",rs.getInt("id"));
            ds.set(row,"name",rsGet(rs,"name"));
            ds.set(row,"email",rsGet(rs,"email"));
            ds.set(row,"birthday",rsGet(rs,"birthday"));
            ds.set(row,"phone",rsGet(rs,"phone"));
            ds.set(row,"home_addr",rsGet(rs,"home_addr"));
            ds.set(row,"company",rsGet(rs,"company"));
            ds.set(row,"jobtitle",rsGet(rs,"jobtitle"));
            ds.set(row,"busi_phone",rsGet(rs,"busi_phone"));
            ds.set(row,"busi_addr",rsGet(rs,"busi_addr"));
        }
        pdata.addDataSet(ds);

        /** 7-2. ErrorCode, ErrorMsg 처리하기 **/
        nErrorCode = 0;
        strErrorMsg = "SUCC";
    } catch (SQLException e) {
        /** 7-3. ErrorCode, ErrorMsg 처리하기 **/
        nErrorCode = -1;
        strErrorMsg = e.getMessage();
    }
    /** 5-3. Database Close**/
    if(rs != null){
        try{
            rs.close();
        } catch(Exception e){
        nErrorCode = -1; strErrorMsg = e.getMessage();
        }
    }
    if(stmt != null){
        try{
            stmt.close();
        }catch(Exception e){
            nErrorCode = -1; strErrorMsg = e.getMessage();
        }
    }
    if(con != null){
        try{
            con.close();
        } catch(Exception e){
            nErrorCode = -1; strErrorMsg = e.getMessage();
        }
    }
} catch (Throwable th) {
    /** 7-4. ErrorCode, ErrorMsg 처리하기 **/
    nErrorCode = -1;
    strErrorMsg = th.getMessage();
}
/** 7-5. ErrorCode, ErrorMsg 처리하기 **/
VariableList varList = pdata.getVariableList();
varList.add("ErrorCode", nErrorCode);
varList.add("ErrorMsg", strErrorMsg);
/** 8. XML output 객체(PlatformResponse) 만들기 **/
HttpPlatformResponse res = new HttpPlatformResponse(response);
res.setData(pdata);
res.sendData();
%>

9.1.2코드 분석

코드 초반부입니다.

<!-- 1. 기본 JSP 만들기 -->
<%@ page contentType="text/xml; charset=UTF-8" %>
<%!
public String rsGet(ResultSet rs,String id)throws Exception{
    if(rs.getString(id) == null)return "";
    else return rs.getString(id);
}
public boolean isEmpty(String str) {
    if (str == null)return true;
    if ("".equals(str.trim()))return true;
    return false;
}
%>
<%
/** 데이터 처리를 위해 구현되어야 할 부분 **/
%>

9.1.3Java 라이브러리 선언하기

JSP 서비스를 작성하기 위해 java 기본 라이브러리를 선언합니다.
Java의 기본객체들과 웹서버의 로그관리를 위해 선언되어야 하는 라이브러리는 다음과 같습니다.
<!-- 2. Java 라이브러리를 선언하기 -->
<%@ page import = "java.sql.*" %>
<%@ page import="org.apache.commons.logging.*" %>

9.1.4XPLATFORM XAPI(라이브러리) 선언하기

XML Data를 생성할 때는 XPLATFORM이 사용하는 Format을 준수해야 합니다.
XML Format Data는 “xerces”처럼 상용화되어 있는 파서(Parser)를 사용해도 되고, 직접 구현하여 사용해도 무방합니다. 
하지만, XPLATFORM Java용 라이브러리(XPLATFORM XAPI)를 사용하시면 XPLATFORM 전용객체를 만들어 사용하므로 XML Data Format을 별도로 파싱하지 않아도 객체의 기능을 이용하여 손쉽게 데이터를 추출해낼 수 있습니다.

XPLATFORM XAPI를 선언하는 스크립트는 다음과 같습니다.

<!-- 3.XPLATFORM XAPI(라이브러리) 선언하기 -->
<%@ page import="com.tobesoft.xplatform.data.*" %>
<%@ page import="com.tobesoft.xplatform.tx.*" %>

9.1.5XPLATFORM 기본객체(PlatformData) 생성하기

데이터를 처리하기 위한 기본객체를 선언합니다. 
XPLATFORM 프로그램으로 받은 XML 데이터를 파싱한 후에 Dataset 형태로 PlatformData에 보관됩니다.
XML Data는 한번에 여러 개의 Dataset을 받을 수 있습니다.
데이터베이스로부터 SQL문장을 수행하여 얻은 결과는 Dataset에 보관됩니다.
Dataset은 여러 개를 선언하여 만들 수 있으며 한번의 통신으로 여러 개의 Dataset을 만들어 한꺼번에 받을 수도 있습니다.
인자로 사용되거나 반환값으로 사용되는 변수값도 VariableList에 보관됩니다.
이때 만들어진 Dataset과 VariableList는 PlatformData 객체안에 포함됩니다.
따라서 변수(VariableList)나 Dataset을 사용하려면 PlatformData를 선언이 반드시 필요합니다.

PlatformData를 선언하는 스크립트는 다음과 같습니다.

out.clearBuffer();

/** 4.XPLATFORM 기본객체(PlatformData) 생성하기 **/
PlatformData pdata = new PlatformData();

9.1.6Database 연결 & SQL 수행구문 작성하기

/** 5-1.Database Connection **/
/******* JDBC Connection *******/
try {
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    try{
        String url = "JDBC:mysql://localhost:3306/demo";
        Class.forName("com.mysql.jdbc.Driver"); 
        conn = DriverManager.getConnection(url,"demo","1234");
        stmt = conn.createStatement();

        /** 5-2.SQL 수행구문 작성하기 **/
        String sql = " SELECT * FROM customer " ;

        // 조회 조건이 있는 경우 
        if (!isEmpty(request.getParameter("keyword"))){
            sql += " WHERE LCASE(name) like LCASE('%" 
                + request.getParameter("keyword")+ "%') " ;
        }
        rs = stmt.executeQuery(sql);

    } catch (SQLException e) {

    }
    /** 5-3. Database Close**/
    /******** JDBC Close ********/
    if(rs != null){try{rs.close();} 
    catch(Exception e){nErrorCode = -1; strErrorMsg = e.getMessage();}}
    if(stmt != null){try{stmt.close();}
    catch(Exception e){nErrorCode = -1; strErrorMsg = e.getMessage();}}
    if(con != null){try{con.close();} 
    catch(Exception e){nErrorCode = -1; strErrorMsg = e.getMessage();}}
}catch (Throwable th) {}

9.1.7Dataset 생성 & 조회한 Data를 Dataset에 저장하기

ResultSet인 “rs”에 담겨있는 데이터를 그대로 XPLATFORM에 전달해도 이는 Data로 인정되지 않습니다. XPLATFORM이 인정하는 XML Format으로 변형하여 전달해야 합니다.
이 과정이 다소 번거로울수 있으므로 XPLATFORM 라이브러리가 제공하는 전용객체인 DataSet을 이용합니다. DataSet은 모체인 PlatformData에 포함되어 PlatformData의 기능을 이용하면 손쉽게 XML Format Data로 변형할 수 있습니다.
본 예제에서는 기본기능을 제시하고자 ResultSet의 값을 Column단위마다 Dataset으로 옮기는 과정을 보여주고 있습니다. 하지만 실제 프로젝트에서 활용하실 때는 이 부분을 공통함수로 만들어 활용하면 불필요한 스크립트 작성을 줄일 수 있습니다.

ResultSet(“rs”)의 데이터를 DataSet으로 옮겨담기 위한 스크립트는 다음과 같습니다.

/** 6. Dataset 생성 & 조회한 Data를 Dataset에 저장하기 **/


/********* Dataset 생성 **********/
DataSet ds = new DataSet("customers");
ds.addColumn("id",DataTypes.INT);
ds.addColumn("name",DataTypes.STRING, 16);
ds.addColumn("email", DataTypes.STRING, 32);
ds.addColumn("birthday", DataTypes.STRING, 8);
ds.addColumn("phone", DataTypes.STRING, 16);
ds.addColumn("home_addr", DataTypes.STRING, 32);
ds.addColumn("company", DataTypes.STRING, 32);
ds.addColumn("jobtitle", DataTypes.STRING, 32);
ds.addColumn("busi_phone", DataTypes.STRING, 16);
ds.addColumn("busi_addr", DataTypes.STRING, 256);


int row = 0;
while(rs.next()){
    row = ds.newRow();
    ds.set(row,"id",rs.getInt("id"));
    ds.set(row,"name",rsGet(rs,"name"));
    ds.set(row,"email",rsGet(rs,"email"));
    ds.set(row,"birthday",rsGet(rs,"birthday"));
    ds.set(row,"phone",rsGet(rs,"phone"));
    ds.set(row,"home_addr",rsGet(rs,"home_addr"));
    ds.set(row,"company",rsGet(rs,"company"));
    ds.set(row,"jobtitle",rsGet(rs,"jobtitle"));
    ds.set(row,"busi_phone",rsGet(rs,"busi_phone"));
    ds.set(row,"busi_addr",rsGet(rs,"busi_addr"));
}
// DataSet을 PlatformData에 추가
pdata.addDataSet(ds);

9.1.8Errorcode, ErrorMsg 처리하기

위 과정으로 기본적인 데이터의 처리가 구현되었습니다.
하지만 모든 경우에 예외상황이 발생할수 있으므로 오류가 발생했을 때 처리하는 부분을 다음과 같이 스크립트로 처리하는 것이 바람직합니다.
/** 7-1. ErrorCode, ErrorMsg 선언부분 **/
int nErrorCode = 0;
String strErrorMsg = "START";
/** 7-2. ErrorCode, ErrorMsg 처리하기 **/
// 처리가 성공일 경우
nErrorCode = 0;
strErrorMsg = "SUCC";
/** 7-3. ErrorCode, ErrorMsg 처리하기 **/
// 처리가 실패일 경우
nErrorCode = -1;
strErrorMsg = e.getMessage();
/** 7-4. ErrorCode, ErrorMsg 처리하기 **/
// 처리가 실패일 경우
nErrorCode = -1;
strErrorMsg = th.getMessage();
/** 7-5. ErrorCode, ErrorMsg 처리하기 **/
//VariableList 참조
VariableList varList = pdata.getVariableList();
// VariableList에 값을 직접 추가
varList.add("ErrorCode", nErrorCode);
varList.add("ErrorMsg", strErrorMsg);

9.1.9XML output 객체(PlatformResponse)만들기

앞선 과정들을 통해 데이터를 데이터베이스로부터 추출하여 Dataset에 담았습니다.
오류메세지도 VariableList에 등록하였습니다. DataSet과 VariableList는 PlatformData의 멤버이므로 JSP 수행 결과값은 PlatformData 객체에 들어있습니다. 이제 PlatformData의 데이터를 XPLATFORM이 인정하는 XML Format으로 추출하여 전송하는 부분을 구현해 보겠습니다.

데이터를 전송하는 기능을 쉽게 구현하기 위해 XPLATFORM 라이브러리의 PlatformResponse 객체를 만들고 PlatformData로부터 데이터를 출력시키는 스크립트는 다음과 같습니다.

/** 8. XML output 객체(PlatformResponse) 만들기 **/
// HttpServletResponse를 이용하여 HttpPlatformResponse 생성
HttpPlatformResponse res = new HttpPlatformResponse(response);
res.setData(pdata);
// 데이터 송신
res.sendData();

9.2저장 서비스

9.2.1전체 코드 (save.jsp)

<!-- 3.XPLATFORM XAPI(라이브러리) 선언하기 -->
<%@ page import="com.tobesoft.xplatform.data.*" %>
<%@ page import="com.tobesoft.xplatform.tx.*" %>
<!-- 2. Java 라이브러리를 선언하기 -->
<%@ page import="java.sql.*"%>
<!-- 1. 기본 JSP 만들기 -->
<%@ page contentType="text/xml; charset=UTF-8" %>

<%!
public String nvl(String id)throws Exception{
    if(id == null )return "";
    else return id;
}
public boolean isEmpty(String str) {
    if (str == null)return true;
    if ("".equals(str.trim()))return true;
    return false;
}
%>

<%
out.clearBuffer();

/** PlatformRequest 만들기 & Data 읽기 **/
/** HttpServletRequest를 이용하여 HttpPlatformRequest 생성 */
HttpPlatformRequest req = new HttpPlatformRequest(request);

/** XML 데이터 분석 */
req.receiveData();

/** 데이터를 PlatformData 형태로 저장 */
PlatformData i_xpData = req.getData();

/** PlatformData로부터 Dataset 추출 */
DataSet inDs = i_xpData.getDataSet("customers");

/** XPLATFORM 기본객체(PlatformData) 생성하기 **/
PlatformData pdata = new PlatformData();

/** ErrorCode, ErrorMsg 선언부분 **/
int nErrorCode = 0;
String strErrorMsg = "START";
/** Database 연결 **/
try {
    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;

    try {
        String url = "JDBC:mysql://localhost:3306/demo";
        Class.forName("com.mysql.jdbc.Driver"); 
        con = DriverManager.getConnection(url,"demo","1234");
        stmt = con.createStatement();

        /** SQL 수행구문 작성하기 **/
        String sql = "";
        /** 트랜잭션관리 */
        con.setAutoCommit(false);
        int rowType=0;
        int i=0;
        /** Dataset을 INSERT, UPDATE처리 **/
        for ( i=0 ; i <inDs.getRowCount() ;i++){
            rowType = inDs.getRowType(i);
            if( rowType == DataSet.ROW_TYPE_INSERTED ){
                sql = " INSERT INTO customer " 
                + " (name, email, birthday, phone, home_addr"
                + " , company, jobtitle, busi_phone, busi_addr ) "
                + " VALUES ( ' " 
                + nvl(inDs.getString(i,"name")) + "' , '"
                + nvl(inDs.getString(i,"email")) + "' , '"
                + nvl(inDs.getString(i,"birthday")) + "' , '"
                + nvl(inDs.getString(i,"phone")) + "' , '"
                + nvl(inDs.getString(i,"home_addr")) + "' , '"
                + nvl(inDs.getString(i,"company")) + "' , '"
                + nvl(inDs.getString(i,"jobtitle")) + "' , '"
                + nvl(inDs.getString(i,"busi_phone")) + "' , '"
                + nvl(inDs.getString(i,"busi_addr")) + "' ) " ;
                stmt.executeUpdate(sql);
            } else if( rowType == DataSet.ROW_TYPE_UPDATED ){
                sql = " UPDATE customer SET " 
                + " name = ' " + nvl(inDs.getString(i,"name")) + "' , "
                + " email = ' " + nvl(inDs.getString(i,"email")) + "' , "
                + " birthday = ' " + nvl(inDs.getString(i,"birthday")) + "' , " 
                + " phone = ' " + nvl(inDs.getString(i,"phone")) + "' , "
                + " home_addr = ' " + nvl(inDs.getString(i,"home_addr")) + "' , "
                + " company = ' " + nvl(inDs.getString(i,"company")) + "' , "
                + " jobtitle = ' " + nvl(inDs.getString(i,"jobtitle")) + "' , "
                + " busi_phone = ' " + nvl(inDs.getString(i,"busi_phone")) + "' , " 
                + " busi_addr = ' " + nvl(inDs.getString(i,"busi_addr")) + "' "
                + " WHERE id = " + inDs.getInt(i,"id") ;
                stmt.executeUpdate(sql);
            }
        }

        /** Dataset을 DELETE 처리 **/
        for( i = 0 ; i< inDs.getRemovedRowCount() ; i++ ){
            sql = " DELETE FROM customer WHERE id = " 
            + Integer.parseInt(inDs.getRemovedData(i,"id").toString()) ;
            stmt.executeUpdate(sql);
        }
        /** 트랜잭션 관리 */
        con.commit();

        /** 7-2. ErrorCode, ErrorMsg 처리하기 **/
        nErrorCode = 1;
        strErrorMsg = "SUCC";
    } catch (SQLException e) {
        /** 7-3. ErrorCode, ErrorMsg 처리하기 **/
        nErrorCode = -1;
        strErrorMsg = e.getMessage();
    }
    /** 5-3. Database Close**/
    if(rs != null){try{rs.close();} catch(Exception e){
    nErrorCode = -1; strErrorMsg = e.getMessage();}}
    if(stmt != null){try{stmt.close();}catch(Exception e){
    nErrorCode = -1; strErrorMsg = e.getMessage();}}
    if(con != null){try{con.close();} catch(Exception e){
    nErrorCode = -1; strErrorMsg = e.getMessage();}}
} catch (Throwable th) {
    /** 7-4. ErrorCode, ErrorMsg 처리하기 **/
    nErrorCode = -1;
    strErrorMsg = th.getMessage();
}
/** 7-5. ErrorCode, ErrorMsg 처리하기 **/
VariableList varList = pdata.getVariableList();
varList.add("ErrorCode", nErrorCode);
varList.add("ErrorMsg", strErrorMsg);
/** 8. XML output 객체(PlatformResponse) 만들기 **/
HttpPlatformResponse res = new HttpPlatformResponse(response);
res.setData(pdata);
res.sendData();
%>

9.2.2코드 분석

코드 초반부입니다.

<!-- 1. 기본 JSP 만들기 -->
<%@ page contentType="text/xml; charset=UTF-8" %>
<%!
public String nvl(String id)throws Exception{
    if(id == null )return "";
    else return id;
}
public boolean isEmpty(String str) {
    if (str == null)return true;
    if ("".equals(str.trim()))return true;
    return false;
}
%>
<%
/** 데이터 처리를 위해 구현되어야 할 부분 **/
%>

9.2.3Java 라이브러리 선언하기

Java 라이브러리 선언하기”의 내용과 동일합니다.

9.2.4XPLATFORM XAPI(라이브러리) 선언하기

XPLATFORM XAPI(라이브러리) 선언하기”의 내용과 동일합니다.

9.2.5XPLATFORM 기본객체(PlatformData) 생성하기

XPLATFORM 기본객체(PlatformData) 생성하기" 내용과 동일합니다.

9.2.6XML input객체(PlatformRequest)만들기 & Data읽기

XPLATFORM 프로그램으로부터 전달받은 데이터는 XML Format 데이터 입니다.
이를 직접 파싱(Parsing)해서 사용할 수도 있습니다.
하지만, XPLATFORM 라이브러리를 이용하면 쉽게 구현할 수 있습니다.

PlatformRequest객체를 생성하는 스크립트는 다음과 같습니다.

/** 5.PlatformRequest 만들기 & Data 읽기 **/
// HttpServletRequest를 이용하여 HttpPlatformRequest 생성
HttpPlatformRequest req = new HttpPlatformRequest(request);
// XML 데이터 분석
req.receiveData();
// 데이터를 PlatformData 형태로 저장
PlatformData i_xpData = req.getData();
// PlatformData로부터 Dataset 추출
DataSet inDs = i_xpData.getDataSet("customers");
%>

9.2.7Database 연결 & SQL 수행구문 작성하기

/** 6-1.Database 연결 **/
try {
    /******* JDBC Connection *******/
    Connection conn = null;
    Statement stmt = null;
    try{
        String url = "JDBC:mysql://localhost:3306/demo";
        Class.forName("com.mysql.jdbc.Driver"); 
        con = DriverManager.getConnection(url,"demo","1234");
        stmt = con.createStatement();
    } catch (SQLException e) {
    }
    /******** JDBC Close ********/
    if ( stmt != null ) try { stmt.close(); } catch (Exception e) {
    nErrorCode = -1; strErrorMsg = e.getMessage();}
    if ( con != null ) try { con.close(); } catch (Exception e) {
    nErrorCode = -1; strErrorMsg = e.getMessage();}
}catch (Throwable th) {

}
/** 6-2. SQL 수행구문 작성하기 **/
String sql = "";
// 트랜잭션관리
con.setAutoCommit(false);
int rowType=0;
int i=0;
/** Dataset을 INSERT, UPDATE처리 **/
for ( i=0 ; i <inDs.getRowCount() ;i++){
    rowType = inDs.getRowType(i);
    if( rowType == DataSet.ROW_TYPE_INSERTED ){
        sql = " INSERT INTO customer " 
        + " (name, email, birthday, phone, home_addr"
        + " , company, jobtitle, busi_phone, busi_addr ) "
        + " VALUES ( ' " 
        + nvl(inDs.getString(i,"name")) + " ' , ' "
        + nvl(inDs.getString(i,"email")) + " ' , ' "
        + nvl(inDs.getString(i,"birthday")) + " ' , ' "
        + nvl(inDs.getString(i,"phone")) + " ' , ' "
        + nvl(inDs.getString(i,"home_addr")) + " ' , ' "
        + nvl(inDs.getString(i,"company")) + " ' , ' "
        + nvl(inDs.getString(i,"jobtitle")) + " ' , ' "
        + nvl(inDs.getString(i,"busi_phone")) + " ' , ' "
        + nvl(inDs.getString(i,"busi_addr")) + " ' ) " ;
        stmt.executeUpdate(sql);
    }else if( rowType == DataSet.ROW_TYPE_UPDATED ){
        sql = " UPDATE customer SET " 
        + " name = ' " + nvl(inDs.getString(i,"name")) + " ' , "
        + " email = ' " + nvl(inDs.getString(i,"email"))+ " ' , "
        + " birthday = ' " + nvl(inDs.getString(i,"birthday")) + " ' , " 
        + " phone = ' " + nvl(inDs.getString(i,"phone")) + " ' , "
        + " home_addr = ' " + nvl(inDs.getString(i,"home_addr")) + " ' , "
        + " company = ' " + nvl(inDs.getString(i,"company")) + " ' , "
        + " jobtitle = ' " + nvl(inDs.getString(i,"jobtitle")) + " ' , "
        + " busi_phone = ' " + nvl(inDs.getString(i,"busi_phone")) + " ' , " 
        + " busi_addr = ' " + nvl(inDs.getString(i,"busi_addr")) + " ' "
        + " WHERE id = " + inDs.getInt(i,"id") ;
        stmt.executeUpdate(sql);
    }
}
/** Dataset을 DELETE 처리 **/
for( i = 0 ; i< inDs.getRemovedRowCount() ; i++ ){
    sql = " DELETE FROM customer WHERE id = " + 
    Integer.parseInt(inDs.getRemovedData(i,"id").toString()) ;
    stmt.executeUpdate(sql);
}
// 트랜잭션 관리
con.commit();

9.2.8Errorcode, ErrorMsg 처리하기

"Errorcode, ErrorMsg 처리하기"와 동일합니다.

9.2.9XML output 객체(PlatformResponse)만들기

"XML output 객체(PlatformResponse)만들기"와 동일합니다.