|
この節では、データ サービスにアクセスするために SQL の使用方法、ALDSP JDBC ドライバの設定方法と使用方法について説明します。この章の内容は以下のとおりです。
Crystal Reports、Business Objects、Microsoft Access、Microsoft Excel など多くのレポート ツールから SQL を使用してデータにアクセスできます。SQL は、その他のコンテキストでも有用です。たとえば、Java アプリケーションでは SQL を使用してデータにアクセスできます。また、Data Tools Platform (DTP) または SQL Explorer などの開発ツールを使用してアド ホック SQL クエリを実行できます。
ALDSP JDBC ドライバにより、JDBC および ODBC のクライアントは、データ サービスから SQL を使用して情報にアクセスすることができます。したがって、ALDSP JDBC ドライバは、多くのデータベース アプリケーションとレポート ツールからのアクセスを有効にして ALDSP 統合レイヤの柔軟性を増加します。
クライアントに対しては、ALDSP 統合レイヤは、テーブルまたはストアド プロシージャから構成される各データ サービスのリレーショナル データベースのようになります。内部的に、ALDSP は、SQL クエリを XQuery に変換します。図 5-1 には、ALDSP JDBC ドライバを使用したデータへの SQL アクセスを示します。
図 5-1 に示すとおり、ソース データは、ALDSP データ サービスを使用して統合し、変換できます。ソース データ自体は、リレーショナル データベース、Web サービスなどの企業規模の異種ソースから取得できます。
その後、SQL クエリを使用してアクセス可能なリレーショナル データソースとしてデータサービス処理を公開できるようになります。これにより、JDBC クライアントは、ALDSP を使用して統合されたデータにアクセスできます。
ALDSP JDBC ドライバは、データ サービスに次の制約を課します。
ALDSP JDBC ドライバは、JDK 1.5x の java.sql.* インタフェースを実装し、JDBC インタフェースを介した ALDSP サーバへアクセスを実現します。ドライバには以下の機能があります。
ALDSP JDBC ドライバを使用し、JDBC ドライバ レベルで設定したアクセス権に基づき SQL を通じてアクセスしたメタデータをコントロールできます。このアクセス制御により、ユーザは、アクセスを許可されたテーブルおよびプロシージャのみを見ることができます。
ただし、この機能を使用するには、アクセス制御を確認するために ALDSP コンソールのコンフィグレーションを設定する必要があります。詳細は、『管理ガイド』の「Data Services Platform リソースの保護」を参照してください。
ALDSP では、データベースから取得したデータは、データ ソースと処理の形式で表示されます。表 5-1 に相当する用語を示します。
たとえば、getAll()
処理の SQLHowTo
プロジェクトおよび EmpInfo.ds
データ サービスがある場合、これは、SQL マッパーを使用して、JDBCdemo.empData.empinfo
として公開できます。JDBC ドライバでは、empData
スキーマおよび JDBCdemo
カタログの empinfo
というテーブルが表示できるようになります。
この節では、ALDSP JDBC ドライバでの JDBC および SQL のサポートについて説明します。
ALDSP JDBC ドライバは、JDK 1.5x に指定したとおり、java.sql
パッケージから次のインタフェースを実装します。
ALDSP JDBC ドライバは、次のメソッドをサポートします。
この節では、ALDSP JDBC ドライバの SQL-92 サポートの概要について説明します。次のトピックが含まれます。
ALDSP JDBC ドライバは、SQL-92 SELECT 文をサポートしています。INSERT、UPDATE、DELETE 文は、サポートされていません。また、ドライバは、DDL (Data Definition Language) 文をサポートしていません。
ALDSP JDBC ドライバは、データへのアクセスおよびデータの処理に使用できる機能をサポートしています。この節では、次のサポート対象の ALDSP SQL-92 クエリ言語の関数について説明します。
ALDSP JDBC ドライバは、表 5-3 に示す数値関数をサポートしています。
ALDSP JDBC ドライバは、表 5-4 に示す文字列関数をサポートしています。
|
||
ALDSP JDBC ドライバは、表 5-5 に示す日付関数をサポートしています。
ALDSP JDBC ドライバは、表 5-6 に示す集約関数をサポートしています。
|
||
|
ALDSP JDBC ドライバは、表 5-7 に示すように、標準 JDBC API 検索パターンをサポートします。
注意 : | JDBC メータデータ API の詳細については、次のリンクの Java マニュアルを参照してください。 |
default_catalog はカタログ 1 で default_schema はスキーマ 1 と仮定すると、表 5-8 は共通する一致パターンを表します。
ALDSP JDBC ドライバは、テーブル パラメータを SQL FROM 句に追加できるようにして標準 SQL-92 パラメータ モデルを拡張します。たとえば、SQL において、パラメータ (強調表示) のリストをクエリに指定する必要が生じる場合があります。
以下のクエリでは、JDBCdemo.empData.empinfo
は、顧客テーブル全体です。
SELECT emp.empid, emp.name, emp.salary
FROM JDBCdemo.empData.empinfo emp
WHERE emp.empid in (?, ?, ?, ...)
or emp.name in (?, ?, ?, ...)
パラメータ数が異なる場合、それぞれにクエリを指定する必要があります。テーブル パラメータでは、これに代わる手段として、クエリに値のリスト (リストの長さは可変) を指定できます。テーブル パラメータ (強調表示) を使用するクエリを以下に示します。
SELECT emp.empid, emp.name, emp.salary
FROM JDBCdemo.empData.empinfo emp
WHERE emp.empid in (SELECT * FROM ? as emp(empid))
or emp.name in (SELECT * FROM ? as emp(empname))
テーブル パラメータは、同一のメカニズムによりパラメータとして指定されます。適切なテーブル名の代わりに疑問符 (「?」) が使用されています。
注意 : | 単一カラム付きのテーブルのみテーブル パラメータとして渡すことができます。カラムを複数指定した場合は、例外が送出されます。 |
テーブル パラメータの使用について、「テーブル パラメータの使用」を参照してください。
ALSDSP JDBC ドライバを使用するとき、各接続は、1 つの ALDSP データスペースを示します。表 5-9 には、SQL 言語機能に適用する ALDSP JDBC ドライバの制限項目を示します。
この節では、データ サービスにアクセスする前に行う必要があるタスクについて説明します。次のトピックを含みます。
SQL を使用してデータ サービスにアクセスするには、まず、AquaLogic Data Services Platform 対応のプロジェクトのデータ サービス処理を SQL オブジェクトとしてパブリッシュする必要があります。SQL オブジェクトには、テーブル、ストアド プロシージャ、関数などがあります。
注意 : | ALDSP を通じてパブリッシュされた SQL オブジェクト名にハイフンが含まれる場合、そのオブジェクトを SQL クエリにおいて使用する際に二重引用符で囲む必要があります。たとえば、SELECT "col-name" FROM "table-name" . |
データ サービス処理を SQL オブジェクトとしてパブリッシュするには、以下の手順に従います。
データスペースのデプロイ後、ALSDSP JDBC ドライバを通じて、新たに作成された SQL オブジェクトをデータセうペースに利用できます。
ALDSP JDBC ドライバは、ldjdbc.jar
ファイルに入っています。このファイルは、BEA AquaLogic Data Services Platform のインストール後、<
ALDSP_HOME>/lib
ディレクトリに入っています。ALDSP JDBC ドライバをクライアント コンピュータで使用するには、クラスパス、クラス名、および JDBC ドライバ用の URL をコンフィグレーションする必要があります。
注意 : | JDBC ドライバをコンフィグレーションするために、JDBC ドライバと DSP 間の接続を有効にするゲートウェイ ソフトウェアが必要です。詳細については、「SQL エクスプローラを使用したデータ サービスへのアクセス」を参照してください。 |
クライアント コンピュータでドライバをコンフィグレーションするには、以下の手順に従ってください。
ldjdbc.jar
および weblogic.jar
(それぞれ、<ALDSP_HOME>/lib
および <WL_HOME>/server/lib
ディレクトリ内) をクライアント コンピュータにコピーします。ldjdbc.jar
および weblogic.jar
をクライアント コンピュータのクラスパスに追加します。 %JAVA_HOME%/jre/bin
をクライアントのパスに追加して適切なサポート パスを設定します。com.bea.dsp.jdbc.driver.DSPJDBCDriver
jdbc:dsp@<DSPServerName>:<ALDSPServerPortNumber>/<DataspaceName>
jdbc:dsp@localhost:7001/Test_DataSpace
以下の構文を使用してドライバに接続しながら、デフォルトのカタログ名およびスキーマ名を URL に設定することもできます。
jdbc:dsp@<DSPServerName>:<ALDSPServerPortNumber>/<DataspaceName>/
<catalogname>/<schemaname>
注意 : | CatalogName および SchemaName を JDBC ドライバの URL に指定しない場合は、すべてのクエリについて 3 部構成の名前を指定する必要があります。例えば、次のように指定します。 |
select * from <catalogname>.<schemaname>.CUSTOMER
logFile
プロパティを使用して、デバッグを有効にします。デバッグ情報をログするには、以下の JDBC ドライバの URL 構文を使用してください。jdbc:dsp@localhost:7001/test;logFile=c:\output.txt
この例では、ログ ファイルは c:\output.txt
に作成されます。また、デバッグ プロパティを URL とともに指定するのではなく、個別に指定することもできます。
注意 : | レポート ツールを使用して SQL クエリをビルドする場合、生成される SQL では修飾されていない JDBC 関数名が使用されます。アプリケーション開発者がデータベース関数を呼び出す場合は、デフォルトのカタログおよびスキーマ名は JDBC 接続 URL として定義する必要があります。また、単一 SQL catalog:schema ペアの場所から使用できる関数を、任意の JDBC 接続により使用することも必要です。 |
以下は、JDBC 接続のデフォルトのカタログとスキーマを定義した URL の例です。
jdbc:dsp@localhost:7001/myDataspace/myCatalog/mySchema
注意 : | デフォルトのスキーマおよびカタログ名をプロパティで指定しない場合は、default_catalog および default_schema のプロパティ フィールドで指定できます。dataspace , default_catalog または default_schema が接続プロパティおよび URL の双方に表示される場合は、URL が優先されます。 |
詳細については、「プロパティ オブジェクトを使用する接続のコンフィグレーション」または「JDBC URL における接続のコンフィグレーション」をそれぞれ参照してください。
ALDSP JDBC ドライバを通じて、SQL を使用してデータベース サービスから Java アプリケーションの情報にアクセスできます。
Java アプリケーションからデータにアクセスするには、以下の手順に従います。
詳細については、「接続の取得」を参照してください。
クエリを指定してデータソースに送信するには、PreparedStatement か CallableStatement インタフェースを使用できます。詳細については、「preparedStatement インタフェースの使用」および「CallableStatement インタフェースの使用」をそれぞれ参照してください。
JDBC クライアント アプリケーションをデプロイされた ALDSP データスペースに接続するには、ALDSP JDBC ドライバをロードして、データスペースに接続します。データベースの URL では、「dsp」をサブプロトコルとして持つデータベース識別子として ALDSP データスペース名を以下の形式で使用します。
jdbc:dsp@
<WLServerAddress>:<WLServerPort>/<DataspaceName>
(/default catalog/default schema;
param(=value1; param2=value2;)?
jdbc:dsp@localhost:7001/Test_DataSpace
ALDSP JDBC ドライバ クラス名は以下のとおりです。
com.bea.dsp.jdbc.driver.DSPJDBCDriver
ALDSP データスペースに接続するには、次のようにプロパティオブジェクトを使用します。
Properties props = new Properties();
props.put("user", "weblogic");
props.put("password", "weblogic");
props.put("application", "TestProjectDataSpace");
// ドライバをロードします。
Class.forName("com.bea.dsp.jdbc.driver.DSPJDBCDriver");
// 接続を取得します。
Connection con = DriverManager.getConnection("jdbc:dsp@localhost:7001",
props);
または、ALDSP データスペース名、TestProjectDataSpace
を以下の文のように接続オブジェクト自体に指定することができます。
Properties props = new Properties();
props.put("user", "weblogic");
props.put("password", "weblogic");
// ドライバをロードします。
Class.forName("com.bea.dsp.jdbc.driver.DSPJDBCDriver");
// 接続を取得します。
Connection objConnection = DriverManager.getConnection(
"jdbc:dsp@localhost:7001/TestProjectDataSpace",props);
以下の文のように、JDBC ドライバの接続も、プロパティ オブジェクトを作成せずにコンフィグレーションできます。
// ドライバをロードします。
Class.forName("com.bea.dsp.jdbc.driver.DSPJDBCDriver");
// 接続を取得します。
Connection objConnection = DriverManager.getConnection(
"jdbc:dsp@localhost:7001/TestProjectDataSpace;logFile=
c:\output.txt; ", <username>, <password>);
preparedQueryWithParameters
メソッドを使用すると、以前に取得した接続オブジェクト (conn
) を使用して、クエリを JDBC データソースに指定できます。接続オブジェクトは、ALDSP をホストする WebLogic Server への java.sql.Connection
インタフェースを通じて取得されます。
注意 : | パラメータ化しないクエリの場合も、同様に preparedStatement を作成できます。statement は、同じ方法で使用されます。 |
このクエリでは、SQLHowTo
プロジェクトの EmpInfo.ds
データサービス内の getAll()
データサービス関数は、JDBCdemo.empData.empinfo
への SQL マッパーを使用してマッピングされます。
public ResultSet preparedQueryWithParameters(Connection conn) throws
java.sql.SQLException {
PreparedStatement ps = conn.prepareStatement("SELECT *
FROM JDBCdemo.empData.empinfo emp WHERE emp.salary >= ?");
ps.setInt(1,275000);
ResultSet rs = ps.executeQuery();
return rs;
}
SELECT クエリでは、JDBCdemo
は、カタログ名、empData
は、スキーマ名、および empinfo
は、テーブル名です。
注意 : | データ サービス操作の SQL オブジェクトへのマッピングの詳細については、「データ サービス操作のパブリッシュ」を参照してください。 |
デプロイされた ALDSP がサーバに接続した後は、パラメータ化されたデータ サービス関数の呼び出しを使用し、データ サービス関数を呼び出してデータを取得できます。
以下の例では、(java.sql.Connection
インタフェースを通じて取得した ALDSP サーバへの接続が conn
である) パラメータ付きの格納されたクエリの呼び出しを示します。文では、getBySalary
というストアと クエリは、275000
値付きパラメータを渡して呼び出されます。
public ResultSet storedQueryWithParameters(Connection conn) throws
java.sql.SQLException {
CallableStatement ps =
conn.prepareCall("call JDBCdemo.empData.getBySalary(?)");
ps.setInt(1,275000);
ResultSet rs = ps.executeQuery();
return rs;
}
注意 : | prepareCall メソッドを以下のように使用することもできます。 |
conn.prepareCall("{call JDBCdemo.empData.getBySalary(?)}");
この節では、ALDSP JDBC ドライバの高度な機能と使用について説明し、次のトピックを含みます。
この節では、ALDSP JDBC ドライバを使用して、データ サービスにテーブル パラメータの渡し方法について説明します。
データ サービスには、すべての従業員の統合された連絡情報が入っているケースを考慮します。マネージャは、欧州諸国の政府関係の顧客すべてに関する統合されたリストを持っています。データ サービスを使用して、その特定の顧客の連絡情報を取得することが目的です。
シナリオは、マネージャの従業員のリストと連絡情報を結語する必要があるのです。マネージャの従業員リストが長く、データベースを通じて利用できない状態になっている場合は、テーブル内カラムがあるものとして値のリストを渡すほうが便利です。
従業員リストは、上述の SQL では、単一カラム付きのテーブルとして渡されます。以下の句
? as emp(empid)
により、仮想のテーブル値 (emp) および仮想のカラム名 (empid) が用意されています。
注意 : | 定義されたテーブル名/カラム名が定義されていなく、テーブル名/カラム名の予期しない衝突がある可能性があるので、すべてのテーブル パラメータのエリアスを割り当てる必要があります。 |
ALDSP JDBC ドライバは、その TableParameterdriver クラスを通じてデータ サービスにテーブル パラメータを渡します。このクラス (コード リスト 5-1 にその全体を表示) は、テーブル パラメータ全体と、それが表す行を示します。
public class TableParameter implements Serializable
/**
* コンストラクタ
*
* @schema テーブル パラメータのスキーマ
*/
public TableParameter(ValueType[] schema);
/**
* 新しい行を作成し、テーブル行のリストに追加します。
* table parameter
*/
public Row createRow();
/**
* このテーブル パラメータの行を取得します。
*/
public List/*Row*/ getRows();
/**
* このテーブル パラメータのスキーマを取得します。
*/
public ValueType[] getSchema();
/**
* テーブル パラメータの行を表します。
*/
public class Row implements Serializable {
/**
* 指定したカラムに値を設定します。
* @param colIdx the index of the column to set, always 1
* @param val the value for the column
* @exception if index is out of bounds
*/
public void setObject(int colIdx,Object val) throws SQLException;
Object getObject(int colIdx);
}
以下の手順は、TableParameter インスタンスの作成とそのインスタンスにデータを入力する方法を示します。
インタフェースを使用して、 JDBC を通じて、任意の他のパラメータと同じ様にテーブルパラメータを渡すことができます。
インタフェースを使用して、テーブル パラメータを渡すには、以下の手順に従います。
PreparedStatement ps = c.prepareStatement("SELECT * " +
"FROM ? as EMP(empid), JDBCdemo.empData.contact CONTACT " +
"WHERE CONTACT.empid = EMP.empid AND CONTACT.zip=?");
ps.setObject(2,"98765");
ValueType[] tableType = new ValueType[1];
tableType[0] = ValueType.REPEATING_INTEGER_TYPE;
TableParameter p = new TableParameter(tableType);
String empidlist = FileUtils.slurpFile("empidlist.txt");
StringTokenizer empids = new StringTokenizer(empidlist,"\n");
while(empids.hasMoreTokens()) {
TableParameter.Row r = p.createRow();
r.setObject(1,new Integer(empids.nextToken()));
}
ps.setObject(1,p);
ps.setObject(1,p);
テーブル パラメータの使用例を以下に概説します。サポートされる JDBC コードは、コード リスト 5-2 リストに示します。
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.Driver;
import java.util.Properties;
import java.util.StringTokenizer;
import com.bea.ld.sql.types.ValueType;
import com.bea.ld.sql.data.TableParameter;
import weblogic.xml.query.util.FileUtils;
public class TableParameterTest {
/**
* ALDSP JDBC ドライバに接続して、それを返します。
*/
protected static Connection connect() throws Exception {
// JDBC ドライバを探します。
Class.forName("com.bea.dsp.jdbc.driver.DSPJDBCDriver");
Driver driver =
DriverManager.getDriver("jdbc:dsp@localhost:7001");
if(driver == null)
throw new IllegalStateException("Unable to find driver.");
//ドライバへの接続プロパティを設定します。
Properties props = new Properties();
props.setProperty("user", "weblogic");
props.setProperty("password", "weblogic");
props.setProperty("application", "SQLHowTo");
// 上記のプロパティのセットを使用してドライバに接続しようとします。
Connection c =
driver.connect("jdbc:dsp@localhost:7001", props);
if(c == null)
throw new IllegalStateException("Unable to establish a
connection.");
return c;
}
/**
* システム アウトに結果のセットを印刷します。
* @param rs 印刷する結果のセット
*/
protected static void printResultSet(ResultSet rs)
throws Exception{
while(rs.next()) {
for(int i = 1; i < rs.getMetaData().getColumnCount()+1; i++) {
rs.getObject(i);
System.err.print(rs.getObject(i) + " ");
}
System.err.println();
}
rs.close();
}
public static void main(String args[]) throws Exception {
Connection c = connect();
// クエリを作成します。
PreparedStatement ps = c.prepareStatement("SELECT * " +
"FROM ? as EMP(empid), JDBCdemo.empData.contact CONTACT " +
"WHERE CONTACT.empid = EMP.empid AND CONTACT.zip=?");
// 正常なパラメータを作成します。
ps.setObject(2,"98765");
// テーブル パラメータを作成します。
ValueType[] tableType = new ValueType[1];
tableType[0] = ValueType.REPEATING_INTEGER_TYPE;
TableParameter p = new TableParameter(tableType);
// ファイルの値からテーブル パラメータの行数を作成します。
String empidlist = FileUtils.slurpFile("empidlist.txt");
StringTokenizer empids = new StringTokenizer(empidlist,"\n");
while(empids.hasMoreTokens()) {
TableParameter.Row r = p.createRow();
r.setObject(1,new Integer(empids.nextToken()));
}
ps.setObject(1,p);
// クエリを実行し、結果を印刷します。
ResultSet rs = ps.executeQuery();
printResultSet(rs);
}
}
表 5-10 には、ALDSP JJDBC ドライバではサポートされているテーブル パラメータ ValueTypes を示します。
複数のリレーショナル データベース管理システムでは、SQL 文に直接埋め込みできる PL/SQL など他の言語を使用して定義されたユーザ定義、カスタム関数で組み込まれた標準 SQL 関数を拡張する方法があります。
これらの組み込まれた関数またはカスタム関数をライブラリを通じて ALDSP に登録すると、データ サービスによってデータベースに利用できるようになります。関数を登録された後、ALDSP JDBC ドライバに送信する SQL 文に使用できます。以下の例では、カスタム関数、myLower()
の SELECT 文への使用を示します。
select * from CUSTOMER where ?= myLower( LAST_NAME )
ALDSP では、データベース固有またはユーザ定義関数を利用できるようにするには、以下の条件に満たしている必要があります。
myFunction(arg1, arg2)
を使用して、少なくとも 1 つの引数を受け入れる必要があります。この引数は、関数が定義されたデータ ソースからの引数である必要があります。ただし、残りの引数は、web サービスなど別の型のデータ サービスからの定数または引数である場合があります。TRIM( TRAILING ' ' FROM $column)
という形式の関数をカスタム データベース関数としてサポートしていません。SYSDATE
、ROWNUM
または同一のカラムをカスタム データベース関数としてサポートしていません。
SQL ベースのアプリケーションおよび ODBC-JDBC ブリッジを通じて ALDSP JDBC ドライバに接続アプリケーションを使用してデータ サービスにアクセスできます。この節では、データ サービスにアクセスするための SQL および ODBC ベースのアプリケーションのコンフィグレーション方法について説明します。
注意 : | ALDSP JDBC ドライバは、Eclipse Data Tools Platform (DTP) プラグインでも使用できます。DTP を使用するには、次のリンクの DTP ソフトウェアをダウンロードします。 |
注意 : | http://wiki.eclipse.org/index.php/Getting_Started_with_DTP |
ALDSP JDBC ドライバを Eclipse SQL エクスプローラで使用すると、データ サービスにアクセスできます。この節では、ALDSP JDBC ドライバを使用するための SQL エクスプローラの使用方法および接続設定の指定方法について説明します。この節では、Eclipse で web サーバとデータスペースがすでに定義されていることを前提としています。
注意 : | SQL エクスプローラは、ストアド プロシージャをサポートしていないので、ALDSP JDBC ドライバを通じてストアド プロシージャとして公開されたデータ サービスは SQL エクスプローラで表示されません。詳細については、次の場所にある Eclipse SQL エクスプローラの Web サイトを参照してください。 |
SQL エクスプローラを使用するには、以下の手順に従ってください。
com.bea.dsp.jdbc.driver.DSPJDBCDriver
データベース構成およびデータベース詳細のウィンドウでデータが表示されます。
jdbc:dsp@<DSPServerName>:<DSPServerPortNumber>/<DSPDataspaceName>
/<Your_CatalogName>/<Your_SchemaName>
ODBC JDBC ブリッジを使用して非 Java アプリケーションから ALDSP JDBC ドライバに接続できます。この節では、ALDSP JDBC ドライバに接続するための OpenLink ODBC-JDBC ブリッジのコンフィグレーション方法について説明します。
Openlink ODBC-JDBC ドライバを使用して ALDSP JDBC ドライバとのインタフェースをとることで、ALDSP データスペースと Crystal Reports、Business Objects XI、Microsoft Access 2003、Microsoft Excel 2003 などのクライアント アプリケーションとの間でのクエリが可能になります。
OpenLink ブリッジを使用するには、ブリッジをインストールし、ブリッジを使用するシステム DSN を作成する必要があります。その 2 つのタスク用の手順を以下に示します。
OpenLink ODBC-JDBC-Lite のインストールについては、OpenLink Software download ページの Single-Tier (Lite Edition) ODBC to JDBC Bridge Driver (Release 6.0) for use on Windows systems を参照してください。ページにアクセスするには、次のリンクをクリックします。
http://download.openlinksw.com/download/login.vsp?pform=2&pfam=1&pcat=1&prod=odbc-jdbc-bridge-st&os=i686-generic-win-32&os2=i686-generic-win-32&release-dbms=6.0-jdbc
警告 : | Windows プラットフォームでは、インストール前にユーザの CLASSPATH の値を保存してください。 |
ldjdbc.jar
および weblogic.jar
) が CLASSPATH に 入っていることを確認します。一般的な CLASSPATH は、以下のようになります。<ALDSP_HOME>/lib/ldjdbc.jar;
<
WL_HOME>
/server/lib/weblogic.jar;
<ALDSP_HOME>/%javaroot%/jre/bin/server
ディレクトリに必要な jvm.dll
が含まれるようにシステム パスを更新します。 注意 : | ファイル名 jvm.dll をシステム パスに含めないでください。 |
com.bea.dsp.jdbc.driver.DSPJDBCDriver.
jdbc:dsp@<machine_name>:<port>/<dataspace_name>/<catalog_name>/
<schema_name>
この節では、ALDSP ODBC-JDBC ドライバを使用して以下のレポート ツールのコンフィグレーション方法について説明します。
注意 : | スクロール可能なカーソルが ODBC JDBC ブリッジによって実装されない場合、一部のレポート ツールでは、複数の SQL 文の実行命令が出されて、スクロール可能なカーソルがエミュレートされます。一部のドライバではスクロール可能なカーソルが実装されないため、レポート ツールにより複数の SQL 文が発行されます。これにより、パフォーマンスに影響する場合があります。 |
この節では、ALDSP JDBC ドライバに Crystal Reports を接続するステップを解説し、ALDSP のインストールにより使用できる標準のコンフィグレーション ファイルについて説明します。ALDSP とともに Crystal Reports を使用する際の制約についても説明します。
Crystal Reports を ALDSP とともに使用する前に、デフォルトの Crystal Reports のコンフィグレーション ファイルである CRConfig.xml
を変更し、Crystal Reports により JDBC を通じてデータ サービスにアクセスできることを確認する必要があります。コンフィグレーション ファイルは、次のディレクトリに格納されています。
<Drive>\Program Files\Business Objects\Common\3.5\java
変更されたサンプルの CRConfig.xml
ファイルと関連付けられる CR_Readme.txt ファイルは以下の場所に入っています。
<ALDSP_HOME>/samples/ReportingTools/config/Crystal Reports
CR_Readme.txt ファイルには、既存の Crystal Reports のインストールに DSP 固有のルールの適用方法および CRConfig.xml
ファイルの変更方法があります。
Crystal Reports を使用してデータ サービスにアクセスする前に、以下を考慮する必要があります。
この節では、以下が正常に完了していることを前提としています。
http://diamond.businessobjects.com/node/432
CRConfig.xml
ファイルが変更されている。 (「Crystal Reports のコンフィグレーション」を参照)、
Crystal Reports を JDBC ドライバに接続し、データにアクセスしてレポートを生成するには、以下の手順に従います。
Business Objects により Universe を作成し、指定した Universe に基づくレポートを生成することができます。Universe の作成が不要な Business Objects に対してパススルー SQL クエリを実行することもできます。
この節では、Business Objects をコンフィグレーションし、ALDSP JDBC ドライバにアクセスする方法について説明します。この節の内容は以下のとおりです。
2 つの Business Objects コンフィグレーション ファイル、odbc.prm
および odbc.sbo
は、Business Objects の標準インストールにより、用意されています。
Business Objects をインストールする時に、これらのファイルが以下の場所にコピーされます。
<Business_Objects_Home>/BusinessObjects Enterprise 11.5/
win32_x86/dataAccess/connectionServer/odbc
ALDSP インストールには、これらのコンフィグレーションファイルのサンプルおよびそれに関連する BO_Readme.txt ファイルがあります。これは、次の場所にあります。
<ALDSP_HOME>/samples/ReportingTools/config/BusinessObjects
Business Objects のコンフィグレーション ファイルを変更するには、readme ファイルにある指示に従います。
ヒント : | ALDSP において、Business Objects を使用する前に、含まれたコンフィグレーション ファイルを使用して、JDBC を通じてデータ サービスにアクセスできるかどうかを確認します。 |
表 5-11 は、ALDSP JDBC ドライバを使用してデータにアクセスする際に Business Objects コンフィグレーション ファイルへの制約の一部と、コンフィグレーション変更が必要な部分を表しています。
Business Objects を使用してデータ サービスにアクセスする前に、以下を考慮する必要があります。
com.bea.ld.sql.compiler.ast.SQLTypeCheckingException: Invalid table reference.No such table null.Xtreme.CUSTOMER found.
at
com.bea.ld.sql.compiler.ast.TableRSN.inferSchemaAndCheck(Lcom/bea/ld/
sql/context/SQLContext;Lcom/bea/ld/sql/types/SchemaIndex;)V(TableRSN.java:149)
OpenLink のコンフィグレーションの詳細については、「OpenLink ODBC JDBC ブリッジを使用した ALDSP クライアントへの接続」を参照してください。Business Objects は、AquaLogic Data Services Platform JDBC ドライバによりサポートされる XML 型のすべて (以下を除き) をサポートする。
OpenLink ODBC JDBC ブリッジのコンフィグレーションの詳細については、「OpenLink ODBC-JDBC ブリッジを使用した ALDSP クライアントへの接続」を参照してください。
選択した universe をデフォルト universe に設定するには、[デフォルト universe として設定する] ダイアログバックスの次にあるチェック ボックスを選択します。[完了] をクリックします。
左ペンで、テーブルおよびそのフィールド (カラム) を展開すると、そのリストが表示されます。
Desktop Intelligence アプリケーションを使用して pass-through クエリを実行できます。
pass-through クエリを実行するには、以下の手順に従います。
注意 : | SELECT リストの 4 部の名 (<catalogname>.<scemaname>.<tablename>.<columnname> など) を指定する必要がある場合は、FROM 句を使用するテーブルのエイリアスを定義した後、SELECT リストの 2 つの部分 <tablealias>.<columnname> のみを使用してください。ALDSP JDBC ドライバは、SELECT リスト項目から最後の 2 箇所のみを抽出し、残りを無視します。 |
SELECT E.Name FROM JDBCdemo.empData.empinfo E
JDBCdemo
は、カタログ名、empData
は、スキーマ名、empinfo
は、テーブル名、Name
は、カラム名、E
は、empinfo
のテーブルのエリアス名です。
この節は、ODJB JDBC ブリッジを通じて Microsoft Excel 2003 を ALDSP に接続するプロシージャについて説明します。この節の内容は以下のとおりです。
MS Access をブリッジに接続するには、以下の手順に従ってください。
SQL_DECIMAL
および SQL_NUMERIC
フィールドをマッピングする。この結果、Double
またはテキスト フィールドなど非厳密 (フローティング ポイント) 数値の Jet データ型へのマッピングが行われる場合があります。詳細については、以下の Microsoft のサイトを参照してください。MS Access によるこの暗黙の型変換により、MS Access を使用する ALDSP からデータを検索する際にエラーが発生します。
この節は、OpenLink を使用して、ODJB JDBC ブリッジを通じて Microsoft Excel 2003 を ALDSP に接続するプロシージャについて説明します。
MS Excel を ALDSP に接続するには、以下の手順に従ってください。
[クエリ ウィザード選択カラム] ダイアログ ボックスが表示されます。OpenLink を使用して JDBC ドライバのコンフィグレーションの詳細については、「OpenLink ODBC-JDBC ブリッジを使用した ALDSP クライアントへの接続」を参照してください。
生成された SQL 文字列を Excel に渡すときに、Excel がエイリアスの周囲に一重引用符を挿入する場合があり、その結果 ALDSP JDBC ドライバから例外が発生することがあります。以下に例を示します。
SELECT Sum(EMP.SALARY) AS 'Salary Cost' FROM JDBCdemo.empData.empinfo emp
クエリは、生成後に編集できますが、この問題に対応するためのパッチを Microsoft からインストールすることもできます。この問題の詳細およびパッチにアクセスする現行の URL を以下に示します。