设为首页 加入收藏

TOP

DB2版SQLJ访问Oracle服务器
2015-12-15 22:18:06 来源: 作者: 【 】 浏览:3
Tags:DB2 SQLJ 访问 Oracle 服务器

一、从Oracle服务器端把runtime12ee.jar? runtime12.jar? translator.jar拷入相应目录


我的是放在$ORACLE_HOME/sqlj/lib,其中的$ORACLE_HOME是精简客户端的安装目录


/opt/ora11g/instantclient_11_2/


二、把$ORACLE_HOME/sqlj/lib/*加入到CLASSPATH中


三、用sqlj程序转换时需要加上-compile=false -C-classpath=$ORACLE_HOME/sqlj/lib/* 选项


四、实例


/* Emp.sqlj 源程序


? sqlj -compile=false -C-classpath=$ORACLE_HOME/sqlj/lib/* Emp.sqlj


? javac Emp.java


? java Emp


?*/


import java.sql.SQLException; /* 导入所需的 Java 类 */


import sqlj.runtime.*; //Java 运行时支持


import sqlj.runtime.ref.*;


import oracle.sqlj.runtime.*; //Oracle 扩展


#sql iterator MyIter(String empno, String ename);



class Emp /* 主类 */


/* 定义 iterator 处理结果集 */


{


?public static void main(String args[])


?{


?try {


?/* 连接到 Oracle 数据库,这里使用的是 Thin 驱动程序 */


?Oracle.connect("jdbc:oracle:thin:@192.168.0.110:1521:orcl", "scott", "tiger");


?Emp st = new Emp();


?st.runExample();


?} catch(SQLException e) {


?System.err.println("Error running the example:" + e);


?} finally {


?try {


?Oracle.close();


?} catch(SQLException e) { }


?}


?}


?void runExample() throws SQLException { /* 定义 runExample 函数获取并处理结果 */


?MyIter iter; /* 声明 iterator 类的一个实例 */


?#sql iter = {select EMPNO,ENAME from emp}; /* 执行嵌入的 SQL 语句,并返回结果给 iterator */


?



?while(iter.next()) {


?/* 循环遍历结果的每一条记录并输出 */


?System.out.print("EMPNO = " + iter.empno()+"? ? ? ");


?System.out.println("ENAME = " + iter.ename());


?}


?}


}


运行:


$sqlj -compile=false -C-classpath=$ORACLE_HOME/sqlj/lib/* Emp.sqlj


$ javac Emp.java


$ java Emp


EMPNO = 7369? ? ? ENAME = SMITH


EMPNO = 7499? ? ? ENAME = ALLEN


EMPNO = 7521? ? ? ENAME = WARD


EMPNO = 7566? ? ? ENAME = JONES


EMPNO = 7654? ? ? ENAME = MARTIN


EMPNO = 7698? ? ? ENAME = BLAKE


EMPNO = 7782? ? ? ENAME = CLARK


EMPNO = 7788? ? ? ENAME = SCOTT


EMPNO = 7839? ? ? ENAME = KING


EMPNO = 7844? ? ? ENAME = TURNER


EMPNO = 7876? ? ? ENAME = ADAMS


EMPNO = 7900? ? ? ENAME = JAMES


EMPNO = 7902? ? ? ENAME = FORD


EMPNO = 7934? ? ? ENAME = MILLER


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySQL有关Group By的优化 下一篇PostgreSQL——在Docker中的Ubunt..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: