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.