Database Access
Platform 4.5+ が必要
SQL データソースへのアクセス
Nexaweb 4.5 では、アプリケーションをデータベースに接続して次の操作を実行可能にする SQL (JDBC (Java Database Connectivity)) データサービスを提供します。
クライアント UI で、データベースからのデータを入力および変更する
データベースで、クライアント UI からのデータを入力および変更する
SQL データサービスを使用するには、次の作業を行う必要があります。
クライアントアプリケーションにデータサービス プラグインを追加する
サーバー上の nexaweb-sql.xml ファイルで次のものへの接続を作成する
特定の外部データベース
接続プール
SQL 文を次の方法で定義する。
dataRequestDefinitions で参照するために nexaweb-sql.xml ファイルで定義する
nexaweb-data.xmlファイルの dataRequestDefinitions で直接定義する
クライアント UI ファイルの埋め込みの serviceRequests で定義する
SQL データ サービスの構成
SQL データ サービスのコンフィギュレーション ファイル nexaweb-sql.xml には、次のセクションが含まれます。
コンフィギュレーション セクション | 説明 |
connectionDefinitions | クライアント アプリケーションが外部データへの SQL データ サービス リクエストを実行できるように接続を定義します。 |
dataSourceConnectionDefinition | クライアントが接続を取得できる J2EE データ ソースを定義します。J2EE データソースを使用すると、アプリケーションが JDBC オプションパッケージ javax.sql を通じて使用可能なネイティブ ドライバの接続プールを利用できるようになります。 |
statementDefinitions | サーバー上で定義された SQL 文のタイプを示します。このタイプは、アプリケーションが外部データにアクセスする際に参照によって使用できます。 |
statementHandlerDefinitions | 定義された文ハンドラを示します。このハンドラは、任意の SQL 文で文を実行した際のデータ結果を変換するために使用できます。 |
接続の定義
接続は次のように定義できます。
接続 | 説明 |
connectionDefinitions | クライアント アプリケーションが外部データへの SQL データ サービス リクエストを実行できるように接続を定義します。 |
dataSourceConnectionDefinition | クライアントが接続を取得できる J2EE データ ソースを定義します。J2EE データソースを使用すると、アプリケーションが JDBC オプションパッケージjavax.sqlを通じて使用可能なネイティブ ドライバの接続プールを利用できるようになります。 |
connectionDefinitions
connectionDefinitionタグには次の属性および子要素が含まれています。
要素 | タイプ | 説明 |
driver | 属性 | この接続で使用する driver クラスを指定します。 |
id | 属性 | この接続を識別するための ID を指定します。 |
url | 属性 | この接続でアクセスするデータベースへの URL。jdbc:subprotocol:subname の形式で指定されます。 |
properties | 子要素 | この接続のプロパティのリストを指定します。 子要素: |
例:
<connectionDefinition id="engineering" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://dgnc/engineering">
<properties>
<property name="user">Ron</property>
<property name="password">77$Lo</property>
</properties>
</connectionDefinition>
dataSourceConnectionDefinitions
dataSourceConnectionDefinition タグには次の属性が含まれています。
要素 | タイプ | 説明 |
id | 属性 | この接続を識別するための ID を指定します。 |
name | 属性 | 検索する dataSource リソースの名前。例: java:comp/env/jdbc/SalesDB |
password | 属性 | このデータ ソースとの接続を確立するために必要なパスワード。 |
username | 属性 | このデータ ソースとの接続を確立するために必要なユーザー名。 |
例:
<dataSourceconnectionDefinition id="support" name="java:comp/env/jdbc/SalesDB" password="P3aCh" username="BLame">
</connectionDefinition>
statementHandlerDefinitions の定義
文ハンドラを定義すると、文を実行した後の SQL 文の結果を処理できます。
文ハンドラは、statementHandlerDefinitionsセクションで statementHandlerDefinition タグを使用して定義します。
statementHandlerDefinition タグには次の属性が含まれています。
要素 | タイプ | 説明 |
class | 属性 | 実装クラスを指定します。 |
default | 属性 | 文 にその他の statementHandlerDefinitions が含まれていない場合、すべての SQL 文でこの statementHandlerDefinition をデフォルトとして使用するかどうかを指定します。true または false。True = この statementHandlerDefinition をデフォルトとして使用します。 |
id | 属性 | この statementHandlerDefinition を識別するための一意の ID を指定します。 |
例:
<statementHandlerDefinitions>
<statementHandlerDefinition class="statementHandler" default="false" id="NoItalics"> </statementHandlerDefinition>
<statementHandlerDefinition class="statementHandler" default="true" id="LowCase"> </statementHandlerDefinition>
</statementHandlerDefinitions>
statementDefinitions の定義
SQL 文を nexaweb-sql. xmlコンフィギュレーションファイルで定義すると、サーバー上でこれらを利用できるようになります。さらに、これらの SQL 文は nexaweb-data.xmlファイルで定義された dataRequestDefinitions で参照できます。
statementDefinitions は、nexaweb-sql.xmlコンフィギュレーションファイルの statementDefinitions セクションで作成します。
SQL データサービスには、次のタイプの SQL 文が用意されています。
タグ | 説明 |
<sqlStatement> | 指定した接続に対して実行する文字列が含まれる、汎用の SQL 文を指定します。 |
<sqlSelect> | 指定した接続を通じて 1 つのテーブルにクエリを実行するための単純なシンタックスを指定します。 |
<sqlUpdate> | 指定した接続を通じて 1 つのテーブルに更新を実行するための単純なシンタックスを指定します。 |
<sqlInsert> | 指定した接続を通じて 1 つのテーブルに行を挿入するための単純なシンタックスを指定します。 |
<sqlDelete> | 指定した接続を通じて 1 つのテーブルから行を削除するための単純なシンタックスを指定します。 |
statementDefinition には次の要素が含まれています。
要素 | タイプ | 説明 | 文タイプ | 必須/省略可能 |
<connectionId> | 属性 | 文の実行に使用される connectionDefinition の ID。 | すべて | 必須 |
<id> | 属性 | この statementDefinition を識別するための ID を指定します。 | すべて | 必須 |
<statementHandlerId>
| 属性 | 正常に実行された後の文を処理するために使用される statementHandler の ID。指定されていない場合、データ サービスはデフォルトの文ハンドラを使用します。 | すべて | 省略可能 |
<statement> | 属性 | 実行する文。 | <sqlStatement> | 必須 |
<table> | 子要素 | 文が行を取得または更新するテーブルを指定します。 | <sqlSelect>、<sqlUpdate>、<sqlInsert>、<sqlDelete> | 省略可能 |
<columns> | 子要素 | 取得または更新する列を指定します。指定されていない場合は、すべての列が取得または更新されます。 | <sqlSelect>、<sqlUpdate>、<sqlInsert> | 省略可能 |
<where> | 子要素 | 取得または更新される行を特定する句。 | <sqlSelect>、<sqlUpdate>、<sqlDelete> | 省略可能 |
serviceRequest の SQL データソースを使用する
データリクエストで使用するため、次の方法で SQL ステートメントを特定することができます :
位置 | 説明 |
nexaweb-sql.xml | サーバー側の nexaweb-sql.xml 設定ファイルのstatementDefinitions セクションでステートメントを特定する。その後 nexaweb-data.xml ファイルの dataRequestDefinition のserviceResourceReference で参照する。(最終的に、クライアント UIファイルの serviceRequest の dataRequestDefinitionを参照) |
nexaweb-data.xml | nexaweb-data.xml ファイルの dataRequestDefinition のserviceResourceDefintion のステートメントを特定する。(その後クライアントUIファイルの serviceRequest の dataRequestDefinition を参照) |
| embeddedServiceRequest のステートメントをクライアント UI ファイルに直接指定する |
クライアントサイドのデータリクエストPlug-in 例
次の例は UI ファイルで SQL ステートメントを定義することができる2つの方法を示しています。
例
<dr:dataRequest id=”getDepartmentRequest”
target=”dataSource://myDocumentSource”
xmlns:dr=”http://nexaweb/com/dataService/request”>
<ds:dataRequestDefinition xmlns:ds=”http://nexaweb/com/dataService”>
<ds:dataServiceRequest>
<jdbc:jdbcStatement connectionId="engineering"
xmlns:jdbc=”http://nexaweb/com/dataService/jdbc”>
<jdbc:statement>
SELECT * FROM department where dept={0}
</jdbc:statement>
</ jdbc:jdbcStatement>
</ds:dataServiceRequest>
</ds:dataRequestDefinition>
</dr:dataRequest>Shortcut Example
The following example of defining an SQL statement in a cient UI file is equivalent to the preceding In-line example.
<jdbc:jdbcStatement id=”getDepartmentRequest” connectionId="engineering"
target=”dataSource://myDocumentSource”
xmlns:jdbc=”http://nexaweb/com/dataService/jdbc”>
<statement>SELECT * FROM department where dept={0}</statement>
</jdbc:jdbcStatement>
<jdbcService xmlns=http://nexaweb.com/dataService/sql>
<connectionDefinitions>
<connectionDefinition id="engineering" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://dgnco/engineering">
<properties>
<property name="user">venutian</property>
<property name="password">venutian</property>
</properties>
</connectionDefinition>
<connectionDefinition id="salesdata" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://dgnco/sales?user=venutian&password=venutian"/>
</connectionDefinitions>
<statementHandlerDefinitions>
</statementHandlerDefinitions>
<statementDefinitions>
<sqlStatement id="getCustomers" connectionId="salesdata">
<statement>select * from customers</statement>
</jdbcStatement>
</statementDefinitions>
</jdbcService>