2017-09-23 33 views
0

我編寫了一個在iSeries AS400上執行的Java程序。在該程序中,我使用JDBC連接到同一臺機器上從文件中查詢數據,如AS400用於運行時文件的Java集合庫

select * 
from xyzcapad.myFile 
where lastName = 'Max' 

同一個文件名和結構(沒有數據!)在多個庫中存在,因爲我們對我們的AS400多個環境並且每個都有其自己的默認庫。

因此,當我現在啓動程序並在使用庫xyzcapad的環境中運行它時,一切正常。但是,如果我在另一個環境中運行它,如何告訴我的程序使用該表的另一個默認庫?

回答

1

當您使用JDBC,你可以使用SET SCHEMA語句來選擇這樣的庫:

set schema xyzcapad; 

然後執行SQL這樣的:

select * 
    from myFile 
    where lastName = 'Max'; 

通知表名是不合格。在這種情況下,它將使用上面使用set schema聲明設置的默認模式。

編輯

這裏我最後的代碼,得到它的工作:

public void connectAS400(){ 
     as400 = new AS400("my.company.com","user","password"); 
     AS400JDBCDataSource datasource = new AS400JDBCDataSource(as400); 

//  datasource.setLibraries("xyzcapad"); 
     datasource.setTranslateBinary(true); 
     datasource.setNaming("system"); 
     try { 
      connection = datasource.getConnection(); 
     } catch (Exception e) { 
      System.err.println(e); 
     } 

    } 
+0

謝謝,但實際上我需要的東西來檢索目前我在首位什麼樣的環境信息。我認爲,當使用AS400對象和它的數據源時,API會自動處理:) –

+0

我正在建議'system'命名,默認使用庫列表,但後來我看到了你的編輯並接受了它。 – jmarkmurphy