JAVA 응용 프로그램에서 호출

JAVA 응용 프로그램에서 JAVA 저장 함수/프로시저를 호출하기 위해서는 CallableStatement를 사용한다.

CUBRID 데이터베이스에 Phone 클래스를 생성한다.

create class phone(
        name varchar(20),
        phoneno varchar(20)
)

다음의 PhoneNumber.java JAVA 파일을 컴파일하여 JAVA 클래스 파일을 CUBRID로 로드하고 등록한다.

import java.sql.*
import java.io.*

public class PhoneNumber{
      public static void Phone(String name, String phoneno) throws Exception{
              String sql=" INSERT INTO PHONE(NAME, PHONENO)" + " VALUES (?, ?)"
              try{
                      Class.forName(“cubrid.jdbc.driver.CUBRIDDriver”)
                      Connection conn = DriverManager.getConnection(" jdbc:default:connection:" )
                      PreparedStatement pstmt = conn.prepareStatement(sql)
             
                      pstmt.setString(1, name)
                      pstmt.setString(2, phoneno)
                      pstmt.executeUpdate()

                      pstmt.close()
                      conn.commit()
                      conn.close()
              } catch (SQLException e) {
                      System.err.println(e.getMessage())
              }
      }
}

create PROCEDURE phone_info(name varchar, phoneno varchar)
as language java
name ‘PhoneNumber.Phone(java.lang.String, java.lang.String)’

다음과 같은 JAVA 응용 프로그램을 작성하고 실행한다.

import java.sql.*

public class StoredJDBC{
      public static void main(){
              Connection conn = null
              Statement stmt= null
              int result
              int i

              try{
  Class.forName(“cubrid.jdbc.driver.CUBRIDDriver”)
                      conn = DriverManager.getConnection(" jdbc:CUBRID:localhost:33000:subway:::" ," " ," " )

                      CallableStatement cs
                      cs = conn.prepareCall(" call PHONE_INFO(?, ?)" )

                      cs.setString(1, " Jane" )
                      cs.setString(2, " 010-1111-1111" )
                      cs.executeUpdate()

                      conn.commit()
                      cs.close()
                      conn.close()
              } catch (Exception e) {
                      e.printStackTrace()
              }
      }
}

위의 프로그램 실행한 후 PHONE 클래스 조회를 하면 다음과 같은 결과가 출력된다.

csql> select * from phone
csql> xrun

=== < Result of SELECT Command in Line 1> ===

name                                  phoneno
============================================
      'Jane'                              '010-111-1111'

1 rows selected.

Current transaction has been committed.

1 command(s) successfully processed.