Welcome 微信登录

首页 / 数据库 / MySQL / DB2版SQLJ访问Oracle服务器

今天看到一本关于Oracle SQLJ的书于是想试一试。但我的Ubuntu 14.04只安装了Oracle的精简客户端。没有SQLJ,于是想到用IBM-db2的sqlj,居然成功了。一、从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 EmpEMPNO = 7369      ENAME = SMITHEMPNO = 7499      ENAME = ALLENEMPNO = 7521      ENAME = WARDEMPNO = 7566      ENAME = JONESEMPNO = 7654      ENAME = MARTINEMPNO = 7698      ENAME = BLAKEEMPNO = 7782      ENAME = CLARKEMPNO = 7788      ENAME = SCOTTEMPNO = 7839      ENAME = KINGEMPNO = 7844      ENAME = TURNEREMPNO = 7876      ENAME = ADAMSEMPNO = 7900      ENAME = JAMESEMPNO = 7902      ENAME = FORDEMPNO = 7934      ENAME = MILLER更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址