顯示具有 AS400 標籤的文章。 顯示所有文章
顯示具有 AS400 標籤的文章。 顯示所有文章

2012年10月5日 星期五

JTOpen用在Tomcat JNDI載入的使用辦法

其實沒什麼太特別的設定方法,只要將JTOpen的jar檔放在tomcat的lib中,並在在Server.xml中加上下面這段語法就行了
         
         
            
             
              factory
           org.apache.commons.dbcp.BasicDataSourceFactory
               
               
                 driverClassName
           com.ibm.as400.access.AS400JDBCDriver
            
            
              url
              jdbc:as400://ServerIP;translate binary=true
            
            
                username
                username
            
            
                password
                xxxxxxx
            
            
                minEvictableIdleTimeMillis
                30000
            
            
                maxActive
                1000
            
            
                maxIdle
                8
            
            
                maxWait
                10000
            
            

其中要注意的地方,就是"translate binary"這個parameter,由於AS400早期的資料庫編碼是EBCDIT,這個parameter預設為false,也就是不自動轉碼。如果AS400資料庫的CCSID為65535,也是不自動轉碼,所以透過JNDI取得的每個字元都會變成2byte,得到奇怪的字元,所以有兩個方向可走。
  1. 確定讀取到的AS400資料庫CCSID為937,那translate binary可走預設(False)
  2. 如果不確定 AS400資料庫CCSID為何,那translate binary就預設為True,透過JTOpen來做轉碼


AS400相關的CCSID預設與Windows的對應

2012年3月5日 星期一

透過JDBC存取AS400的資料

在某天上班時,逛JavaWorld時正好看到這篇,發現到內有存取AS400的JDBC可使用,就去google了一下,找到了JTOpen這個IBM提供的tool...以下為實做與說明
自上述連接中下載 ,並解壓縮。裡面會有個lib的folder...這次需要的是jt400.jar這個jar 檔
將這個jar 檔放入專案中的Build path中
再來只要import進來

import com.ibm.as400.access.AS400JDBCDriver;

下面是連接AS400的語法

DriverManager.registerDriver(new AS400JDBCDriver());
Class.forName("com.ibm.as400.access.AS400JDBCConnection");
Connection conn = DriverManager.getConnection("jdbc:as400://"+YOUR AS400 IP, UserName, Password);

做完上述就能取得Connection,接下來就是和平常使用資料庫控制的方式一樣

其實設定的方式和一般資料庫的設定沒什麼差別,比較特別的地方應該是在對於table 控制的名稱 說明如下:
在AS400中
Library / Filename  <=來指定一個Table

而在JTOpen中
Library . Filename  <=來指定一個Table

此外…如果要對AS400中的某個member做讀寫,必需透過alias來完成
create alias AliasName For  Library.Filename(Member) 

當然,使用完後最好drop掉…不然AS400中會多一堆DDM File