db2版sqlj訪問oracle服務器

今天看到一本關於oracle sqlj的書因而想試一試。但個人ubuntu14只安裝了oracle的精簡客戶端。java

沒有sqlj,因而想到用IBM-db2的sqlj,竟然成功了。sql

1、從oracle服務器端把runtime12ee.jar  runtime12.jar  translator.jar拷入相應目錄數據庫

個人是放在$ORACLE_HOME/sqlj/lib,其中的$ORACLE_HOME是精簡客戶端的安裝目錄ubuntu

/opt/ora11g/instantclient_11_2/服務器

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

3、用sqlj程序轉換時須要加上-compile=false -C-classpath=$ORACLE_HOME/sqlj/lib/* 選項函數

4、實例spa

/* Emp.sqlj 源程序 code

  

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

   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

相關文章
相關標籤/搜索