アプリケーション開発ガイド (.net data...

145
J2UL-1605-06Z0(00) 201412Windows/Solaris/Linux FUJITSU Software Symfoware Server V11.1.1 アプリケーション開発ガイド (.NET Data Provider)

Upload: others

Post on 06-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

J2UL-1605-06Z0(00)2014年12月

Windows/Solaris/Linux

FUJITSU SoftwareSymfoware Server V11.1.1

アプリケーション開発ガイド(.NET Data Provider編)

Page 2: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

まえがき

本書の目的

本書は、Symfoware .NET Data Providerを利用して、Symfoware Serverのデータベースにアクセスする方法について説明しています。

本書の読者

本書は、Symfoware .NET Data Providerを使用して、アプリケーションを開発する方を対象にしています。

本書を読むには、以下に示す技術および知識が必要です。

・ Symfoware/RDBに関する知識

・ SQLに関する知識

・ オブジェクト指向のプログラミングに関する一般知識

・ .NET Framework、およびADO.NETに関する一般知識

本書の構成

第1章 アプリケーション開発の概要

Symfoware .NET Data Providerを利用したアプリケーション開発の概要について説明しています。

第2章 アプリケーションの設計

Symfoware .NET Data Providerを利用したアプリケーションの設計時に考慮すべき点について説明しています。

第3章 アプリケーションの作成

Symfoware .NET Data Providerを利用したアプリケーションの作成方法について説明しています。

第4章 アプリケーションのデバッグとチューニング

Symfoware .NET Data Providerを利用したアプリケーションのデバッグおよびチューニング方法を説明しています。

第5章 APIリファレンス

Symfoware .NET Data Providerで提供するAPIについて説明しています。

付録A サンプルプログラム

Symfoware .NET Data Providerを利用したサンプルプログラムを記載しています。

付録B 接続文字列に指定可能なキーワード

接続文字列に指定可能なキーワードについて説明しています。

付録C 使用可能SQL文一覧

Symfoware .NET Data Providerを利用したアプリケーションで指定可能なSQL文について説明しています。

付録D SDT.NETのアドオン登録

SDT.NETのアドオン登録の方法を説明しています。

付録E QueryBuilder

QueryBuilderについて説明しています。

付録F SNDPコード生成ツールでの自動生成を利用する場合

SNDPコード生成ツールでコードを自動生成する手順について説明しています。

付録G SchemaTable

SymfowareDataReader の各列のメタデータについて説明しています。

本書の読み方

本書は、.NET Framework、およびADO.NETに関する知識のある方を対象としているため、一般的な知識については省略していま

す。また、ADO.NETに準拠した機能については、一部、説明を省略しているところがあります。

- i -

Page 3: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

本書をご覧になる際は、Microsoft社のMSDNライブラリと合わせてお読みください。

関連マニュアル

本書に関連するマニュアルは以下のとおりです。

・ Microsoft社のMSDNライブラリ

・ Microsoft社のVisual Studioのマニュアル

・ NetCOBOL使用手引書

輸出管理規制について

本ドキュメントを輸出または第三者へ提供する場合は、お客様が居住する国および米国輸出管理関連法規等の規制をご確認のうえ、

必要な手続きをおとりください。

出版年月および版数

平成26年 12月 第6版

平成25年 5月 第5版

平成24年 11月 第4版

平成24年 10月 第3版

平成24年 8月 第2版

平成24年 7月 初版

著作権

Copyright 2007-2014 FUJITSU LIMITED

- ii -

Page 4: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

目 次

第1章 アプリケーション開発の概要.............................................................................................................................................11.1 Symfoware .NET Data Providerの概要.............................................................................................................................................. 11.2 Symfoware .NET Data Providerの利用形態...................................................................................................................................... 11.3 Symfoware .NET Data Providerの機能.............................................................................................................................................. 31.4 動作環境............................................................................................................................................................................................. 31.5 アプリケーション開発作業の流れ....................................................................................................................................................... 3

第2章 アプリケーションの設計.................................................................................................................................................... 62.1 コネクション.......................................................................................................................................................................................... 6

2.1.1 コネクションの接続方法............................................................................................................................................................... 62.1.2 コネクションプーリング.................................................................................................................................................................. 7

2.2 文字コード系の決定............................................................................................................................................................................82.3 トランザクション.................................................................................................................................................................................... 8

2.3.1 トランザクションのアクセスモード................................................................................................................................................. 82.3.2 独立性水準.................................................................................................................................................................................. 92.3.3 トランザクションの有効範囲......................................................................................................................................................... 92.3.4 分散トランザクション..................................................................................................................................................................... 9

2.3.4.1 アプリケーションの作成方法.................................................................................................................................................92.3.4.2 アプリケーション作成時の注意事項...................................................................................................................................112.3.4.3 アプリケーション運用時の注意事項...................................................................................................................................12

2.4 データ型の対応関係.........................................................................................................................................................................132.5 データ操作........................................................................................................................................................................................ 16

2.5.1 データ検索................................................................................................................................................................................. 162.5.2 データ更新................................................................................................................................................................................. 17

2.6 通信データを暗号化する場合の設定..............................................................................................................................................18

第3章 アプリケーションの作成.................................................................................................................................................. 193.1 アプリケーションの作成方法.............................................................................................................................................................19

3.1.1 コーディング方法の種類............................................................................................................................................................193.2 データ操作の自動生成.....................................................................................................................................................................19

3.2.1 Symfoware .NET Data Providerライブラリ参照の追加..............................................................................................................203.2.2 TableAdapterの作成...................................................................................................................................................................213.2.3 TableAdapterの追加...................................................................................................................................................................27

3.2.3.1 TableAdapter 構成ウィザードによる追加............................................................................................................................273.2.3.2 サーバーエクスプローラーで表示したオブジェクトから追加.............................................................................................34

3.2.4 TableAdapterへのクエリの追加..................................................................................................................................................363.2.5 アプリケーションからのTableAdapterの利用............................................................................................................................. 403.2.6 TableAdapterメソッドの属性の一覧........................................................................................................................................... 413.2.7 TableAdapterに関する留意事項............................................................................................................................................... 42

第4章 アプリケーションのデバッグとチューニング...................................................................................................................... 434.1 アプリケーションのデバッグ...............................................................................................................................................................43

4.1.1 EventLogによる対処...................................................................................................................................................................434.2 アプリケーションのチューニング....................................................................................................................................................... 45

第5章 APIリファレンス..............................................................................................................................................................475.1 Symfoware .NET Data Providerのクラス...........................................................................................................................................475.2 サポートAPI一覧............................................................................................................................................................................... 485.3 拡張API............................................................................................................................................................................................. 58

5.3.1 SymfowareConnectionクラス...................................................................................................................................................... 585.3.2 SymfowareConnectionStringBuilderクラス................................................................................................................................ 655.3.3 SymfowareTransactionクラス......................................................................................................................................................675.3.4 SymfowareDataReaderクラス......................................................................................................................................................68

5.4 留意事項........................................................................................................................................................................................... 69

付録A サンプルプログラム....................................................................................................................................................... 77

- iii -

Page 5: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

A.1 サンプル実行前の準備....................................................................................................................................................................77A.2 C♯のサンプル................................................................................................................................................................................. 78

A.2.1 接続および切断........................................................................................................................................................................ 78A.2.2 SymfowareDataReaderでの参照...............................................................................................................................................79A.2.3 DataSetでの参照....................................................................................................................................................................... 80A.2.4 探索条件付きSQL文での更新................................................................................................................................................. 81A.2.5 CommandBuilderを利用した更新.............................................................................................................................................82A.2.6 ストアドプロシジャの実行.......................................................................................................................................................... 83A.2.7 トランザクション制御.................................................................................................................................................................. 84A.2.8 エラー処理.................................................................................................................................................................................85A.2.9 イベントハンドラによるメッセージの取得...................................................................................................................................87A.2.10 複数のTableAdapterオブジェクトのデータ操作を1つのトランザクションにする方法............................................................88A.2.11 名前付きパラメタでの更新...................................................................................................................................................... 89A.2.12 CommandTimeoutプロパティでの実行時間の監視...............................................................................................................90A.2.13 TransactionScopeクラスを利用した分散トランザクション制御................................................................................................ 91

A.3 Visual Basic .NETのサンプル..........................................................................................................................................................92A.3.1 接続および切断........................................................................................................................................................................ 92A.3.2 SymfowareDataReaderでの参照...............................................................................................................................................93A.3.3 DataSetでの参照....................................................................................................................................................................... 94A.3.4 探索条件付きSQL文での更新................................................................................................................................................. 95A.3.5 CommandBuilderを利用した更新.............................................................................................................................................96A.3.6 ストアドプロシジャの実行.......................................................................................................................................................... 97A.3.7 トランザクション制御.................................................................................................................................................................. 98A.3.8 エラー処理.................................................................................................................................................................................99A.3.9 イベントハンドラによるメッセージの取得.................................................................................................................................100A.3.10 複数のTableAdapterオブジェクトのデータ操作を1つのトランザクションにする方法..........................................................101A.3.11 名前付きパラメタでの更新.................................................................................................................................................... 102A.3.12 CommandTimeoutプロパティでの実行時間の監視.............................................................................................................103A.3.13 TransactionScopeクラスを利用した分散トランザクション制御.............................................................................................. 104

付録B 接続文字列に指定可能なキーワード............................................................................................................................106B.1 eventlogキーワード......................................................................................................................................................................... 108B.2 tuneparamキーワード...................................................................................................................................................................... 109

付録C 使用可能SQL文一覧.................................................................................................................................................. 120

付録D SDT.NETのアドオン登録............................................................................................................................................ 123

付録E QueryBuilder..............................................................................................................................................................124E.1 QueryBuilder使用時の注意事項................................................................................................................................................... 124

付録F SNDPコード生成ツールでの自動生成を利用する場合..................................................................................................128F.1 コードの自動生成範囲................................................................................................................................................................... 129F.2 ODBCデータソースの登録とデータ接続の作成........................................................................................................................... 129F.3 ODBCブリッジコードの生成............................................................................................................................................................130F.4 Symfoware .NET Data Providerのコードの生成............................................................................................................................ 133F.5 アプリケーションロジックの作成...................................................................................................................................................... 134

F.5.1 自動生成したコードの呼出しとコネクションの作成.................................................................................................................134

付録G SchemaTable............................................................................................................................................................ 137

索引...................................................................................................................................................................................... 139

- iv -

Page 6: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

第1章 アプリケーション開発の概要

本章では、Symfoware .NET Data Providerを利用したアプリケーション開発の概要について説明します。

1.1 Symfoware .NET Data Providerの概要

Symfoware .NET Data Providerは、Microsoftが提唱するADO.NETに準拠したデータベースアクセスコンポーネントです。SymfowareServer独自の.NET Data Providerの提供により、.NET Framework環境からSymfoware Serverへの 適なデータアクセスを保証します。

Symfoware .NET Data Provider、Symfoware Server、および.NET Frameworkの関係を以下に示します。

1.2 Symfoware .NET Data Providerの利用形態

Symfoware .NET Data Providerの利用形態には、システム規模に応じて以下のようなモデルがあります。

・ 4階層モデル

・ 3階層モデル

・ 2階層モデル

モデルごとの各階層の役割と、Symfoware .NET Data Providerが動作するサーバについて説明します。

4階層モデル

大/中規模システムを構築するユーザ向けの4階層モデルについて説明します。

図1.1 4階層モデル

- 1 -

Page 7: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

4階層モデルでは、各層における役割分担が明確になります。クライアントは、通常、Webブラウザです。Webサーバは、クライアントか

らの要求をアプリケーションサーバに引渡し、その結果のビューをクライアントに提供します。アプリケーションサーバは、Webサーバか

らの要求に応じてデータベースサーバにあるリソースとのやり取りなどの固有のビジネスロジックを実行し、その結果をWebサーバに戻

します。データベースサーバには、ユーザの資産であるデータベースが存在します。このモデルでは、Symfoware .NET Data Providerはアプリケーションサーバに存在します。

4階層モデルでは、各層で個別の機能に特化した開発が行いやすく、開発効率および保守性が高くなり再利用性の高い部品開発も

容易になります。

3階層モデル

小/中規模システムを構築するユーザ向けの3階層モデルについて説明します。

図1.2 3階層モデル

3階層モデルは、4階層モデルからアプリケーションサーバを除いた構成になります。このため中間層であるWebサーバでビジネスロ

ジックを実装する必要があり、データベースへのアクセスなど、比較的単純な要求を処理するシステムに適用されることが多くなります。

クライアントは、通常、Webブラウザです。このモデルでは、Symfoware .NET Data ProviderはWebサーバに存在します。

2階層モデル

小規模システムを構築するユーザ向けの2階層モデルについて説明します。

図1.3 2階層モデル

- 2 -

Page 8: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

2階層モデルでは、3階層モデルおよび4階層モデルにおけるWebサーバとアプリケーションサーバの機能をクライアントで提供する必

要があります。このため、2階層モデルは、単一の機能のみを処理するようなごく小規模なシステムで使用されます。このモデルでは、

Symfoware .NET Data Providerはクライアントに存在します。

1.3 Symfoware .NET Data Providerの機能

Symfoware .NET Data Providerには、ADO.NETに準拠した標準機能と、Symfoware Server専用の拡張機能があります。

ここでは、Symfoware .NET Data Providerの拡張機能の概要を説明します。

ログの取得

Symfoware .NET Data Providerでは、アプリケーションの異常時に、原因を分析するためのログを取得するEventLog機能を提供しま

す。EventLogでは、アプリケーションで指定したチューニングパラメタ値や、API単位ごとのレスポンス性能や入出力情報を取得できま

す。レスポンス性能の情報から、API単位で性能コストを算出し、アプリケーションとSymfoware Serverとの所要時間を分析することがで

きます。また、出力されたログを分析、デバッグすることで、エラー原因を確認することができます。

アプリケーションのチューニング

Symfoware .NET Data Providerでは、アプリケーションの実行時の動作環境をチューニングするためのチューニングパラメタを提供し

ます。チューニングパラメタにより、コネクションの状態を制御することができます。また、Symfoware Serverのクライアント用の動作環境

ファイルの実行パラメタを指定することができます。これにより、Symfoware Server固有の動作環境をチューニングすることができます。

1.4 動作環境

アプリケーションの開発、および運用には、以下の環境が必要です。

・ .NET Frameworkアプリケーションの開発、および動作に必要な環境

.NET Framework 2.0、.NET Framework 3.0、.NET Framework 3.5、.NET Framework 4または.NET Framework 4.5です。

・ .NET Framework環境で動作するアプリケーションの統合開発環境

Visual Studio 2005、Visual Studio 2008、Visual Studio 2010またはVisual Studio 2012が利用できます。

・ TableAdapter機能を利用する場合

Visual Studio 2005および.NET Framework 2.0、Visual Studio 2008および.NET Framework 3.5、Visual Studio 2010および.NETFramework 4、またはVisual Studio 2012および.NET Framework 4.5環境で利用してください。

接続可能なサーバは、Symfoware Server Lite Edition V10.1.1以降です。

・ SNDPコード生成ツールを利用する場合

Visual Studio 2005、Visual Studio 2008で利用してください。

利用可能な開発言語

Symfoware .NET Data Providerで利用可能な開発言語を以下に示します。

・ C#

・ Visual Basic .NET

・ COBOL(注)

注)COBOLを利用する場合、Visual Studio 2005、Visual Studio 2008、Visual Studio 2010またはVisual Studio 2012に加えて、

NetCOBOL for .NETが必要です。

1.5 アプリケーション開発作業の流れ

Symfoware .NET Data Providerを利用したアプリケーション開発作業の流れを以下に示します。

- 3 -

Page 9: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

アプリケーションの設計

Symfoware Serverにアクセスするアプリケーションを設計します。アプリケーションの設計時に、開発言語や利用するSQL文などを決定

します。Symfoware .NET Data Providerを利用した.NET Frameworkアプリケーションでは、設計時に以下のことを考慮してください。

・ コネクション情報の指定方法

・ アプリケーションとデータベースの文字コード系

・ トランザクション

・ Symfoware Serverと.NET Frameworkのデータ型の対応関係

詳細は、“第2章 アプリケーションの設計”を参照してください。

アプリケーションの作成

アプリケーションの作成には、Visual Studioを使用します。

Symfoware .NET Data Providerを利用したアプリケーションの作成は、以下の2通りの方法があります。

・ 開発者が自由にコーディングする方法

・ .NET Frameworkの規格に則ったデータ操作を自動生成する方法

- TableAdapterを利用

- データオブジェクトを利用

データ操作を自動生成する方法、および自動生成可能な範囲を確認し、作成方法を選択してください。詳細は、“第3章 アプリケー

ションの作成”を参照してください。

- 4 -

Page 10: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

また、Symfoware .NET Data ProviderのAPIの詳細は、“第5章 APIリファレンス”を参照してください。

アプリケーションのデバッグ/チューニング

アプリケーションをコンパイルしたあと、実際に実行してデバッグをしたり、性能をチューニングしたりして、アプリケーションの問題を取

り除きます。

詳細は、“第4章 アプリケーションのデバッグとチューニング”を参照してください。

- 5 -

Page 11: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

第2章 アプリケーションの設計

本章では、Symfoware .NET Data Providerを利用したアプリケーションの設計時に考慮すべき点について説明します。

2.1 コネクション

コネクションとは、Symfoware .NET Data Providerを利用するアプリケーションが、Symfoware/RDBのデータベースにアクセスするため

に結んだ接続関係のことです。アプリケーションがデータベースシステムとコネクションをもつことにより、そのデータベースシステムの

資源を操作することができます。

Symfoware .NET Data Providerを利用して、アプリケーションからSymfoware/RDBのデータベースにアクセスするためのインタフェース

には、以下があります。

・ Symfoware .NET Data Provider

・ DbProviderFactory

2.1.1 コネクションの接続方法

アプリケーションがデータベースとのコネクションを接続および切断する方法について説明します。

コネクションの接続

コネクションには、接続するデータベースへの接続先情報として以下を指定します。

DATA SOURCE=127.0.0.1;PORT=2050;USER ID=USER01;PASSWORD=PASS01;...;

(1) (2) (3) (4) (5)

(1) 接続するサーバのホスト名またはIPアドレスを指定します。ホスト名を指定する場合、 63バイト以内で指定してください。ホスト名、

またはIPアドレスは、必ず指定してください。

(2) Symfoware/RDBのポート番号を指定します。省略した場合は、初期値の2050となります。

(3) データベースに接続するユーザIDを指定します。ユーザIDは、必ず指定してください。

(4) データベースに接続するユーザIDのパスワードを指定します。パスワードは必ず指定してください。

(5) その他接続情報の指定方法の詳細は、“付録B 接続文字列に指定可能なキーワード”を参照してください。

Symfoware .NET Data Providerでの接続先情報の指定方法には、以下の2種類があります。

・ アプリケーションの構成ファイルに指定する

Visual Studioのアプリケーションの構成ファイル(Windows(R)アプリケーションではapp.config、Webアプリケーションではweb.config)に接続先情報を指定します。構成ファイルに指定した接続先情報は、アプリケーション実行時に読み込まれます。情報を変更して

もアプリケーションの再コンパイルは不要です。

・ ConnectionStringプロパティに指定する

ConnectionStringプロパティに接続先情報(キーワード)を指定します。ConnectionStringプロパティに指定した情報は、アプリケー

ションのコンパイル時にプログラムに組み込まれます。情報を変更するには、アプリケーションの再コンパイルが必要です。

接続先情報をアプリケーションの構成ファイルに指定すると、アプリケーションを再コンパイルせずに、接続先情報を変更することがで

きるため、テスト環境から運用環境へのデータベースの切替えなどが容易になります。Symfoware .NET Data Providerでは、接続先情

報をアプリケーションの構成ファイルに指定することを推奨します。

ポイント

EventLogの取得やチューニングパラメタの指定も、構成ファイル、またはConnectionStringプロパティに指定します。

チューニングパラメタの初期設定は、コネクションがプーリングされる設定となっています。

- 6 -

Page 12: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

アプリケーションがデータベースとのコネクションを接続するには、以下のメソッドで行います。

API名 オブジェクト名 メソッド名

Symfoware .NET Data Provider SymfowareConnection Open

DbProviderFactory DbConnection Open

コネクションの切断

アプリケーションがデータベースとのコネクションを切断するには、以下のメソッドで行います。

API名 オブジェクト名 メソッド名

Symfoware .NET Data Provider SymfowareConnection Close

DbProviderFactory DbConnection Close

参照

DbProviderFactory インスタンスを作成するときは、接続文字列と共にプロバイダに関する情報をそのインスタンスに渡すと、インスタン

スはあらかじめ提供された情報に基づいて厳密に型指定された正しいオブジェクトを判断して返すことができます。ユーザはデータ提

供アプリケーションに依頼しないソースを作成できます。ファクトリーモードの詳細およびデータベースとのコネクションを接続・切断す

るサンプルコードの詳細は、“A.2.1 接続および切断”、“A.3.1 接続および切断”およびMicrosoft社のMSDNライブラリを参照してくだ

さい。

2.1.2 コネクションプーリング

コネクションプーリングとは、データベースに接続する場合に、要求されるたびにコネクションを作成するのではなく、コネクションをプー

ル(保持)して再利用する機能です。

コネクションプーリングを使用することにより、同一ユーザのアプリケーションからデータベースへ接続する回数が軽減し、データベー

スへのコネクションを確立するアプリケーションの負荷が軽減できます。

Symfoware .NET Data Providerドライバの動作

Symfoware .NET Data Providerドライバのコネクションプーリング時の動作について、説明します。

コネクション接続

初回接続時は、 コネクションプーリングを使用しない場合と同じように、データベースへ接続します。次回の接続要求をした場合で

も、プールしているコネクションがすべて使用中の場合には、新規にデータベースへ接続します。

また、 大コネクション数で設定された値以上のコネクション要求が発生した場合、Symfoware .NET Data Providerドライバがエラー

を返却します。

コネクションのプール(保持)と再利用

Symfoware .NET Data Providerドライバでは、データソース接続に設定された“ 大プールコネクション数”に達するまで、コネクショ

ンを保持していきます。接続要求をした際、プールしているコネクションの中に未使用のものが存在すると、事前に接続したコネク

ションを再利用します。その後、プールしているコネクション数以上に接続要求が重なると、未使用のコネクションが存在しないた

め、新たに接続し、コネクションの接続本数は、Max Pool Sizeまたはmaxpooledconnectionsで指定した値まで増加していきます。

コネクションの切断

コネクションプーリング中は、アプリケーションでCloseメソッドを実施しても、データベースとの物理的なコネクションの切断を行いま

せん。以下の場合に、データベースとの物理的なコネクションを切断します。

- プロセスが終了する場合には、データベースとの物理的なコネクションをすべて切断します。

- 処理途中においても、同時に接続要求が重なり、 大プールコネクション数を超えるコネクションが接続された場合には、その

クローズ要求で、データベースとの物理的なコネクションを切断します( 大プールコネクション数内に収まるように調整します)。

- 7 -

Page 13: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

コネクションのライフサイクル

接続がプールに返されるときに、作成時刻と現在の時刻が比較されます、作成時刻と現在の時刻の差分(秒単位) がconnectionlifetimeで指定された値を超えていた場合は、接続が破棄されます。

詳細は、“付録B 接続文字列に指定可能なキーワード”のキーワード“connectionlifetime”を参照してください。

2.2 文字コード系の決定

Symfoware .NET Data Providerを利用したアプリケーションの文字コード系の決定に必要な情報を説明します。

・ Symfoware Serverで使用可能な文字コード系

・ .NET Frameworkアプリケーションの文字コード系

・ データベースの文字コード系との関係

・ .NET Framework環境で 適な文字コード系

Symfoware Serverで使用可能な文字コード系

Symfoware Serverで使用可能な文字コード系は、以下のとおりです。

・ EUCコード

・ シフトJISコード

・ UNICODE

Symfoware .NET Data Providerでも、上記の文字コード系を使用することができます。

.NET Frameworkアプリケーションの文字コード系

.NET Frameworkは、文字データを内部的にUNICODEで扱います。.NET Frameworkアプリケーションに対して、EUCコードやシフト

JISコードで入出力を行うと、.NET Frameworkにより文字データはUNICODEに変換されます。このため、.NET Frameworkアプリケー

ションでは、アプリケーション作成時に文字コード系の指定を意識する必要はありません。

データベースの文字コード系との関係

.NET Frameworkアプリケーションは、文字データをUNICODEでSymfoware Serverへ渡します。データベースの文字コード系が、EUCコード、またはシフトJISコードの場合、アプリケーションとデータベースの間で文字コード変換が発生します。

Symfoware Serverでは、アプリケーションとデータベースの文字コード系が異なる場合、サーバで自動的に文字コード変換を行いま

す。このため、アプリケーションの作成時に、データベースの文字コード系の指定を意識する必要はありません。

.NET Framework環境で最適な文字コード系

.NET Frameworkアプリケーションを作成する場合、アプリケーションとSymfoware Serverの双方で自動的に文字コード変換を行うた

め、特別な意識は必要ありません。

ただし、文字コード系は、コードごとに扱う文字種の数が異なるため、アプリケーションの文字コード系とデータベースの文字コード系

が異なると、文字の欠損が生じる場合があります。

.NET Frameworkを利用したシステムでは、UNICODEで文字データを流通させると、文字コード変換が発生しないため、文字コード変

換による負荷や、文字の欠損などの問題を防ぐことができます。

2.3 トランザクション

.NET Frameworkでは、非接続型データアクセスを実現しているため、通常、トランザクションを意識する必要はありませんが、SymfowareServerのトランザクションアクセスモード機能や独立性水準を利用することでトランザクションを制御することができます。

2.3.1 トランザクションのアクセスモード

トランザクションのアクセスモードでは、実行できるSQL文の種類を設定します。トランザクションのアクセスモードには、以下の2種類が

あります。

- 8 -

Page 14: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

・ READ ONLY : 読込み専用モードです。トランザクション内で参照系のSQL文のみ、実行することができます。

・ READ WRITE: 更新可能モードです。トランザクション内で参照系および更新系のSQL文を実行することができます。

トランザクションのアクセスモードの初期値は、 tuneparamキーワードのDEFAULT_ACCESS_MODEの指定により決まります。

DEFAULT_ACCESS_MODE の詳細は、 “表 B.4 tuneparam キーワードで使用可能な実行パラメタ一覧 ”のパラ メタ

“DEFAULT_ACCESS_MODE”を参照してください。

2.3.2 独立性水準

複数のトランザクションが同じ資源にアクセスする場合、何も制御を行わないと、データの矛盾が発生してしまいます。独立性水準で

は、このようなデータ矛盾が起こらないように、あるトランザクションがアクセスしているデータに対し、他のトランザクションによる参照ま

たは更新を制御します。

また、他のトランザクションが更新中の資源に対し、自トランザクションが参照または更新できるかを制御します。

トランザクション独立性水準の初期値は、 tuneparam キーワードの DEFAULT_ISOLATION の指定により決まります。

DEFAULT_ISOLATIONの詳細は、“表B.4 tuneparamキーワードで使用可能な実行パラメタ一覧”のパラメタ“DEFAULT_ISOLATION”

を参照してください。

2.3.3 トランザクションの有効範囲

トランザクションの有効範囲について、以下に説明します。

自動コミット機能

トランザクションはSQL文の操作を行ったタイミングで開始され、コミットまたはロールバックを実行することで終了します。Symfoware .NETData Providerドライバを使用するアプリケーションでは、SQL文の実行ごとに自動的にコミット処理を行う機能があります。これを自動コ

ミットと呼びます。Symfoware .NET Data Providerのデフォルトトランザクション管理モードは自動コミットです。

自動コミットが有効になっている場合、それぞれの操作を完了すると共にトランザクションはコミットされ、次の操作へ継続されません。

トランザクションを手動で制御する方法

自動コミットが有効になっている場合、SQL文の実行ごとに自動的にコミット処理が行われますが、トランザクションを制御するメソッドを

利用することで、複数のSQL文をひとまとめにして1つのトランザクションとして扱うことができます。

詳細は、“A.2.7 トランザクション制御”、“A.3.7 トランザクション制御”を参照してください。

2.3.4 分散トランザクション

トランザクションスコープにより、暗黙的な分散トランザクションを使用できます。トランザクションスコープを使用する場合、分散トランザ

クション中のデータ操作は、Windowsのサービスである、Microsoft Distributed Transaction Coordinator(以降、MSDTCと略します)によ

り制御されます。

MSDTCの起動

トランザクションスコープ(System.Transactions 名前空間)を使用する場合、MSDTCサービスを起動しておく必要があります。

Windowsのサービスの一覧で、“Distributed Transaction Coordinator”サービスが開始状態であることを確認してください。

2.3.4.1 アプリケーションの作成方法

トランザクションスコープを使用したアプリケーションの作成方法を説明します。

[アプリケーション作成の流れ]

//1. System.Transactions名前空間導入

using System.Transactions;

//2. トランザクション スコープの開始

using (TransactionScope ts = new TransactionScope())

{

SymfowareConnection con = new SymfowareConnection();

- 9 -

Page 15: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

//3. スコープにトランザクションの登録

con.ConnectionString = "DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01;ENLIST=TRUE";

con.Open();

//4. Closeメソッドの呼び出し

con.Close();

//5. Complete()メソッドの呼び出し

ts.Complete();

//6. トランザクションスコープの終了

}

//7. 終了作業の同期

System.Threading.Thread.Sleep(3000);

1. アプリケーションにSystem.Transactions名前空間導入

2. トランザクションスコープの開始

新しい TransactionScopeオブジェクトを作成すると、トランザクションスコープが開始されます。usingステートメントを使用してス

コープを作成することを推奨します。

TransactionScopeオブジェクトを新規作成する場合、下記の情報を設定できます。詳細は、Microsoft社のMSDNライブラリを参

照してください。

- 入れ子になったスコープとルートスコープの関係設定(既定値:Required)

- トランザクションスコープのタイムアウトの設定(既定値:60秒)

- トランザクションスコープの分離レベルの設定(既定値:Serializable)

3. スコープにトランザクションを登録

以下の2つの条件を満たす場合、当該コネクションはトランザクションスコープに登録され、当該コネクションのトランザクションが

トランザクションスコープマネージャより管理されます。

- 当該コネクションの接続文字列のEnlistキーワードの値として、trueが設定されている

- 当該コネクションがトランザクションスコープ内で、SymfowareConnectionのOpen()メソッドを呼び出す

4. SymfowareConnectionのCloseメソッドの呼び出し

コネクションを切断する場合、占用した資源を解放するために、当該コネクションのClose()メソッドを呼び出してください。

5. TransactionScopeオブジェクトのComplete()メソッドの呼び出し

トランザクションスコープ内ですべての操作を完了したら、TransactionScopeオブジェクトのComplete メソッドを一度だけ呼び出す

必要があります。呼び出さない場合、トランザクションがデフォルトで強制終了します。

6. トランザクションスコープの終了

トランザクションのコミットおよびロールバックは、トランザクションスコープブロックを終了する際に、当該TransactionScopeオブジェ

クトのDisposeメソッドを呼び出すことによって実行されます。

7. アプリケーションとトランザクションスコープの終了作業の同期

トランザクションスコープの終了作業は、トランザクションスコープマネージャにより、アプリケーションのスレッドとは異なる、新しい

スレッドを発行して実行されています。下記の動作を保証するために、アプリケーションで手動同期処理が必要です。

- トランザクションスコープの終了作業が完了するまでの時間を確保する

- トランザクションスコープブロック後の作業と並行することを避ける

手動同期処理では、トランザクションスコープが終了後、数秒間経過してから、アプリケーションをブロックするようにしてくださ

い。

- 10 -

Page 16: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

サンプルプログラムについては、“A.2.13 TransactionScopeクラスを利用した分散トランザクション制御”または“A.3.13 TransactionScopeクラスを利用した分散トランザクション制御”を参照してください。

2.3.4.2 アプリケーション作成時の注意事項

トランザクションスコープを使用したアプリケーションを作成する場合の注意事項を説明します。

・ コネクションの接続文字列のEnlistキーワードの値に、falseが設定された場合、当該コネクションは、トランザクションスコープに登

録できません。

・ トランザクションスコープのタイムアウトの 大許容時間の初期値は10分です。 大許容時間を10分以上に設定するには、.NETFrameworkのMachine.configファイルに下記を設定してください。

例: 大許容時間を15分に設定

<configuration>

<system.transactions>

<machineSettings maxTimeout="00:15:00" />

</system.transactions>

</configuration>

・ 1つのトランザクションスコープ内でのコネクション数とスレッド数に対しては、以下の制限があります。

- コネクション数は、システム用の動作環境ファイルのMAX_CONNECT_TCPに指定した接続可能な 大コネクション数の1/2の値を超えないでください。

超えた場合、トランザクションスコープの終了時に、接続可能な 大コネクション数の限界を超えて、以下のエラーが発生しま

す。

[Symfoware] JYP9229E システムコールにおいてエラーが発生し,サーバとの通信が切断されました.

- “コネクション数 × スレッド数”の値は、32を超えないでください。

超えた場合、MSDTCが管理できるブランチ数の許容範囲を超えて、以下のエラーが発生します。また、トランザクションスコー

プを強制的にロールバックして、トランザクションが終了します。

[Symfoware] JYP1021E システムコールにおいてエラーが発生しました.分散トランザクションマネージャでは、これ以上トラ

ンザクションへの永続参加を受け入れません。”

- “コネクション数 × スレッド数”の値は、コネクションプールのMaxPoolSizeまたはmaxpooledconnectionsの値を超えないでくだ

さい。

超えた場合、一部のコネクションが接続できなくなり、以下のエラーが発生します。

[Symfoware] JYP9224E Connection Timeoutの制限時間を超えました.

・ トランザクションスコープ内で、マルチスレッドまたはパラレルを利用する場合、スレッド間に、セッション単位の一時表のデータは

共有できません。

・ トランザクションスコープを利用する場合、以下のメソッドの機能範囲は、同じ接続文字列を持つすべてのSymfowareConnectionオブジェクトに対して有効となります。

- SymfowareConnection.ChangeDataBase

- SymfowareConnection.SetRole

トランザクションスコープ以外の場合は、コネクション単位に有効です。

・ トランザクションスコープを終了する前に、トランザクションスコープ内で接続されているコネクションを切断する必要があります。も

し、切断されないコネクションがある場合、TransactionAbortedException異常が発生します。

・ トランザクションスコープを利用する際に、以下の場合に、アプリケーションが排他待ちになる可能性があります。

- 同じトランザクションスコープ内で、接続文字列が違うコネクションが同じ資源を更新する場合。

- 同じトランザクションスコープ内で、マルチスレッドの場合、スレッド間で同じ、または違うコネクションが同じ資源を更新する場

合。

- 11 -

Page 17: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

排他待ちが発生する場合、トランザクションスコープのタイムアウト機能を利用して、トランザクションスコープをロールバックできま

す。行単位の排他を使用していて、トランザクションスコープのタイムアウト機能を利用してもタイムアウトが有効とならない場合、

チューニングパラメタのWAIT_TIMEやTRAN_TIME_LIMITを併用して排他待ちを解除してください。

参照

トランザクションスコープ制御の詳細は、Microsoft社のMSDNライブラリの“トランザクション スコープを使用した暗黙的なトランザクショ

ンの実装”を参照してください。

2.3.4.3 アプリケーション運用時の注意事項

トランザクションスコープを利用したアプリケーションの運用時に、異常が発生した場合のトランザクションの状態判定および対処方法

を説明します。

異常の種類

タイムアウト異常

トランザクションスコープ内の処理が、指定されたトランザクションスコープのタイムアウト時間内に終了していない場合、タイムアウ

ト異常が発生します。

インダウト状態異常

トランザクションスコープに登録された複数なトランザクションの一貫性を保証するために、2フェーズコミット制御を行います。1フェー

ズと2フェーズの間に異常が発生すると、トランザクションの結果として不定の状態(インダウト状態)となり、トランザクションで占用し

た資源がインダウト閉塞することになります。

インダウト閉塞になると、閉塞が解除されるまで資源はアクセス禁止状態になります。禁止状態の資源をアクセスすると異常が返却

されます。この時に返却された異常をインダウト状態異常と呼びます。

トランザクションの状態判定および対処方法

異常の種類ごとに、トランザクションの状態判定および対処方法を説明します。

タイムアウト異常

タイムアウト異常が発生した場合、トランザクションマネージャはTransactionAbortedException をスローします。その結果、トランザク

ションスコープに登録されたすべての分散トランザクションの実行が中止となり、ロールバックされます。

タイムアウト以外に、以下の場合にも、TransactionAbortedExceptionが発生する可能性があります。

- トランザクションスコープが終了する時に、トランザクションスコープ内に接続中のコネクションが存在する

- リソースの競合に関するデッドロックが発生した

インダウト状態異常の判定

インダウトログ状態異常の判定方法を説明します。

サーバ側がLinuxまたはSolarisの場合、インダウトログファイルを利用することでインダウト状態を判定できます。

参照

インダウトログファイルについては、“RDB運用ガイド”を参照してください。

インダウトログファイルがある場合

rdblogコマンドを利用して、インダウトログファイルの状態を確認できます。

インダウトログ状態がactiveの場合、インダウトが発生していることを示します。

- 12 -

Page 18: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

参照

インダウトログファイルの状態の表示方法については、“クラスタ導入運用ガイド”の“インダウトログファイルの状態表示”を参照

してください。

インダウトログファイルがない場合

以下のいずれかの方法で、インダウト状態を確認できます。

- RDBREPORTで指定したメッセージログファイルを確認し、以下のエラーメッセージがある場合、インダウトが発生している

ことを示します。

qdg13529u:XA配下のトランザクションがインダウト状態になりました

- RDB システムがダウンし、RDBシステムを再起動するときに、以下のメッセージが出力された場合、インダウトが発生してい

ることを示します。

qdg12210w:XA配下のインダウトなトランザクションが存在します

インダウト状態の解除

rdbxarcvコマンドを利用して、インダウトトランザクションを解決できます。

参照

rdbxarcvコマンドの指定方法の詳細については、“コマンドリファレンス”を参照してください。

2.4 データ型の対応関係

アプリケーションからSymfoware Serverへデータの代入/取出しを行うには、Symfoware ServerのSQLのデータ型に合うデータ型でアプ

リケーションを作成する必要があります。

Symfoware ServerのSQLのデータ型に対応する.NET CLS(共通言語仕様)のデータ型を、“表2.1 Symfoware ServerのSQLのデータ

型に対応する.NET CLSのデータ型”に示します。表中で、使用可能となっているデータ型は、双方の型の合う範囲で使用することが

できます。

また、Symfoware Serverからデータを取得するときに、使用可能なSymfoware .NET Data Providerのメソッドの対応関係を、“表2.2 デー

タ取得可能なSymfoware .NET Data Providerのメソッド”に示します。

参照

Symfoware ServerのSQLのデータ型の詳細は、“SQLリファレンス”を参照してください。また、.NET CLSのデータ型の詳細は、Microsoft社のMSDNライブラリを参照してください。

注意

Symfoware ServerのSQLのデータ型のROW_ID(行識別子)は使用できません。

表2.1 Symfoware ServerのSQLのデータ型に対応する.NET CLSのデータ型

Symfoware ServerのSQLのデータ型

(表の列のデータ型)

.NET CLSのデータ型

Boolean

Byte Byte[ ]

Char[ ]

DateTime

Decimal

Double

Int16 Int32 Int64 Single

String

TimeSpan

文字列

CHAR ○ ○ - ○ ○ ○ ○ ○ ○ ○ ○ ◎ ○

VARCHAR ○ ○ - ○ ○ ○ ○ ○ ○ ○ ○ ◎ ○

- 13 -

Page 19: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

Symfoware ServerのSQLのデータ型

(表の列のデータ型)

.NET CLSのデータ型

Boolean

Byte Byte[ ]

Char[ ]

DateTime

Decimal

Double

Int16 Int32 Int64 Single

String

TimeSpan

各国語

文字列

NCHAR - - - ○ - - - - - - - ◎ -

NCHAR VARYING - - - ○ - - - - - - - ◎ -

真数型 SMALLINT ○ ○ - ○ - ○ ○ ◎ ○ ○ ○ ○ -

INTEGER ○ ○ - ○ - ○ ○ ○ ◎ ○ ○ ○ -

NUMERIC ○ ○ - ○ - ◎ ○ ○ ○ ○ ○ ○ -

DECIMAL ○ ○ - ○ - ◎ ○ ○ ○ ○ ○ ○ -

概数型 REAL ○ ○ - ○ - ○ ○ ○ ○ ○ ◎ ○ -

FLOAT(p)p=1~23 ○ ○ - ○ - ○ ○ ○ ○ ○ ◎ ○ -

FLOAT(p)p=24~52 ○ ○ - ○ - ○ ◎ ○ ○ ○ ○ ○ -

DOUBLEPRECISION

○ ○ - ○ - ○ ◎ ○ ○ ○ ○ ○ -

日時型 DATE - - - ○ ◎ - - - - - - ○ -

TIME - - - ○ - - - - - - - ○ ◎

TIMESTAMP - - - ○ ◎ - - - - - - ○ -

BLOB型

(注)

BLOB - - ◎ - - - - - - - - - -

INTERVAL_YEAR - - - ○ - - - - - - - ◎ -

INTERVAL_MONTH

- - - ○ - - - - - - - ◎ -

INTERVAL_YEAR_TO_MONTH

- - - ○ - - - - - - - ◎ -

INTERVAL_DAY - - - ○ - - - - - - - ◎ -

INTERVAL_DAY_TO_HOUR

- - - ○ - - - - - - - ◎ -

INTERVAL_DAY_TO_MINUTE

- - - ○ - - - - - - - ◎ -

INTERVAL_DAY_TO_SECOND

- - - ○ - - - - - - - ◎ -

INTERVAL_HOUR - - - ○ - - - - - - - ◎ -

INTERVAL_HOUR_TO_MINUTE

- - - ○ - - - - - - - ◎ -

INTERVAL_HOUR_TO_SECOND

- - - ○ - - - - - - - ◎ -

INTERVAL_MINUTE

- - - ○ - - - - - - - ◎ -

INTERVAL_MINUTE_TO_SECOND

- - - ○ - - - - - - - ◎ -

INTERVAL_SECOND

- - - ○ - - - - - - - ◎ -

- 14 -

Page 20: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

◎:推奨

○:使用可能

-:使用不可

注)格納構造がOBJECT構造の表のBLOB型データにはアクセスできません。

表2.2 データ取得可能なSymfoware .NET Data Providerのメソッド

Symfoware ServerのSQLのデータ型

(表の列のデータ型)

Symfoware .NET Data Providerのメソッド

GetBoolean

GetByte

GetByte

s

GetChar

s

GetDate

GetDateTim

e

GetDecimal

GetDouble

GetFloat

GetInt16

GetInt32

GetInt64

GetStrin

g

GetTime

GetValu

e

GetValues

文字列型 CHAR ○ ○ - ○ - ○ ○ ○ ○ ○ ○ ○ ◎ ○ ○ ○

VARCHAR ○ ○ - ○ - ○ ○ ○ ○ ○ ○ ○ ◎ ○ ○ ○

各国語文

字列型

NCHAR - - - ○ - - - - - - - - ◎ - ○ ○

NCHARVARYING

- - - ○ - - - - - - - - ◎ - ○ ○

真数型 SMALLINT ○ ○ - ○ - - ○ ○ ○ ◎ ○ ○ ○ - ○ ○

INTEGER ○ ○ - ○ - - ○ ○ ○ ○ ◎ ○ ○ - ○ ○

NUMERIC ○ ○ - ○ - - ◎ ○ ○ ○ ○ ○ ○ - ○ ○

DECIMAL ○ ○ - ○ - - ◎ ○ ○ ○ ○ ○ ○ - ○ ○

概数型 REAL ○ ○ - ○ - - ○ ○ ◎ ○ ○ ○ ○ - ○ ○

FLOAT(p)p=1~23

○ ○ - ○ - - ○ ○ ◎ ○ ○ ○ ○ - ○ ○

FLOAT(p)p=24~52

○ ○ - ○ - - ○ ◎ ○ ○ ○ ○ ○ - ○ ○

DOUBLEPRECISION

○ ○ - ○ - - ○ ◎ ○ ○ ○ ○ ○ - ○ ○

日時型 DATE - - - ○ ○ ◎ - - - - - - ○ - ○ ○

TIME - - - ○ - - - - - - - - ○ ◎ ○ ○

TIMESTAMP

- - - ○ ○ ◎ - - - - - - ○ - ○ ○

BLOB型

(注)

BLOB - - ◎ - - - - - - - - - - - ○ ○

INTERVAL_YEAR

- - - ○ - - - - - - - - ◎ - ○ ○

INTERVAL_MONTH

- - - ○ - - - - - - - - ◎ - ○ ○

INTERVAL_YEAR_TO_MONTH

- - - ○ - - - - - - - - ◎ - ○ ○

INTERVAL_DAY

- - - ○ - - - - - - - - ◎ - ○ ○

INTERVAL_DAY_TO_HOUR

- - - ○ - - - - - - - - ◎ - ○ ○

- 15 -

Page 21: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

Symfoware ServerのSQLのデータ型

(表の列のデータ型)

Symfoware .NET Data Providerのメソッド

GetBoolean

GetByte

GetByte

s

GetChar

s

GetDate

GetDateTim

e

GetDecimal

GetDouble

GetFloat

GetInt16

GetInt32

GetInt64

GetStrin

g

GetTime

GetValu

e

GetValues

INTERVAL_DAY_TO_MINUTE

- - - ○ - - - - - - - - ◎ - ○ ○

INTERVAL_DAY_TO_SECOND

- - - ○ - - - - - - - - ◎ - ○ ○

INTERVAL_HOUR

- - - ○ - - - - - - - - ◎ - ○ ○

INTERVAL_HOUR_TO_MINUTE

- - - ○ - - - - - - - - ◎ - ○ ○

INTERVAL_HOUR_TO_SECOND

- - - ○ - - - - - - - - ◎ - ○ ○

INTERVAL_MINUTE

- - - ○ - - - - - - - - ◎ - ○ ○

INTERVAL_MINUTE_TO_SECOND

- - - ○ - - - - - - - - ◎ - ○ ○

INTERVAL_SECOND

- - - ○ - - - - - - - - ◎ - ○ ○

◎:推奨

○:使用可能

-:使用不可

注)格納構造がOBJECT構造の表のBLOB型データにはアクセスできません。

2.5 データ操作

データ操作について説明します。データの操作には、以下の2つがあります。

・ データ検索

データのクエリ操作です。

・ データ更新

データの挿入、削除および更新操作です。

2.5.1 データ検索

Symfoware .NET Data Providerを利用して、データを検索するには、以下の2つの方法があります。

・ DataReaderを利用する

DataReaderは、SymfowareCommandクラスのExecuteReaderメソッドで、SELECT文を実行すると作成されるオブジェクトです。

DataReaderを利用することで、データを検索できます。詳細は、“A.2.2 SymfowareDataReaderでの参照”、 “A.3.2SymfowareDataReaderでの参照”を参照してください。

- 16 -

Page 22: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

・ DataSetを利用する

DataSetは、データソースから取得されたデータのメモリ上のキャッシュです。DataSetを利用することでデータを検索できます。詳細

は、“A.2.3 DataSetでの参照”および“A.3.3 DataSetでの参照”を参照してください。

[プログラム例]

try

{

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=2050;INITIAL

CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

con.Open();

SymfowareCommand com = con.CreateCommand();

com.CommandText = " SELECT * FROM SAMPLE1.TESTTBL ";

SymfowareDataAdapter adp = new SymfowareDataAdapter(com);

//DataSetを利用してデータを検索

DataSet dt = new DataSet();

foreach (DataTable table in dt.Tables)

{

foreach (DataRow row in table.Rows)

{

foreach (DataColumn column in table.Columns)

{

Console.WriteLine(row[column]);

}

}

}

con.Close();

con.Dispose();

}

// エラー処理

catch (Exception e1)

{

// エラー処理ルーチンを記述

}

2.5.2 データ更新

Symfoware .NET Data Providerを利用して、データを更新するには、以下の2つの方法があります。

・ Commandを利用する

Commandとはデータソースに対して実行するSQL文やストアドプロシジャのことです。Commandで更新SQL文を直接実行すること

で、データを更新できます。

[プログラム例]

try

{

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=2050;INITIAL

CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

con.Open();

SymfowareCommand com = con.CreateCommand();

// Commandで更新SQL文を直接実行して、データを更新

com.CommandText = " DELETE FROM SAMPLE1.TESTTBL";

com.ExecuteNonQuery();

con.Close();

con.Dispose();

}

// エラー処理

- 17 -

Page 23: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

catch (Exception e1)

{

// エラー処理ルーチンを記述

}

・ CommandBuilderを利用する

CommandBuilderを利用して自動作成される、INSERT文、UPDATE文、DELETE文を実行することで、データを更新できます。詳

細は、“A.2.5 CommandBuilderを利用した更新”、“A.3.5 CommandBuilderを利用した更新”を参照してください。

2.6 通信データを暗号化する場合の設定

通信データの暗号化機能を使用してリモートアクセスを行う場合は、以下の設定を行ってください。

通信内容を暗号化してサーバに接続する設定

通信の暗号化は、システム用の動作環境ファイルのSSL_USEパラメタにONが指定されている場合にのみ使用できます。この場

合、クライアント側では、アプリケーションの構成ファイル、またはConnectionStringプロパティで、encryptキーワードにtrue(RDB2_TCPS連携を行う) を指定する必要があります。

サーバ認証を行う場合の設定

サーバのなりすましから守るために、サーバ認証を行う場合は、データベース管理者が配布するCA証明書ファイルを格納し、アプ

リケーションの構成ファイル、またはConnectionStringプロパティで、cacertfileキーワードにCA証明書ファイルの格納先のパスを指

定します。

注意

・ 通信内容を暗号化してサーバに接続する設定を行わずに、cacertfileキーワードを指定し、SymfowareConnectionオブジェクトを作

成すると、エラーになります。通信内容を暗号化してサーバに接続する設定を行わずに、cacertfileキーワードを指定しないでくだ

さい。

・ サーバとクライアントで暗号化の指定が矛盾している場合は、エラーになります。通信内容を暗号化してサーバに接続する設定を

行った場合は、システム用の動作環境ファイルのSSL_USEパラメタにONを指定してください。

・ データベース簡単運用では、通信データの暗号化はできません。

- 18 -

Page 24: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

第3章 アプリケーションの作成

本章では、Symfoware .NET Data Providerを利用したアプリケーションの作成方法を説明します。

なお、本説明ではVisual Studio 2010を使用しています。

3.1 アプリケーションの作成方法

アプリケーションの作成には、Visual Studioを使用します。使用可能なVisual Studioの詳細は、“1.4 動作環境”を参照してください。

ポイント

・ 開発言語にCOBOLを利用する場合は、NetCOBOL for .NETをアドオンしてください。

3.1.1 コーディング方法の種類

アプリケーションの作成には、.NET Frameworkの規格に則ったデータ操作を自動生成する方法と、開発者が自由にコーディングする

方法があります。

データ操作を自動生成する場合、Visual StudioのTableAdapterやデータオブジェクトを利用します。Visual Studioの機能を利用して

コードを自動生成するため、コーディングの生産性が向上します。

参照

・ データ操作を自動生成する場合の手順は、“3.2 データ操作の自動生成”を参照してください。

・ データ操作を自動生成せずに、自由にコーディングする場合は、“第5章 APIリファレンス”、Microsoft社のMSDNライブラリ、およ

びMicrosoft社のVisual Studioのマニュアルを参照してください。

3.2 データ操作の自動生成

Symfoware .NET Data Providerで、データ操作を行うプログラムは、以下のどちらかの機能を利用することで、自動生成可能ですが、

Symfoware .NET Data Providerでは、TableAdapterの利用を推奨します。

・ TableAdapter

・ Symfoware .NET Data Providerコード生成ツール(以降、SNDPコード生成ツールと略します)

本節では、Visual Studioで生成可能なTableAdapterを使用して、Symfoware .NET Data Providerのデータ操作を自動生成する方法に

ついて説明します。

SNDPコード生成ツールでプログラムを自動生成する方法については、“付録F SNDPコード生成ツールでの自動生成を利用する場

合”を参照してください。

TableAdapter機能は、Visual Studio .NETのアドオン形式で提供します。

アドオン名は、“Symfoware Development Tools for .NET”(以降、SDT.NETと略します)です。

SDT.NETのアドオン登録は、“付録D SDT.NETのアドオン登録”を参照してください。

TableAdapterを利用したデータ操作の自動生成によるアプリケーション開発の流れを以下に示します。

- 19 -

Page 25: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

3.2.1 Symfoware .NET Data Providerライブラリ参照の追加

アプリケーションを作成する前に、Visual StudioでSymfoware .NET Data Providerを使用可能な状態にします。

以下の手順で、Visual StudioのプロジェクトごとにFujitsu.Symfowareへの参照を追加してください。

1. [プロジェクト]メニューの[参照の追加]を選択します。

- 20 -

Page 26: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

2. [.NET]タブの[コンポーネント名]から“Fujitsu.Symfoware”を選択し、[OK]ボタンをクリックします。

注意

.NET Framework 2.0と .NET Framework 4または .NET Framework 4.5を共存させる場合、[.NET]タブの[コンポーネント名]に、

“Fujitsu.Symfoware”が2つ表示されます。開発するアプリケーションに応じて、以下のように参照先のコンポーネントを選択してくださ

い。

・ Visual Studio 2005またはVisual Studio 2008で開発する場合

ランタイムが“v2.0.50727”のFujitsu.Symfowareを選択してください。

・ Visual Studio 2010またはVisual Studio 2012で開発する場合

- .NET Framework 2.0、.NET Framework 3.0または.NET Framework 3.5でアプリケーションを開発する場合は、ランタイムが

“v2.0.50727”の“Fujitsu.Symfoware”を選択してください。

- .NET Framework 4または .NET Framework 4.5でアプリケーションを開発する場合は、ランタイムが“v4.0.30319”の“Fujitsu.Symfoware”を選択してください。

3.2.2 TableAdapterの作成

データソース構成ウィザードでは、アプリケーションで使用するデータソースの登録とデータベースへの接続情報を作成します。また、

データソース構成ウィザード内で選択したデータベースオブジェクトについてのTableAdapterを作成できます。

以下に、データソース構成ウィザードを使用したTableAdapter作成までの手順を説明します。

データソースの登録前に、データベースが構築されている必要があります。

- 21 -

Page 27: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

1. Visual Studioの[データ]メニューの[新しいデータソースの追加]を選択し、[データソースの種類を選択]画面を表示します。

[データソースの種類を選択]画面の[データベース]を選択し、[次へ]ボタンをクリックします。

2. [データベースモデルの選択]画面の[データセット]を選択し、[次へ]ボタンをクリックします。

- 22 -

Page 28: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

3. [データ接続の選択]画面の[新しい接続]ボタンをクリックします。

4. [接続の追加]画面で、以下の順に接続先情報を指定します。

- 23 -

Page 29: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

1. [変更]ボタンをクリックし、データソースを変更します。

[データソースの変更]画面の[データソース]から“Symfoware Server”を選択し、[データプロバイダ]プルダウンメニューか

ら“Symfoware .NET Data Provider”を選択し、[OK]ボタンをクリックします。

2. サーバ名などの接続先情報を指定します。

3. [テスト接続]ボタンをクリックし、接続先情報が正しいことを確認します。

4. [OK]ボタンをクリックします。

なお、[接続の追加]画面の[詳細設定]ボタンをクリックして、より詳細な接続先情報を[詳細プロパティ]画面で指定することもでき

ます。

接続先情報の詳細は、“付録B 接続文字列に指定可能なキーワード”を参照してください。

- 24 -

Page 30: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

注意

データベース名とスキーマ名に英字を指定した場合、指定された値は、大文字と小文字を区別して扱われます。データベース

名やスキーマ名を小文字で定義している場合、データソース構成ウィザードで識別子名を指定する際には、二重引用符(")で囲

んで指定する必要はありません。

5. [データ接続の選択]画面で接続文字列を確認し、[いいえ。重要情報を接続文字列に含めません。]または[はい。重要情報を

接続文字列に含めます。]を選択し、[次へ]ボタンをクリックします。

注意

- 接続文字列部分の内容は、手順5.の[接続の追加]の内容を参照してください。

- [いいえ、重要情報を接続文字列に含めません。]を選択した場合、Symfoware Serverに接続する際に下記のダイアログボッ

クスが表示されますので、接続時のパスワードを再度入力してください。

- 25 -

Page 31: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

6. [接続文字列をアプリケーション構成ファイルに保存する]画面で、接続文字列を保存します。表示されている名前で保存する場

合は、[次へ]ボタンをクリックします。変更したい場合は、名前を入力し、[次へ]ボタンをクリックします。

7. [データベースオブジェクトの選択]画面で、TableAdapterを作成するテーブル、ビュー、またはストアドプロシージャを選択し、

データセットの名前を確認して、[完了]ボタンをクリックします。

[データセット名]に表示された名前で、データセットオブジェクトが生成されます。

注意

関数は使用できません。選択しても、関数名はリストアップされません。

- 26 -

Page 32: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

8. データセットとTableAdapterの作成が完了しました。

3.2.3 TableAdapterの追加

作成したデータセットにTableAdapterを追加する方法について説明します。

次のいずれかの操作を実行して、TableAdapter を追加できます。

・ データセットデザイナーに、TableAdapter構成ウィザードで追加

・ サーバーエクスプローラーから、データセットデザイナーにデータベースオブジェクトをドラッグ&ドロップ

3.2.3.1 TableAdapter 構成ウィザードによる追加

TableAdapter構成ウィザードでTableAdapterを追加する手順を説明します。

1. TableAdapter構成ウイザードを起動します。起動方法には、下記の2つがあります。

- Visual Studioの[ツールボックス]の[データセット]タブから、[TableAdapter]をデータセットデザイナーにドラッグ&ドロップしま

す。

- 27 -

Page 33: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

- データセットデザイナーの空白部分で右クリックします。表示されるメニューバーで、[追加]の[TableAdapter]を選択します。

2. [データ接続の選択]画面で、既存の接続文字列を選択するか、または[新しい接続]をクリックして新しい接続文字列を作成しま

す。

- 28 -

Page 34: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

3. [コマンドの種類を選択します]画面で、TableAdapterでデータベースにアクセスする方法を選択します。

注意

ストアドプロシージャを新規に作成することはできません。

[SQLステートメントを使用する]を選択する場合

1. [SQLステートメントを使用する]を選択して[次へ]ボタンをクリックし、以下のどちらかの方法で、SQLステートメントを入力し

ます。

- [SQLステートメントの入力]画面で直接入力する

- QueryBuilderで自動生成する

[SQLステートメントの入力]画面で、[クエリビルダー]ボタンをクリックするとQueryBuilderを起動できます。詳細は“付録

E QueryBuilder”を参照してください。

- 29 -

Page 35: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

SQLステートメントを入力後、[次へ]ボタンをクリックします。

2. [生成するメソッドの選択]画面で、TableAdapterに追加するメソッドを選択し、[次へ]ボタンをクリックします。

- 30 -

Page 36: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

3. [ウィザードの結果]画面で、TableAdapter中のメソッドが正しく生成されたか確認し、[完了]ボタンをクリックします。

4. 下記のデータセットの設定画面に、生成したメソッドが表示されます。

5. 生成されたTableAdapterを右クリックし、[プロパティ]を選択します。

- 31 -

Page 37: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

6. 表示された[プロパティ]ウィンドウで、SQLの内容を確認できます。

[既存のストアドプロシージャを使用]を選択する場合

1. [既存のストアドプロシージャを使用]を選択して[次へ]ボタンをクリックし、[コマンドを既存のストアドプロシージャにバイン

ドする]画面で、[Select]のプルダウンメニューから必要なストアドプロシージャを選択します。画面の右側に、指定したスト

アドプロシージャの出力パラメタが表示されます。

Insertストアドプロシージャを設定する場合は、[Insert]のプルダウンメニューから、必要なストアドプロシージャを指定しま

す。右側の[パラメーター]リストに、当該ストアドプロシージャの入力パラメタが表示されます。右側の[ソース列]のセルで、

対応する入力パラメタを選択してください。当該入力パラメタの指定範囲はSelectストアドプロシージャの出力パラメタで

す。[ソース列]のセルは空白にしないでください。

- 32 -

Page 38: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

UpdateストアドプロシージャおよびDeleteストアドプロシージャの設定も、Insertストアドプロシージャの設定と同様の操作です。

パラメタの指定が完了したら、[次へ]ボタンをクリックします。

注意

Selectストアドプロシージャの出力パラメタを使用して、TableAdapterのInsertストアドプロシージャ、Updateストアドプロシー

ジャ、Deleteストアドプロシージャを自動生成する場合、Insertストアドプロシージャ、Updateストアドプロシージャ、Deleteストアドプロシージャを設定する必要があります。

2. [生成するメソッドの選択]画面で、TableAdapterに追加するメソッドを選択し、[次へ]ボタンをクリックします。

- 33 -

Page 39: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

3. [ウィザードの結果]画面で、TableAdapter中のメソッドが正しく生成されたか確認し、[完了]ボタンをクリックします。

4. 下記のデータセットの設定画面に、生成したメソッドが表示されます。

ポイント

Selectストアドプロシージャの出力パラメタはDataTableに表示されます。下記の画面では、PARAM2は当該Selectストアド

プロシージャの出力パラメタです。

3.2.3.2 サーバーエクスプローラーで表示したオブジェクトから追加

サーバーエクスプローラーは、Visual Studio のサーバ管理コンソールです。このウィンドウを使用すると、[データ接続]配下のツリーか

らSymfoware Serverのオブジェクト情報を参照できます。

サーバーエクスプローラーは、Visual Studioの[表示]メニューの[サーバーエクスプローラー]を選択すると利用できます。

サーバーエクスプローラーで表示したオブジェクトから TableAdapterを追加する手順を説明します。

1. [データ接続]を右クリックして[接続の追加]を選択します。

- 34 -

Page 40: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

2. [接続の追加]画面で接続先情報を指定し、[テスト接続]ボタンをクリックして接続先情報が正しいことを確認し、[OK]ボタンをク

リックします。

3. データセットデザイナーでデータセットを開き、サーバーエクスプローラーの[データ接続]配下のツリーからデータセットデザイ

ナーにデータベースオブジェクトをドラッグ&ドロップします。

データセットにDataTableとTableAdapterが自動的に追加されます。

注意

サーバーエクスプローラーでは、下記のデータベースオブジェクトからTableAdapterを作成できます。

・ テーブル

・ ビュー

- 35 -

Page 41: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

・ 一時表

・ ストアドプロシージャ

また、下記のデータベースオブジェクトからは、TableAdapterを作成できません。

・ 関数(ファンクション)

・ 順序

・ トリガ

・ スキーマ

3.2.4 TableAdapterへのクエリの追加

TableAdapterクエリでは、DataTableに値を設定したり (Fill クエリと FillBy クエリ)、クエリが返すデータを読み込んだ新しいDataTableを返したり (GetData クエリと GetDataBy クエリ)することができます。作成済みのTableAdapterにクエリを追加する手順を説明します。

1. データセットデザイナーでデータセットを開きます。

2. 対象のTableAdapterを右クリックし、[追加]の[クエリ]を選択して、TableAdapterクエリの構成ウィザードを開きます。

- 36 -

Page 42: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

3. [コマンドの種類を選択します]画面で、TableAdapterクエリでデータベースにアクセスする方法を選択し、[次へ]ボタンをクリック

します。

4. [クエリの種類の選択]画面で、使用するSQLクエリの種類を選択し、[次へ]ボタンをクリックします。

5. 以下のどちらかの方法で、SQLステートメントを入力します。

- 画面上で直接入力する

- QueryBuilderで自動生成する

[クエリビルダー]ボタンをクリックするとQueryBuilderを起動できます。詳細は“付録E QueryBuilder”を参照してください。

- 37 -

Page 43: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

SQLステートメントを入力後、[次へ]ボタンをクリックします。

6. 生成するメソッドを選択します。

- 38 -

Page 44: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

7. ウィザードの結果画面に、生成したメソッドの一覧が表示されます。

8. ウィザードが完了し、TableAdapter にクエリが追加されます。

注意

[単一の値を返すSELECT]を選択した場合、[接続の追加]画面に指定したスキーマとは異なるスキーマ名のTableAdapterを作成でき

ません。

ポイント

[データのプレビュー]ダイアログ ボックスを使用して、TableAdapterに追加したクエリの実行結果を参照できます。

DataTable、Query、またはTableAdapterを右クリックして、[データのプレビュー]を選択すると、データのプレビュー画面が表示されま

す。この画面で[プレビュー]ボタンをクリックすると、クエリの実行結果が表示されます。

- 39 -

Page 45: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

ただし、以下の注意事項があります。

・ BLOB型の列のデータが画像以外の場合、正常に表示できません。

・ ストアドプロシージャを選択してTableAdapterを作成した場合、パラメタの順番を入れ替えて[プレビュー]ボタンをクリックするとエ

ラーになります。

3.2.5 アプリケーションからのTableAdapterの利用

TableAdapterを利用して、アプリケーションをWindowsフォームで作成する方法を説明します。

1. [データソース]画面からDataTableをフォームへドラッグ&ドロップします。

- 40 -

Page 46: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

2. アプリケーションを実行すると、表のデータを表示することができます。

注意

・ INTERVAL型の名前付きパラメタを含むTableAdapterを作成して、フォームにドラッグ&ドロップしても、パラメタ値のテキストボック

スは生成されません。ユーザが手動でテキストボックスコントロールを作成する必要があります。

・ FLOAT型、REAL型、DOUBLE型の名前付きパラメタを含むTableAdapterについて、パラメタに以下の範囲を超える精度の概数

をバインドするとエラーになります。

[- 7.922816E+28 ~ + 7.922816E+28]

この場合、以下のいずれかの方法で回避できます。

- 名前付きパラメタを使用せず、値を定数で指定

- TableAdapterを使用せず、APIで直接コーディング

・ TIME型の名前付きパラメタを含むTableAdapterについて、パラメタに値をバインドするとエラーになります。

この場合、以下のいずれかの方法で回避できます。

- 名前付きパラメタを使用せず、値を定数で指定

- TableAdapterを使用せず、APIで直接コーディング

・ 名前付きパラメタに値をバインドするときのデータ形式については、“E.1 QueryBuilder使用時の注意事項”を参照してください。

・ トランザクションスコープ機能を使用する場合、1つのトランザクション内で複数のTableAdapterが同じテーブルにアクセスするとき

は、同じ接続文字列を使用してください。

・ トランザクションスコープ機能を使用する場合、1つのトランザクション内でTableAdapterを利用するアプリケーションとSymfowareServerのAPIを利用するアプリケーションが同じテーブルにアクセスする場合は、同じ接続文字列を使用し、Symfoware ServerのAPIでデータベース操作を行った直後にclose()メソッドでコネクションを切断してください。

3.2.6 TableAdapterメソッドの属性の一覧

TableAdapterメソッドの属性を、下表に示します。

TableAdapterのメンバー メンバーの説明

Properties Public ClearBeforeFill いずれかの Fill メソッドを呼び出す前に、

DataTableが空になっているかどうかを確認し

ます。

Internal Connection このTableAdapterで使用されるConnectionを取得または設定します。

Protected CommandCollection SQLコマンドのリストを格納します。

- 41 -

Page 47: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

TableAdapterのメンバー メンバーの説明

Methods Public Delete DataTable内に指定の行を削除します。

Fill TableAdapter の関連付けられたDataTableに、TableAdapter の SELECT コマンドの実

行結果が格納されます。

GetData データが格納された新しい DataTable を返し

ます。

Insert DataTable内に新しい行を作成します。

コンストラクタ TableAdapterオブジェクトのインスタンスを構

築します。

Update 更新をデータベースに反映して、更新の影

響を受ける行の数を表す整数値を返します。

カスタマイズメソッド名

(たとえば、QueryByID())特定のクエリを実行したい場合、TableAdapter構成ウィザードのGUIツールでSQL文を指定

することで、カスタマイズのメソッドが定義でき

ます。

3.2.7 TableAdapterに関する留意事項

TableAdapterに関する留意事項を以下に示します。

・ 関数を選択して、TableAdapterを作成することはできません。

・ 新規にストアドプロシージャを作成することはできません。

・ Symfoware Serverに定義されているデータベースオブジェクト名(データベース名、スキーマ名、テーブル名)が、同じスペルで大

文字と小文字の2つがある場合(例:テーブル名がTABLEとtableの場合)、小文字のデータベースオブジェクトを選択してTableAdapterを作成することはできません。

・ QueryBuilderを使用してSQL文を自動生成する場合、“E.1 QueryBuilder使用時の注意事項”を参照してください。

・ アプリケーションを作成する場合、“3.2.5 アプリケーションからのTableAdapterの利用”にある注意事項を参照してください。

- 42 -

Page 48: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

第4章 アプリケーションのデバッグとチューニング

本章では、Symfoware .NET Data Providerを利用したアプリケーションのデバッグとチューニング方法を説明します。

4.1 アプリケーションのデバッグ

アプリケーションのテスト時、または運用時に異常が発生した場合のデバッグ方法について説明します。

Symfoware .NET Data Providerでは、以下の順序でデバッグすることを推奨します。

1. エラーメッセージによるデバッグ

エラーメッセージを基に対処方法を確認します。

参照

メッセージの意味と対処の詳細は、“メッセージ集”を参照してください。

2. EventLogによるデバッグ

エラーメッセージだけでは情報が不足していて、対処できない場合があります。この場合、EventLogの出力情報を確認すること

で、原因を突き止めることができます。詳細は、“4.1.1 EventLogによる対処”を参照してください。

3. Visual Studioによるデバッグ

エラーメッセージとEventLogで解決できない場合には、Visual Studioのデバッグ機能で対処してください。

参照

Visual Studioのデバッグの詳細は、Microsoft社のVisual Studioのマニュアルを参照してください。

4.1.1 EventLogによる対処

エラーメッセージだけでは情報が不足している場合、EventLogからアプリケーションの実行状況を確認し、対処してください。

EventLogでは、APIやアプリケーションの所要時間がどれくらいかかるか、API呼出しのシーケンスや、入出力パラメタが正しいかなど、

レスポンス性能やエラーの原因を確認することができます。

EventLogの取得方法と、出力内容について説明します。

EventLogの取得方法

EventLogの取得には、以下の2種類の方法があります。

・ アプリケーションの構成ファイルに指定する(推奨)

・ ConnectionStringプロパティに指定する

上記の指定方法は、データベースの接続先情報の指定方法と同じです。各指定方法の詳細は、“2.1 コネクション”を参照してくださ

い。

EventLogは、アプリケーションの性能を改善したり、アプリケーションの異常時に原因を追求したりするために取得します。このため、性

能情報やエラーの原因を確認したいときに取得し、問題が解決したあとはログの取得を中断できるように、ログの取得と中断をパラメタ

で切替えることができます。EventLogの取得と中断を簡単に切替えられるように、EventLogの取得には、アプリケーションの構成ファイ

ルを使用することを推奨します。

また、問題が発生したらいつでもEventLogを取得できるように、EventLogの取得の有無に関わらず、アプリケーションの構成ファイル

に、あらかじめ指定しておくことを推奨します。

EventLogの取得には、ConnectionStringプロパティのキーワードを使用します。EventLogのキーワードの詳細は、“付録B 接続文字列

に指定可能なキーワード”を参照してください。

- 43 -

Page 49: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

EventLogの出力内容

EventLogを取得すると、指定した出力先に、コネクション単位に以下のファイル名で、ログが出力されます。

symfosndp_プロセスID_コネクション番号.log

なお、tuneparamキーワードに未指定の実行パラメタは、nullを表示します。

以下に、出力レベル“Debug”の場合の出力例を示します。出力レベルごとの出力情報の詳細は、“B.1 eventlogキーワード”を参照し

てください。

出力例

Begin: 2009-04-10 16:59:00.921 // 開始時刻

Class: SymfowareConnection // クラス名

Method: Open // メソッド名

Input Variables: // 入力パラメタ名

void

SymfowareConnection Environment: // 環境情報(SymfowareConnectionクラスのプロパティ情報)

ConnectionState = Closed

Connection String:

ACCESS_PLAN = OFF

ARC_FULL = null

CAL_ERROR = REJECT

CONNECT TIMEOUT = 15

CONNECTIONLIFETIME = 0

CHOOSE_TID_UNION = NO

DATA SOURCE = 10.34.186.126

DEFAULT_ACCESS_MODE = READ_WRITE

DEFAULT_DSI_TYPE = OBJECT

DEFAULT_INDEX_SIZE = null

DEFAULT_ISOLATION = DEFAULT

DEFAULT_OBJECT_TABLE_SIZE = null

DEFAULT_TABLE_SIZE = null

DSI_EXPAND_POINT = ON

EVENTLOG = (ON,DEBUG)

GROUP_COL_COND_MOVE = YES

IGNORE_INDEX = NO

INACTIVE_INDEX_SCAN = YES

INCLUSION_DSI = null

INITIAL CATALOG = DB1

ISOLATION_WAIT = WAIT

JOIN_ORDER = INSIDE

JOIN_RULE = AUTO

MAX POOL SIZE = 100

MAX_PARALLEL = null

MAX_SCAN_RANGE = null

MAX_SQL = 1024

MIN POOL SIZE = 0

MSG_LANG = JAPANESE

OPL_BUFFER_SIZE = 8192

PARALLEL_SCAN = NO

PASSWORD = ******

POOLING = TRUE

PORT = 8003

R_LOCK = null

RCV_MODE = RCV

ROUTINE_SNAP = OFF

SAME_COST_JOIN_ORDER = ORDER

SCAN_KEY_ARITHMETIC_RANGE = YES

SCAN_KEY_CAST = YES

SCHEMA = fnst

SERVER_ENV_FILE = null

SORT_HASHAREA_SIZE = null

- 44 -

Page 50: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

SORT_MEM_SIZE = null

SQL_LEVEL = SQL2007

SQL_TRACE = OFF

SS_RATE = 0.2,0.25,0.5,0.4,0.0001

TEMPORARY_INDEX_SIZE = null

TEMPORARY_TABLE_SIZE = null

TID_SORT = YES

TID_UNION = YES

TRAN_SPEC = NONE

TRAN_TIME_LIMIT = 0

USER ID = ******

USQL_LOCK = SH

WAIT_TIME = 0

WORK_ALLOC_SPACESIZE = 10000,50000

WORK_MEM_SIZE = null

WORK_PATH = null

Return: void // 戻り値

End: 2009-04-10 16:59:01.593(00:00:00.6718750) // 終了時刻(経過時間)

Begin: 2009-04-10 16:59:01.640 // 開始時刻

Class: SymfowareDataAdapter // クラス名

Method: Fill // メソッド名

Input Variables: // 入力パラメタ名

dataSet: System.Data.DataSet

srcTable: TESTTBL

SymfowareDataAdapter Environment: // 環境情報(SymfowareDataAdapterクラスのプロパティ情報)

SelectCommandText = SELECT * FROM SAMPLE1.TESTTBL

Row Content:

KEY_C = 2

DEC_C = 9999999.999

DAT_C = 2007/04/05 0:00:00

CHA_C = TEST DATA

Row Content:

KEY_C = 133

DEC_C = 500.001

DAT_C = 2007/04/01 0:00:00

CHA_C = TEST DATA

Row Content:

KEY_C = 134

DEC_C = 500.001

DAT_C = 2007/04/01 0:00:00

CHA_C = TEST DATA

Return: 3 // 戻り値

End: 2009-04-10 16:59:02.46(00:00:00.4062500) // 終了時刻(経過時間)

Begin: 2009-04-10 16:59:02.359 // 開始時刻

Class: SymfowareConnection // クラス名

Method: Close // メソッド名

Input Variables: // 入力パラメタ名

void

SymfowareConnection Environment: // 環境情報(SymfowareConnectionクラスのプロパティ情報)

ConnectionState = Open

Return: void // 戻り値

End: 2009-04-10 16:59:02.359(00:00:00) // 終了時刻(経過時間)

4.2 アプリケーションのチューニング

アプリケーションのチューニング

Symfoware .NET Data Providerを利用したアプリケーションのチューニングについて説明します。

Symfoware .NET Data Providerでは、以下のチューニングができます。

- 45 -

Page 51: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

・ 大コネクション数

・ コネクションの保持期限

・ コネクションプールの実装

・ 大/ 小プールコネクション数

・ Symfoware Server専用のアプリケーションの動作環境

(クライアント用の動作環境ファイルの実行パラメタ)

チューニング方法

アプリケーションのチューニングには、以下の2種類の方法があります。

・ アプリケーションの構成ファイルに指定する(推奨)

・ ConnectionStringプロパティに指定する

上記の指定方法は、データベースの接続先情報の指定方法と同じです。各指定方法の詳細は、“2.1 コネクション”を参照してくださ

い。

チューニングには、ConnectionStringプロパティのキーワードを使用します。キーワードの種類と設定値の詳細は、“付録B 接続文字列

に指定可能なキーワード”を参照してください。

Symfoware Serverの動作環境ファイルとの関係

Symfoware .NET Data Providerでは、Symfoware Serverのクライアント用の動作環境ファイルの実行パラメタを指定することができま

す。実行パラメタは、ConnectionStringプロパティのtuneparamキーワードに指定します。

tuneparamキーワード、Symfoware Serverのシステム用の動作環境ファイル、およびサーバ用の動作環境ファイルが重複して指定され

た場合、実行パラメタの優先順位は以下のとおりです。

参考

データベース簡単運用の場合には、Symfoware Severのインストール時に、システム用の動作環境として 適な環境が設定されるた

め、チューニングの必要がありません。よって、システム用の動作環境ファイルは、作成不要です。

1. サーバ用の動作環境ファイル

2. tuneparamキーワード

3. システム用の動作環境ファイル

注意

サーバ用の動作環境ファイルにDSO_LOCKを指定した場合、サーバ接続時にエラーが発生します。サーバ用の動作環境ファイルに

DSO_LOCKを指定しないでください。

- 46 -

Page 52: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

第5章 APIリファレンス

Symfoware .NET Data ProviderがサポートするAPIについて説明します。

5.1 Symfoware .NET Data Providerのクラス

Symfoware .NET Data Providerでは、Fujitsu.Symfoware.Client名前空間として、固有のクラスを提供します。

Fujitsu.Symfoware.Client名前空間は、Microsoft社のSystem.Data.SqlClient名前空間(以降、SqlClient名前空間と略します)に準拠し

ています。このため、Symfoware .NET Data ProviderのAPIの詳細は、Microsoft社のMSDNライブラリを参照してください。

なお、Fujitsu.Symfoware.Client名前空間とSqlClient名前空間では、APIの名前が異なるものがあります。名前が異なるAPIは、Microsoft社のMSDNライブラリを参照する際に、対応する名前に読み替えてください。

以下に、Fujitsu.Symfoware.Client名前空間とSqlClient名前空間の名前の対応関係を示します。

表5.1 Fujitsu.Symfoware.Client名前空間とSqlClient名前空間のクラス名の対応関係

Fujitsu.Symfoware.Client名前空間のクラス名 SqlClient名前空間のクラス名

SymfowareCommand SqlCommand

SymfowareCommandBuilder SqlCommandBuilder

SymfowareConnection SqlConnection

SymfowareConnectionStringBuilder SqlConnectionStringBuilder

SymfowareDataAdapter SqlDataAdapter

SymfowareDataReader SqlDataReader

SymfowareError SqlError

SymfowareErrorCollection SqlErrorCollection

SymfowareException SqlException

SymfowareFactory SqlClientFactory

SymfowareInfoMessageEventArgs SqlInfoMessageEventArgs

SymfowareParameter SqlParameter

SymfowareParameterCollection SqlParameterCollection

SymfowareRowUpdatedEventArgs SqlRowUpdatedEventArgs

SymfowareRowUpdatingEventArgs SqlRowUpdatingEventArgs

SymfowareTransaction SqlTransaction

表5.2 Fujitsu.Symfoware.Client名前空間とSqlClient名前空間のデリゲート名の対応関係

Fujitsu.Symfoware.Client名前空間のデリゲート名 SqlClient名前空間のデリゲート名

SymfowareInfoMessageEventHandler SqlInfoMessageEventHandler

SymfowareRowUpdatedEventHandler SqlRowUpdatedEventHandler

SymfowareRowUpdatingEventHandler SqlRowUpdatingEventHandler

表5.3 Fujitsu.Symfoware.Client名前空間とSqlClient名前空間のプロパティ名の対応関係

Fujitsu.Symfoware.Client名前空間のプロパティ名 SqlClient名前空間のプロパティ名

SymfowareParameter.SymfowareDbType SqlParameter.SqlDbType

- 47 -

Page 53: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

5.2 サポートAPI一覧

Symfoware .NET Data ProviderでサポートするAPIを以下に示します。

各APIの詳細は、Microsoft社のMSDNライブラリの.NET Framework Data Provider for SQL ServerのAPIを参照してください。一部の

APIには留意事項があります。詳細は、“5.4 留意事項”を参照してください。

Symfoware .NET Data Providerの拡張APIの詳細は、“5.3 拡張API”を参照してください。

表5.4 Symfoware .NET Data ProviderのサポートAPI一覧

クラス名 メンバ サポート状況

SymfowareCommand パブリックコンストラクタ SymfowareCommandコンストラクタ ○

パブリックプロパティ CommandText △

CommandTimeout △

CommandType ○

Connection ○

Container ○

DesignTimeVisible ○

Parameters ○

Site ○

Transaction △

UpdatedRowSource ○

パブリックメソッド Cancel ○

Clone ○

CreateObjRef ○

CreateParameter ○

Dispose △

Equals △

ExecuteNonQuery △

ExecuteReader △

ExecuteScalar △

GetHashCode ○

GetLifetimeService ○

GetType ○

InitializeLifetimeService ○

Prepare ○

ResetCommandTimeout ○

ToString ○

パブリックイベント Disposed ○

プロテクトプロパティ DesignMode ○

Events ○

プロテクトメソッド Dispose ○

Finalize ○

GetService ○

- 48 -

Page 54: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ サポート状況

MemberwiseClone ○

SymfowareCommandBuilder パブリックコンストラクタ SymfowareCommandBuilderコンストラクタ ○

パブリックプロパティ CatalogLocation △

CatalogSeparator △

ConflictOption ○

Container ○

DataAdapter △

SchemaSeparator △

SetAllValues ○

QuotePrefix △

QuoteSuffix △

Site ○

パブリックメソッド CreateObjRef ○

DeriveParameters ○

Dispose △

Equals △

GetDeleteCommand △

GetHashCode ○

GetInsertCommand △

GetLifetimeService ○

GetType ○

GetUpdateCommand △

InitializeLifetimeService ○

QuoteIdentifier ○

RefreshSchema △

ToString ○

UnquoteIdentifier ○

パブリックイベント Disposed ○

プロテクトプロパティ DesignMode ○

Events ○

プロテクトメソッド Dispose ○

Finalize ○

GetService ○

MemberwiseClone ○

SymfowareConnection パブリックコンストラクタ SymfowareConnectionコンストラクタ ○

パブリックプロパティ ConnectionString △

ConnectionTimeout ○

Container ○

Database ○

- 49 -

Page 55: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ サポート状況

Datasource ○

Host ◎

Port ◎

ServerVersion △

Site ○

State ○

パブリックメソッド BeginTransaction ◎(注)

ChangeDatabase ○

ChangePassword ○

ClearAllPools ○

ClearPool ○

Clone ○

Close ○

CreateCommand ○

CreateObjRef ○

Dispose ○

Equals △

GetHashCode ○

GetLifetimeService ○

GetSchema ○

GetType ○

InitializeLifetimeService ○

Open ○

ReleaseTable ◎

SetRole ◎

SetUserPassword ◎

ToString ○

パブリックイベント Disposed ○

StateChange △

InfoMessage ○

プロテクトプロパティ DesignMode ○

Events ○

プロテクトメソッド Dispose ○

Finalize ○

GetService ○

MemberwiseClone ○

SymfowareConnectionStringBuilder

パブリックコンストラクタ SymfowareConnectionStringBuilderコンス

トラクタ

パブリックプロパティ BrowsableConnectionString ○

ConnectionLifetime ◎

- 50 -

Page 56: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ サポート状況

ConnectionString △

ConnectTimeout ○

Count ○

DataSource ○

Enlist ○

InitialCatalog ○

IsFixedSize ○

IsReadOnly ○

Item ○

Keys ○

MaxPoolSize ○

MinPoolSize ○

Password ○

Pooling ○

Port ◎

Schema ◎

UserID ○

Values ○

EventLog ◎

Tuneparam ◎

Encrypt ○

CACertFile ◎

パブリックメソッド Add ○

AppendKeyValuePair ○

Clear ○

ContainsKey ○

Equals △

EquivalentTo ○

GetHashCode ○

GetType ○

ReferenceEquals ○

Remove ○

ShouldSerialize ○

ToString ○

TryGetValue ○

プロテクトメソッド Finalize ○

MemberwiseClone ○

SymfowareDataAdapter パブリックコンストラクタ SymfowareDataAdapterコンストラクタ ○

パブリックプロパティ AcceptChangesDuringFill ○

- 51 -

Page 57: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ サポート状況

AcceptChangesDuringUpdate ○

Container ○

ContinueUpdateOnError ○

DeleteCommand ○

FillLoadOption ○

InsertCommand ○

MissingMappingAction ○

MissingSchemaAction ○

ReturnProviderSpecificTypes ○

SelectCommand ○

Site ○

TableMappings ○

UpdateBatchSize ○

UpdateCommand ○

パブリックメソッド CreateObjRef ○

Dispose △

Equals △

Fill ○

FillSchema ○

GetFillParameters △

GetHashCode ○

GetLifetimeService ○

GetType ○

InitializeLifetimeService ○

ToString ○

Update ○

パブリックイベント Disposed ○

FillError ○

RowUpdated ○

RowUpdating ○

プロテクトプロパティ DesignMode ○

Events ○

プロテクトメソッド CloneInternals ○

CreateRowUpdatedEvent △

CreateRowUpdatingEvent △

CreateTableMappings ○

Dispose ○

Fill ○

FillSchema ○

- 52 -

Page 58: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ サポート状況

Finalize ○

GetService ○

MemberwiseClone ○

OnFillError ○

OnRowUpdated △

OnRowUpdating △

ShouldSerializeTableMappings ○

Update ○

SymfowareDataReader パブリックプロパティ Depth ○

IsClosed ○

RecordsAffected ○

FieldCount ○

HasRows ○

Item ○

パブリックメソッド Close △

CreateObjRef ○

Equals △

GetBoolean ○

GetByte ○

GetBytes ○

GetChar ×

GetChars △

GetDataTypeName ○

GetDateTime ○

GetDecimal ○

GetDouble ○

GetFieldType ○

GetFloat ○

GetGuid ×

GetHashCode ○

GetInt16 ○

GetInt32 ○

GetInt64 ○

GetLifetimeService ○

GetName ○

GetOrdinal ○

GetSchemaTable △

GetString △

GetType ○

- 53 -

Page 59: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ サポート状況

GetValue ○

GetValues ○

InitializeLifetimeService ○

IsDBNull ○

NextResult ○

Read ◎

ToString ○

プロテクトメソッド Finalize △

MemberwiseClone ○

SymfowareError パブリックプロパティ Message ○

Number ○

Source ○

SQLState △

パブリックメソッド Equals △

GetHashCode ○

GetType ○

ToString △

プロテクトメソッド Finalize ○

MemberwiseClone ○

SymfowareErrorCollection パブリックプロパティ Count ○

Item ○

パブリックメソッド CopyTo ○

Equals △

GetHashCode ○

GetType ○

ToString ○

プロテクトメソッド Finalize ○

MemberwiseClone ○

SymfowareException パブリックプロパティ Data ○

ErrorCode △

Errors ○

HelpLink ○

InnerException ○

Message △

Number ○

Source ○

StackTrace ○

SQLState ○

TargetSite ○

- 54 -

Page 60: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ サポート状況

パブリックメソッド Equals △

GetBaseException ○

GetHashCode ○

GetObjectData ○

GetType ○

ReferenceEquals ○

ToString △

プロテクトプロパティ HResult ○

プロテクトメソッド Finalize ○

MemberwiseClone ○

SymfowareFactory パブリックコンストラクタ SymfowareFactoryコンストラクタ ○

パブリックフィールド Instance ○

パブリックプロパティ CanCreateDataSourceEnumerator △

パブリックメソッド CreateCommand ○

CreateCommandBuilder ○

CreateConnection ○

CreateConnectionStringBuilder ○

CreateDataAdapter ○

CreateDataSourceEnumerator ○

CreateParameter ○

CreatePermission ○

Equals △

GetHashCode ○

GetType ○

ReferenceEquals ○

ToString ○

プロテクトメソッド Finalize ○

MemberwiseClone ○

SymfowareInfoMessageEventArgs

パブリックプロパティ Errors ○

Message ○

Source ○

SymfowareParameter パブリックコンストラクタ SymfowareParameterコンストラクタ △

パブリックプロパティ DbType ○

Direction △

IsNullable ○

SymfowareDbType △

ParameterName △

Precision ○

Scale ○

- 55 -

Page 61: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ サポート状況

Size ○

SourceColumn ○

SourceVersion ○

Value ○

パブリックメソッド CreateObjRef ○

Equals △

GetHashCode ○

GetLifetimeService ○

GetType ○

InitializeLifetimeService ○

ToString ○

プロテクトメソッド Finalize ○

MemberwiseClone ○

SymfowareParameterCollection パブリックプロパティ Count ○

Item ○

パブリックメソッド Add △

AddRange ○

Clear ○

Contains ○

CopyTo ○

IndexOf ○

Insert ○

Remove ○

RemoveAt ○

CreateObjRef ○

Equals △

GetHashCode ○

GetLifetimeService ○

GetType ○

InitializeLifetimeService ○

ToString ○

プロテクトメソッド Finalize ○

MemberwiseClone ○

SymfowareRowUpdatedEventArgs

パブリックコンストラクタ SymfowareRowUpdatedEventArgsコンスト

ラクタ

パブリックプロパティ Command ○

Errors ○

Row ○

StatementType ○

Status ○

- 56 -

Page 62: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ サポート状況

TableMapping ○

パブリックメソッド Equals △

GetHashCode ○

GetType ○

ToString ○

プロテクトメソッド Finalize ○

MemberwiseClone ○

SymfowareRowUpdatingEventArgs

パブリックコンストラクタ SymfowareRowUpdatingEventArgsコンスト

ラクタ

パブリックプロパティ Command ○

Errors ○

Row ○

StatementType ○

Status ○

TableMapping ○

パブリックメソッド Equals △

GetHashCode ○

GetType ○

ToString ○

プロテクトメソッド Finalize ○

MemberwiseClone ○

SymfowareTransaction パブリックプロパティ Connection ○

IsolationLevel △

AccessMode ◎

パブリックメソッド Commit ○

CreateObjRef ○

Dispose △

Equals △

GetHashCode ○

GetLifetimeService ○

GetType ○

InitializeLifetimeService ○

Rollback ○

ToString ○

プロテクトメソッド Finalize △

MemberwiseClone ○

◎: Symfoware .NET Data Providerの拡張API○: .NET Framework Data Provider for SQL ServerのAPIと同様

△: Symfoware .NET Data Providerの留意事項あり

×: Symfoware .NET Data Providerでは使用不可

注)IsolationLevelの指定に留意事項があります。

- 57 -

Page 63: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

5.3 拡張APISymfoware .NET Data Providerの拡張APIについて説明します。

拡張API以外のサポートAPIの詳細は、Microsoft社のMSDNライブラリを参照してください。

5.3.1 SymfowareConnectionクラス

SymfowareConnectionクラスで拡張したAPIは、以下のメンバです。

・ Hostプロパティ

・ Portプロパティ

・ BeginTransactionメソッド

・ ReleaseTableメソッド

・ SetRoleメソッド

・ SetUserPasswordメソッド

Hostプロパティ

接続するSymfoware Serverのホスト名を取得します。

記述形式

[C#]

public string Host {get;}

[Visual Basic .NET]

Public ReadOnly Property Host As String

プロパティ値

接続するSymfoware Serverのホスト名。

Portプロパティ

リモートアクセスで使用するポート番号を取得します。

記述形式

[C#]

public int Port {get;}

[Visual Basic .NET]

Public ReadOnly Property Port As Integer

プロパティ値

リモートアクセスで使用するポート番号。

BeginTransactionメソッド

データベース トランザクションを開始します。既存のオーバーロードに加え、以下のオーバーロードを使用することができます。

オーバーロードの一覧

アクセスモードを指定して、データベース トランザクションを開始します。

[C#]

public SymfowareTransaction BeginTransaction(SymfowareAccessMode accessMode);

- 58 -

Page 64: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

[Visual Basic .NET]

Public Function BeginTransaction (accessMode As SymfowareAccessMode) As SymfowareTransaction

アクセスモードと分離レベルを指定して、データベース トランザクションを開始します。

[C#]

public SymfowareTransaction BeginTransaction (IsolationLevel level, SymfowareAccessMode accessMode);

[Visual Basic .NET]

Public Function BeginTransaction (level As IsolationLevel,accessMode As SymfowareAccessMode) As SymfowareTransaction

記述形式

[C#]

public SymfowareTransaction BeginTransaction (IsolationLevel level, SymfowareAccessMode accessMode);

[Visual Basic .NET]

Public Function BeginTransaction (level As IsolationLevel,accessMode As SymfowareAccessMode) As SymfowareTransaction

パラメタ

level

接続のトランザクション ロック動作を指定します。

IsolationLevel.ReadCommitted

IsolationLevel.ReadCommittedを指定した場合、ほかのトランザクションで追加および更新されたデータはそのトランザクショ

ンがCOMMITするまで検索することはできません。

ただし、検索する表が、DSO定義でPRECEDENCE(1)が指定されたSEQUENTIAL構造の場合には、ほかのトランザクショ

ンがCOMMITするまでの間は、追加および更新がなされる前のデータを検索することができます。

いずれの場合も、以下の条件の時は、直前の検索結果と異なる結果を得る場合があります。

- 検索後のデータにほかの利用者が更新および削除をしてCOMMITした場合

- 探索条件を指定したSQL文を実行し、その後、ほかの利用者が探索条件に一致した行を追加した場合

IsolationLevel.ReadUncommitted

IsolationLevel.ReadUncommittedを指定した場合、ほかのトランザクションで追加および更新されたデータをそのトランザク

ションがCOMMITされる前に検索することができます。

ただし、以下の条件の時は、直前の検索結果と異なる結果を得る場合があります。

- ほかの利用者の更新系のトランザクションがCOMMITされる前に、その更新したデータの検索をした場合

- 検索後のデータにほかの利用者が更新および削除をしてCOMMITした場合

- 探索条件を指定したSQL文を実行し、その後、ほかの利用者が探索条件に一致した行を追加した場合

IsolationLevel.RepeatableRead

IsolationLevel.RepeatableReadを指定した場合、ほかのトランザクションで追加および更新されたデータはそのトランザクショ

ンがCOMMITするまで検索することはできません。

ただし、以下の条件の時は、直前の検索結果と異なる結果を得る場合があります。

- 探索条件を指定したSQL文を実行し、その後、ほかの利用者が探索条件に一致した行を追加した場合

IsolationLevel.Serializable

IsolationLevel.Serializableを指定した場合、ほかのトランザクションで追加および更新されたデータは、そのトランザクション

がCOMMITされるまで検索することはできません。

- 59 -

Page 65: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

IsolationLevel.Chaos

Symfoware .NET Data Providerでは、指定できません。

指定すると、エラーが返却されます

IsolationLevel.Snapshot

Symfoware .NET Data Providerでは、指定できません。

指定すると、エラーが返却されます

IsolationLevel.Unspecified

Symfoware .NET Data Providerでは、指定できません。

指定すると、エラーが返却されます

accessMode

トランザクションのAccessMode列挙体のパラメタを指定します。

SymfowareAccessMode.ReadOnly

トランザクション内で参照系のSQL文のみ、実行することができます。

SymfowareAccessMode.ReadWrite

トランザクション内で参照系および更新系のSQL文を実行することができます。

戻り値

新しいトランザクションを表すオブジェクト。

例外

例外の種類 条件

ArgumentException 無効な引数が指定されました。

または

必要な引数が指定されませんでした。

InvalidOperationException 並列トランザクションはサポートされていません。

または

SymfowareConnectionがクローズされました。

または

SymfowareDataReaderがオープン中です。

ReleaseTableメソッド

一時表に格納したデータを削除し、一時表の領域を解放します。

記述形式

[C#]

public void ReleaseTable (String schemaName, String tableName);

[Visual Basic .NET]

Public Sub ReleaseTable (schemaName As String,tableName As String)

パラメタ

schemaName

スキーマの名前。

tableName

解放する一時表の名前。

- 60 -

Page 66: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

注意

Symfoware/RDBのサーバ側に存在しないスキーマ名、またはテーブル名を指定した場合は、削除対象の一時表がないため、削

除処理を中止して正常復帰します。

例外

例外の種類 条件

ArgumentException schemaName、またはtableNameに、NULLまたは空文字列が指

定されました。

InvalidOperationException SymfowareConnectionがクローズされました。

または

SymfowareDataReaderがオープン中です。

SymfowareException データベースアクセスエラーが発生しました。

使用例

[C#]

public void ReleaseTableWithName(string modifiedTable)

{

string connString = "data source=myhost;port=26551;" +

"initial catalog=company;user id=Symfo;password=Symfo;";

SymfowareConnection conn1 = new SymfowareConnection(connString);

try

{

conn1.Open();

conn1.ReleaseTable("SC1",modifiedTable);

conn1.Close();

}

catch (SymfowareException ex1)

{

// エラー処理ルーチンを記述

}catch (Exception ex2)

{

// エラー処理ルーチンを記述

}

finally

{

if ((conn1!= null) && (conn1.State == ConnectionState.Open))

{

conn1.Close();

}

}

}

[Visual Basic .NET]

Public Sub ReleaseTableWithName(ByVal modifiedTable As String)

Dim connString As String = "data source=myhost;port=26551;" _

& "initial catalog=company;user id=symfo;password=symfo;"

Dim conn1 As New SymfowareConnection(connString)

Try

conn1.Open()

conn1.ReleaseTable("SC1", modifiedTable)

conn1.Close()

Catch ex1 As SymfowareException

'エラー処理ルーチンを記述

- 61 -

Page 67: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

Catch ex2 As Exception

'エラー処理ルーチンを記述

Finally

If ((Not conn1 Is Nothing) And (conn1.State = ConnectionState.Open)) Then

conn1.Close()

End If

End Try

End Sub

SetRoleメソッド

現行SQLセションに対してロールを有効にします。

記述形式

[C#]

public void SetRole (String roleName, Int32 roleType);

[Visual Basic .NET]

Public Sub SetRole (roleName As String,roleType As Integer)

パラメタ

roleName

ロール名。現行SQLセションに対して有効にするロールの名前を指定します。実行者はロールの権限受領者でなければなりま

せん。ロール名に空白を含めた場合は、前後の空白を取り除いた値をロール名とします。

roleType

ロール種別。以下のいずれかの値を指定します。

0:ロール名指定

1:DEFAULT

現行SQLセションでデフォルトロールの設定を有効にします。

2:NONE

現行SQLセションで有効となっているロールを無効にします。

注意

- roleTypeに1または2を指定した場合、roleNameの指定は無効となります。

- Symfoware/RDBのサーバ側に存在しないロール名を指定した場合は、設定対象のロールがないため、設定処理を中止して

正常復帰します。

例外

例外の種類 条件

ArgumentException roleTypeに0、かつ、roleNameにNULLまたは空文字列が指定さ

れました。

または

roleTypeに有効範囲外の値が設定されました。

InvalidOperationException SymfowareConnectionがクローズされました。

または

SymfowareDataReaderがオープン中です。

SymfowareException データベースアクセスエラーが発生しました。

- 62 -

Page 68: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

使用例

[C#]

public void ChangeRolesWithName(string roleName,int roleType)

{

string connString = "data source=myhost;port=26551;" +

"initial catalog=company;user id=Symfo;password=Symfo;";

SymfowareConnection conn1 = new SymfowareConnection(connString);

try

{

conn1.Open();

conn1.SetRole(roleName,roleType);

conn1.Close();

}

catch (SymfowareException ex1)

{

// エラー処理ルーチンを記述

}

catch (Exception ex2)

{

// エラー処理ルーチンを記述

}

finally

{

if ((conn1!= null) && (conn1.State == ConnectionState.Open))

{

conn1.Close();

}

}

}

[Visual Basic .NET]

Public Sub ChangeRolesWithName(ByVal roleName As String, ByVal roleType As Integer)

Dim connString As String = "data source=myhost;port=26551;" _

& "initial catalog=company;user id=symfo;password=symfo;"

Dim conn1 As New SymfowareConnection(connString)

Try

conn1.Open()

conn1.SetRole(roleName, roleType)

conn1.Close()

Catch exception1 As SymfowareException

'エラー処理ルーチンを記述

Catch exception2 As Exception

'エラー処理ルーチンを記述

Finally

If ((Not conn1 Is Nothing) And (conn1.State = ConnectionState.Open)) Then

conn1.Close()

End If

End Try

End Sub

SetUserPasswordメソッド

Symfoware/RDBで利用者の認証情報を管理している場合、現行セションの利用者(認可識別子)のパスワードを変更します。

- 63 -

Page 69: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

記述形式

[C#]

public void SetUserPassword (String password);

[Visual Basic .NET]

Public Sub SetUserPassword (password As String)

パラメタ

password

変更後のパスワード。

解説

- 変更後のパスワードを指定します。文字列定数、または文字列型の埋込み変数で指定してください。

- 変更後のパスワードは、現在使用しているパスワードに対し、3文字以上違うものでなければなりません。また、大文字と小文字

は同じ文字として扱います。

- パスワードに空白を含めた場合は、前後の空白を取り除いた値をパスワードとします。

- パスワードの更新に失敗した場合、例外が返ります。

参照

パスワードの指定形式の詳細については、“SQLリファレンス”の“CREATE USER文(利用者定義文)”を参照してください。

例外

例外の種類 条件

ArgumentException passwordにNULLまたは空文字列が指定されました。

InvalidOperationException SymfowareConnectionがクローズされました。

または

SymfowareDataReaderがオープン中です。

SymfowareException 指定したパスワードが、“解説”に記載されている内容を満たして

いません。

使用例

[C#]

public void ChangeUserPassword(string password)

{

string connString = "data source=myhost;port=26551;" +

"initial catalog=company;user id=Symfo;password=Symfo;";

SymfowareConnection conn1 = new SymfowareConnection(connString);

try

{

conn1.Open();

conn1.SetUserPassword(password);

conn1.Close();

}

catch (SymfowareException ex1)

{

// エラー処理ルーチンを記述

}

catch (Exception ex2)

{

- 64 -

Page 70: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

// エラー処理ルーチンを記述

}

finally

{

if ((conn1!= null) && (conn1.State == ConnectionState.Open))

{

conn1.Close();

}

}

}

[Visual Basic .NET]

Public Sub ChangeUserPassword(ByVal password As String)

Dim connString As String = "data source=myhost;port=26551;" _

& "initial catalog=company;user id=symfo;password=symfo;"

Dim conn1 As New SymfowareConnection(connString)

Try

conn1.Open()

conn1.SetUserPassword(password)

conn1.Close()

Catch exception1 As SymfowareException

'エラー処理ルーチンを記述

Catch exception2 As Exception

'エラー処理ルーチンを記述

Finally

If ((Not conn1 Is Nothing) And (conn1.State = ConnectionState.Open)) Then

conn1.Close()

End If

End Try

End Sub

5.3.2 SymfowareConnectionStringBuilderクラス

SymfowareConnectionStringBuilderクラスで拡張したAPIは、以下のメンバです。

・ ConnectionLifetimeプロパティ

・ Portプロパティ

・ Schemaプロパティ

・ EventLogプロパティ

・ TuneParamプロパティ

・ CACertFileプロパティ

ConnectionLifetimeプロパティ

プールしているコネクションのタイムアウトの値を取得、または設定します。

記述形式

[C#]

public int ConnectionLifetime {get;set;}

[Visual Basic .NET]

Public Property ConnectionLifetime As Integer

プロパティ値

プールしているコネクションのタイムアウトの値。

- 65 -

Page 71: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

例外

例外の種類 条件

ArgumentException ConnectionLifetimeに0未満の値が指定されました。

Portプロパティ

リモートアクセスで使用するポート番号を取得、または設定します。

Symfoware Serverのバージョンレベルや対象のプラットフォームによって、デフォルトのポート番号が異なります。ポート番号を設定す

る場合、サーバ側で定義されているポート番号を確認の上、指定してください。

記述形式

[C#]

public int Port {get;set;}

[Visual Basic .NET]

Public Property Port As Integer

プロパティ値

リモートアクセスで使用するポート番号。

例外

例外の種類 条件

ArgumentException Portに0未満の値が指定されました。

Schemaプロパティ

接続するSymfoware Serverのデフォルトスキーマ名を取得、または設定します。

記述形式

[C#]

public string Schema {get;set;}

[Visual Basic .NET]

Public Property Schema As String

プロパティ値

アプリケーションで使用するSQL文のデフォルトスキーマ名。

例外

例外の種類 条件

ArgumentException SchemaにNULL値が指定されました。

EventLogプロパティ

EventLogの取得の有無やログの取得レベルを取得、または設定します。

記述形式

[C#]

public string EventLog {get;set;}

[Visual Basic .NET]

Public Property EventLog As String

- 66 -

Page 72: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

プロパティ値

EventLogの取得の有無やログの取得レベル。

例外

例外の種類 条件

ArgumentException EventLogにNULL値が指定されました。

TuneParamプロパティ

接続するSymfoware Serverのクライアント用の動作環境ファイルの実行パラメタを取得、または設定します。

記述形式

[C#]

public string TuneParam {get;set;}

[Visual Basic .NET]

Public Property TuneParam As String

プロパティ値

Symfoware Serverのクライアント用の動作環境ファイルの実行パラメタの値。

例外

例外の種類 条件

ArgumentException TuneParamにNULL値が指定されました。

CACertFileプロパティ

通信データを暗号化する場合、サーバ認証で使用する認証局(Certificate Authority: CA)証明書ファイルの配置先の絶対パスを取

得、または設定します。

記述形式

[C#]

public string CACertFile{get;set;}

[Visual Basic .NET]

Public Property CACertFile As String

プロパティ値

CA証明書ファイルの絶対パス。

例外

例外の種類 条件

ArgumentException CACertFileにNULL値が指定されました。

5.3.3 SymfowareTransactionクラス

SymfowareTransactionクラスで拡張したAPIは以下のとおりです。

AccessModeプロパティ

トランザクションのアクセスモードを取得します。

- 67 -

Page 73: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

記述形式

[C#]

public SymfowareAccessMode AccessMode {get;}

[Visual Basic .NET]

Public ReadOnly Property AccessMode As SymfowareAccessMode

プロパティ値

トランザクションのアクセスモード。初期値はReadWriteです。

tuneparamキーワード、システム用の動作環境ファイル、およびサーバ用の動作環境ファイルでDEFAULT_ACCESS_MODEを重

複して指定した場合、アクセスモードの優先順位は、以下のとおりです。

1. サーバ用の動作環境ファイル

2. tuneparamキーワード

3. システム用の動作環境ファイル

解説

並列トランザクションはサポートしていません。このため、アクセスモードはトランザクション全体に適用されます。

5.3.4 SymfowareDataReaderクラス

SymfowareDataReaderクラスで拡張したAPIは以下のとおりです。

READメソッド

SymfowareDataReaderを次のレコードに進めます。

記述形式

[C#]

public override bool Read();

[Visual Basic .NET]

Public Overrides Function Read As Boolean

戻り値

次の行がある場合はtrue、それ以外の場合はfalse。

例外

例外の種類 条件

InvalidOperationException カレントデータリーダーがクローズされています。または、コネク

ションが切断されています。

symfowareException データ送信中にサーバとの通信が切断されました。

解説

SymfowareDataReaderの規定の位置は、 初のレコードの前です。そのため、データへのアクセスを開始するには、Readメソッドを

呼び出す必要があります。

関連付けられたSymfowareConnectionで開くことのできるSymfowareDataReader は、一度に1 つだけです。データリーダーを閉じる

前に別のデータリーダーを開くことはできません。同様に、 SymfowareDataReaderの使用中は、関連付けられたSymfowareConnectionは、そのデータリーダーによって使用されるため、Closeが呼び出されるまではビジー状態になります。

- 68 -

Page 74: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

使用例

[C#]

public void ReadMyData(string myConnString)

{

strring mySelectQuery = "SELECT OrderID, CustomerID FROM General.Orders";

try

{

SymfowareConnection myConnection = new SymfowareConnection(myConnString);

SymfowareCommand myCommand = new

SymfowareCommand(mySelectQuery,myConnection);

myConnection.Open();

SymfowareDataReader myReader;

myReader = myCommand.ExecuteReader();

// データへのアクセス前にReadメソッドを呼び出す

while (myReader.Read()) {

Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1));

}

// SymfowareDataReaderをクローズする

myReader.Close();

// コネクションをクローズする

myConnection.Close();

}

catch (symfowareException ex)

{

// エラー処理ルーチンを記述

}

}

[Visual Basic .NET]

Public Sub ReadMyData(ByVal connectionString As String)

Dim mySelectQuery As String = _

"SELECT OrderID, CustomerID FROM General.Orders;"

Using myConnection As New SymfowareConnection(connectionString)

Dim myCommand As New SymfowareCommand(mySelectQuery, myConnection)

myConnection.Open()

Dim myReader As SymfowareDataReader = myCommand.ExecuteReader()

'データへのアクセス前にReadメソッドを呼び出す

While myReader.Read()

Console.WriteLine(String.Format("{0}, {1}", _

myReader(0), myReader(1)))

End While

'SymfowareDataReaderをクローズする

myReader.Close()

End Using

End Sub

5.4 留意事項

サポートAPIの使用上の留意事項は以下のとおりです。各APIの詳細は、Microsoft社のMSDNライブラリを参照してください。

- 69 -

Page 75: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ 留意事項

SymfowareCommand CommandText ・ 疑問符(?)のプレースホルダを利用する場合

- SymfowareCommand.CommandTextプロパティでは、疑問符(?)のプレースホルダを使用してください。

例:

SELECT * FROM SC1.TABLE1 WHERE C1 = ?

- SymfowareCommand.CommandTextプロパティに疑問符プレース

ホルダを利用した場合、疑問符プレースホルダの順序と、

SymfowareParameterCollection.Add メ ソ ッ ド に よ り

SymfowareParameterCollectionにSymfowareParameterオブジェクト

を追加する順序を一致させてください。

- SymfowareCommand.CommandTextプロパティに疑問符プレース

ホルダを利用した場合、SymfowareParameter.ParameterNameプロ

パティにパラメタ名を指定しても、SymfowareParameterCollectionにSymfowareParameterオブジェクトを追加した順序で処理されます。

・ 名前付きパラメタを利用する場合

- 名前付きパラメタは、先頭が英字で始まる英数字または日本語(各国語文字)のパラメタに接頭辞“:”を付与して指定します。ただし、

パラメタ名に区切りトークン、分離符号、エスケープ文字は使用で

きません。

例:

cmd.CommandText = "SELECT * FROM SC1.TABLE1 WHEREC1 = :Param1";

- SymfowareParameterCollectionにSymfowareParameterオブジェクト

を追加する場合は、SymfowareParameterのParameterNameプロパ

ティとSQL文で指定した名前付きパラメタの名前を一致させてくだ

さい。ParameterNameプロパティに接頭辞“:”は不要です。

例:

cmd.Parameters.Add("Param1", SymfowareDbType.Char);cmd.Parameters["Param1"].Value = "test";

- 同名の名前付きパラメタをSQL文に重複して使用する場合は、

SymfowareParameter の Direction プ ロ パ テ ィ に 必 ず

ParameterDirection.Inputを指定してください。

- SymfowareParameterCollectionには、同名の名前付きパラメタを複

数登録することはできません。

例:

cmd.CommandText = "SELECT * FROM SC1.TABLE1 WHEREC1 = :Param1 AND C2 = :Param1 ";cmd.Parameters.Add("Param1", SymfowareDbType.Char);cmd.Parameters["Param1"].Direction =ParameterDirection.Input;cmd.Parameters["Param1"].Value = "test";

・ 1つのSQL文で疑問符プレースホルダと名前付きパラメタは混在して利

用できません。

CommandTimeout ・ タイムアウトした場合、SQLSTATE(61000)の例外が発生します。

・ CommandTimeoutの効果を得るためには、接続文字列に設定する

チューニングパラメタのWAIT_TIMEより小さい値を設定してください。

・ 指定できる範囲は、0~32767です。単位は秒です。初期値は0秒です。

0を指定すると無制限になります。

・ 本機能は、ロードシェア運用をサポートしていません。

- 70 -

Page 76: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ 留意事項

Transaction SymfowareCommand.Transactionプロパティでは、常に

SymfowareCommandオブジェクト関連のコネクションの起動したトランザク

ションを返却します。当該プロパティを手動で設定する場合、ユーザの設定

値が無視されます。

Dispose 以下のオブジェクトを生成すると、.NET Framework環境だけではなく、サー

バ側にも資源が作成されます。

・ SymfowareCommandオブジェクト

・ SymfowareDataReaderオブジェクト

作成された資源は、不要になった時点でSymfowareCommand.Disposeメソッド、またはSymfowareDataReader.Closeメソッドを実行することにより、即

座に解放することができます。しかし、これらのメソッドを省略し、資源解放

をガーベジコレクションに任せている場合、ガーベジコレクションは.NETFramework環境の空間を制御しているだけなので、サーバ側に無駄な資源

が残る可能性があり、性能上の問題となります。これらのオブジェクトが不要

となった場合は、必ずSymfowareCommand.Disposeメソッド、または

SymfowareDataReader.Closeメソッドを指定し、解放してください。

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

SymfowareCommandBuilder

CatalogLocation tuneparamキーワード“TableAdapterCompatible”の値により、動作が異なり

ます。

TableAdapterCompatibleの値がOFFの場合は、MSDNと同様の動作となり

ます。TableAdapterCompatibleの値がONの場合は、V10.1.0以前の動作と

なります。動作の違いについては、“B.2 tuneparamキーワード”の

“TableAdapterCompatible ”を参照してください。

CatalogSeparator

DataAdapter

SchemaSeparator

QuotePrefix

QuoteSuffix

Dispose

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

GetDeleteCommand ・ GetDeleteCommand()メソッド、GetInsertCommand()メソッドおよび

GetUpdateCommand() メ ソ ッ ド で は 、 tuneparam キ ー ワ ー ド

“TableAdapterCompatible”の値により、動作が異なります。

TableAdapterCompatibleの値がOFFの場合は、MSDNと同様の動作と

なります。TableAdapterCompatibleの値がONの場合は、V10.1.0以前の

動作となります。動作の違いについては、“B.2 tuneparamキーワード”

の“TableAdapterCompatible ”を参照してください。

・ TableAdapterCompatible の 値 が OFF の 場 合、

GetDeleteCommand(bool)メソッド、GetInsertCommand(bool)メソッドおよ

び GetUpdateCommand(bool)メソッドは使用可能ですが、代入されたパ

ラメタが無視され、返却結果はGetXXXCommand()と同じになります。

GetInsertCommand

GetUpdateCommand

RefreshSchema tuneparamキーワード“TableAdapterCompatible”の値により、動作が異なり

ます。

TableAdapterCompatibleの値がOFFの場合は、MSDNと同様の動作となり

ます。TableAdapterCompatibleの値がONの場合は、V10.1.0以前の動作と

なります。動作の違いについては、“B.2 tuneparamキーワード”の

“TableAdapterCompatible ”を参照してください。

SymfowareConnection - 1つのSymfowareConnectionオブジェクトで、同時に実行可能な

SymfowareCommandオブジェクトの数は、32000個です。

- 71 -

Page 77: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ 留意事項

ConnectionString SymfowareConnection.ConnectionStringプロパティには、Symfoware .NETData Provider固有のキーワードを指定することができます。キーワードの詳

細は、“付録B 接続文字列に指定可能なキーワード”を参照してください。

ServerVersion SymfowareConnection.ServerVersionプロパティで取得するバージョンレベ

ルの形式は、以下のとおりです。

VxxLyyxxはSymfoware Serverのバージョンを、yyはSymfoware Serverのレベルを

表します。バージョンおよびレベルは、それぞれ2桁で表示されます。

BeginTransaction ・ システム用の動作環境ファイルのR_LOCKがNOまたはtuneparamキー

ワ ー ド の R_LOCK が NO の 場 合、

SymfowareConnection.BeginTransaction メ ソ ッ ドの IsolationLevel にRepeatableReadを指定すると、独立性水準はSERIALIZABLEになりま

す。

・ システム用の動作環境ファイルのR_LOCKがYESまたはtuneparamキー

ワ ー ド の R_LOCK が YES の 場 合、

SymfowareConnection.BeginTransaction メ ソ ッ ドの IsolationLevel にSerializableを指定すると、独立性水準はREPEATABLE READになり

ます。

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

StateChange オーバーライド済みです。イベントの状態が変更したときに発生します。

SymfowareConnectionStringBuilder

ConnectionString オーバーライド済みです。DbConnectionStringBuilder に関連付けられる接

続文字列を取得または設定します。

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

SymfowareDataAdapter - SymfowareDataAdapterは、関連するSymfowareCommandとSymfowareConnectionを使用して、データベースを操作します。

・ 関 連 す る SymfowareCommand に は 、 SelectCommand、DeleteCommand、InsertCommand、UpdateCommand属性が含まれてい

ます。

[SelectCommandの設定方法]

以下のいずれかの方法でSelectCommandを設定してください。

- SymfowareDataAdapter(String,SymfowareConnection);

- SymfowareDataAdapter(String, String);

- SymfowareDataAdapter xxxAdap = newSymfowareDataAdapter(SymfowareCommand);

- xxxAdap.SelectCommand=xxxCommand;

[DeleteCommand、InsertCommand、UpdateCommandの設定方法]

以 下 の い ず れ か の 方 法 で DeleteCommand 、 InsertCommand、UpdateCommandを設定してください。

- SymfowareCommandBuilderを使って生成する。

SymfowareCommandBuilderでの生成例:

SymfowareDataAdapter adp = new SymfowareDataAdapter("SELECT

* FROM TB1", con);

SymfowareCommandBuilder builder = new

SymfowareCommandBuilder(adp);

- 72 -

Page 78: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ 留意事項

adp.Update();

- xxxCommandのセットメソッドを利用して、当該属性に直接設定する。

例:

xxxAdap.UpdateCommand=xxxCommand;

・ 関連するSymfowareConnectionは、以下のいずれかの方法で設定して

ください。

- SymfowareDataAdapter(SymfowareCommand,String);

- SymfowareDataAdapter(String,String);

- SymfowareDataAdapter xxxAdap = newSymfowareDataAdapter(SymfowareConnection);

- xxxAdap.SelectCommand.Connection=xxxConnection;

Dispose Component によって使用されているリソースを解放します(Component から

継承されます)。

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

GetFillParameters オーバーライド済みです。SQL SELECT ステートメントの実行時にユーザ

が設定したパラメタを取得します。

OnRowUpdated オーバーライド済みです。.NET Framework Data Providerの RowUpdatedイベントを発生させます。

OnRowUpdating オーバーライド済みです。.NET Framework Data Providerの RowUpdatingイベントを発生させます。

CreateRowUpdatedEvent

オーバーライド済みです。RowUpdatedEventArgsクラスの新しいインスタン

スを初期化します。

CreateRowUpdatingEvent

オーバーライド済みです。RowUpdatingEventArgsクラスの新しいインスタン

スを初期化します。

SymfowareDataReader Close 以下のオブジェクトを生成すると、.NET Framework環境だけではなく、サー

バ側にも資源が作成されます。

・ SymfowareCommandオブジェクト

・ SymfowareDataReaderオブジェクト

作成された資源は、不要になった時点でSymfowareCommand.Disposeメソッド、またはSymfowareDataReader.Closeメソッドを実行することにより、即

座に解放することができます。しかし、これらのメソッドを省略し、資源解放

をガーベジコレクションに任せている場合、ガーベジコレクションは.NETFramework環境の空間を制御しているだけなので、サーバ側に無駄な資源

が残る可能性があり、性能上の問題となります。これらのオブジェクトが不要

となった場合は、必ずSymfowareCommand.Disposeメソッド、または

SymfowareDataReader.Closeメソッドを指定し、解放してください。

GetChars SymfowareDataReader.GetCharsメソッドでは、すべての場合において

GetCharsを使用してVarChar列をチャンクとして読み取ることができます。

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

GetSchemaTable ・ 他システムから接続しているコネクション数がMAX_CONNECT_TCPに指 定 し た 接 続 数 に 達 し て い る 場 合、

- 73 -

Page 79: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ 留意事項

SymfowareDataRearder.GetSchemaTableメソッドによりスキーマ情報を

取得することはできません。

・ SymfowareDataReader.GetSchemaTable メ ソ ッ ド は、

SymfowareDataReaderの各列のメタデータを記述するDataTableオブ

ジェクトを返却します。

DataTableに格納された列のメタデータは、“付録G SchemaTable”を参

照してください。

GetString SymfowareDataReader.GetStringメソッドでは、SymfowareのBLOB列以外

の列で、データ参照可能です。BLOB列のデータを参照した場合は、エラー

を返却します。

詳細は、“2.4 データ型の対応関係”を参照してください。

Finalize Object がガベージコレクションにより収集される前に、その Object がリソー

スを解放し、その他のクリーンアップ操作を実行できるようにします(Objectから継承されます)。クラスで、~SymfowareDataReader()の形でFinalize機能を実装しています。

SymfowareError SQLState SymfowareError.SQLStateプロパティでは、SQLSTATEを取得します。

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

ToString SymfowareError.ToStringメソッドで取得するエラーテキスト形式は以下のと

おりです。

[Symfoware]JYPメッセージ番号 エラーメッセージ

SymfowareErrorCollection

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

SymfowareException ErrorCode エラーのHRESULTを取得します。デフォルト値は、“-2146232080”です。

Message オーバーライド済みです。現在の例外を説明するメッセージを取得します。

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

ToString オーバーライド済みです。現在の例外の文字列形式を作成して返します。

SymfowareFactory CanCreateDataSourceEnumerator

DbDataSourceEnumeratorを作成できる場合は true、それ以外の場合は falseを返します(DbProviderFactoryから継承されます)。

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

SymfowareParameter SymfowareParameterコンストラクタ

SymfowareParameterコンストラクタのパラメタ、またはSymfowareParamterのDirectionプロパティに、ParameterDirection.ReturnValueが指定された

SymfowareParameterオブジェクトには、SQL文を実行しても、何も値を設定

しません。すでに値が設定されている場合には、そのまま返却します。Direction

SymfowareDbType SymfowareParameter.SymfowareDbTypeプロパティに指定可能なデータ型

の詳細は、“表5.5 SymfowareDbType列挙型とSymfoware Serverのデータ

型の対応関係”を参照してください。初期値はVarCharです。

ParameterName SymfowareCommand.CommandTextプロパティに疑問符プレースホルダを

利用した場合、SymfowareParameter.ParameterNameプロパティにパラメタ

名を指定しても、SymfowareParameterCollectionにSymfowareParameterオブジェクトを追加した順序で処理されます。

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

SymfowareParameterCollection

Add SymfowareCommand.CommandTextプロパティに疑問符プレースホルダを

利用した場合、疑問符プレースホルダの順序と、

SymfowareParameterCollection.Addメソッドにより

- 74 -

Page 80: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

クラス名 メンバ 留意事項

SymfowareParameterCollectionにSymfowareParameterオブジェクトを追加

する順序を一致させてください。

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

SymfowareRowUpdatedEventArgs

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

SymfowareRowUpdatingEventArgs

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

SymfowareTransaction IsolationLevel SymfowareTransaction.IsolationLevelプロパティの既定値は、

“ReadUncommitted”です。

Dispose オーバーライド済みです。DbTransaction によって使用されているアンマネー

ジリソースを解放します。

Equals 2つの Object インスタンスが等しいかどうかを判断します(Object から継承さ

れます)。

Finalize Object がガベージコレクションにより収集される前に、その Object がリソー

スを解放し、その他のクリーンアップ操作を実行できるようにします(Objectから継承されます)。クラスで、~SymfowareTransaction()の形でFinalize機能を実装しています。

表5.5 SymfowareDbType列挙型とSymfoware Serverのデータ型の対応関係

Symfoware ServerのSQLのデータ型

SymfowareDbTypeの列挙値の

文字列表現

SymfowareDbType列挙値の

整数表現

BLOB BLOB 0

CHAR Char 1

VARCHAR VarChar 2

NCHAR NChar 3

NCHAR VARYING NCharVarying 4

DATE Date 5

TIME Time 6

TIMESTAMP Timestamp 7

NUMERIC Numeric 8

DECIMAL Decimal 9

REAL Real 10

FLOAT/DOUBLE PRECISION DoublePrecision 11

SMALLINT SmallInt 12

INT Int 13

INTERVAL YEAR IntervalYear 14

INTERVAL MONTH IntervalMonth 15

INTERVAL YEAR TO MONTH IntervalYearToMonth 16

INTERVAL DAY IntervalDay 17

INTERVAL DAY TO HOUR IntervalDayToHour 18

INTERVAL DAY TO MINUTE IntervalDayToMinute 19

- 75 -

Page 81: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

Symfoware ServerのSQLのデータ型

SymfowareDbTypeの列挙値の

文字列表現

SymfowareDbType列挙値の

整数表現

INTERVAL DAY TO SECOND IntervalDayToSecond 20

INTERVAL HOUR IntervalHour 21

INTERVAL HOUR TO MINUTE IntervalHourToMinute 22

INTERVAL HOUR TO SECOND IntervalHourToSecond 23

INTERVAL MINUTE IntervalMinute 24

INTERVAL MINUTE TO SECOND IntervalMinuteToSecond 25

INTERVAL SECOND IntervalSecond 26

- 76 -

Page 82: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

付録A サンプルプログラム

本付録では、Symfoware .NET Data Providerを利用したWebアプリケーションのサンプルコード、および留意事項について説明しま

す。

なお、このサンプルコードを実行する場合は、Visual Studioを使用してください。サンプルコードはC#、およびVisual Basic .NETで作

成しています。

A.1 サンプル実行前の準備

本付録に記載されているサンプルコードは、以下のデータベース定義環境への接続を想定しています。

参照

データベースの作成についての詳細は、“RDB運用ガイド(データベース定義編)”を参照してください。

また、データベース簡単運用でのデータベース作成については、“データベース簡単運用ガイド”を参照してください。

データベース定義環境

データベース名:TEST

スキーマ名:SAMPLE1

使用者名:USER01

パスワード:PASS01

表の定義

表名:TESTTBL

列名 データ型 列制約定義

KEY_C INTEGER NOT NULLPRIMARY KEY

DEC_C DECIMAL(10,3)

DAT_C DATE

CHA_C CHAR(250)

プロシジャルーチンの定義

ルーチン名:COUNTPRC

パラメタモード パラメタ名 データ型

IN DAT_P DATE

OUT OUT_P INTEGER

OUT PRCSTATE CHAR(5)

OUT PRCMSG CHAR(255)

複合文

DECLARE SQLSTATE CHAR(5);DECLARE SQLMSG CHAR(255);

SELECT COUNT(*) INTO OUT_P FROM SAMPLE1.TESTTBL

- 77 -

Page 83: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

パラメタモード パラメタ名 データ型

WHERE DAT_C > DAT_P;

SET PRCSTATE = SQLSTATE;SET PRCMSG = SQLMSG;

A.2 C♯のサンプル

C#のサンプルコードおよび留意事項について説明します。

A.2.1 接続および切断

接続および切断をするサンプルコードについて説明します。

本サンプルコードは、取得データをWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

Symfoware .NET Data Providerでアプリケーションを作成する手順

1. SymfowareConnectionオブジェクトを生成します。

ConnectionStringプロパティへ接続文字列を設定します。

2. SymfowareConnection.Openメソッドでコネクションを接続します。

3. SymfowareConnection.Closeメソッドでコネクションを切断します。

4. オブジェクトを破棄します。

エラー処理については、“A.2.8 エラー処理”を参照してください。

try

{

// 1. SymfowareConnectionオブジェクトの生成

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

// 2. コネクション接続

con.Open();

// メッセージ表示

Label1.Text = "接続できました";

// 3. コネクション切断

con.Close();

// 4. オブジェクトの破棄

con.Dispose();

}

// エラー処理

catch (Exception e1)

{

// エラー処理ルーチンを記述

}

DbProviderFactoryでアプリケーションを作成する手順

1. DbProviderFactoryオブジェクトを生成します。

2. DbConnectionオブジェクトを生成します。

3. ConnectionStringプロパティへ接続文字列を設定します。

4. DbConnection.Openメソッドでコネクションを接続します。

5. DbConnection.Closeメソッドでコネクションを切断します。

6. オブジェクトを破棄します。

エラー処理については、“A.2.8 エラー処理”を参照してください。

- 78 -

Page 84: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

try

{

// 1. DbProviderFactoryオブジェクトの生成

DbProviderFactory factory = DbProviderFactories.GetFactory("Fujitsu.Symfoware.Client");

// 2. DbConnectionオブジェクトの生成

DbConnection con = factory.CreateConnection();

// 3. コネクションの接続先情報の指定

con.ConnectionString = "DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01";

// 4. コネクション接続

con.Open();

// メッセージ表示

Label1.Text = "接続できました";

// 5. コネクション切断

con.Close();

// 6. オブジェクトの破棄

con.Dispose();

}

// エラー処理

catch (Exception e1)

{

// エラー処理ルーチンを記述

}

A.2.2 SymfowareDataReaderでの参照

SymfowareDataReaderオブジェクトを使用して、前方向スクロール読み取り専用でデータ参照するサンプルコードについて説明しま

す。

SymfowareDataReaderオブジェクトでの参照方法では、参照レコードの取り出し方向はNEXTだけでカーソル位置づけによるデータ更

新はできません。

本サンプルコードは、取得データをWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。

2. SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへ問合せ式を設定します)

3. SymfowareCommand.ExecuteReaderメソッドでSymfowareDataReaderオブジェクトを生成します。

4. SymfowareDataReaderオブジェクトよりデータを取得します。

SymfowareDataReader.Readメソッドで次の行へ位置づけます。

SymfowareDataReader.FieldCountプロパティで列数を取得します。

SymfowareDataReader.GetValueメソッドでデータを取得します。

5. SymfowareDataReader.CloseメソッドでSymfowareDataReaderオブジェクトを閉じます。

6. コネクションを切断します。

7. オブジェクトを破棄します。

エラー処理については、“A.2.8 エラー処理”を参照してください。

try

{

// SymfowareConnectionオブジェクトの生成

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

// 1. コネクション接続

con.Open();

// 2. SymfowareCommandオブジェクトの生成

SymfowareCommand com = new SymfowareCommand("SELECT * FROM SAMPLE1.TESTTBL", con);

// 3. SymfowareDataReaderオブジェクトの生成

- 79 -

Page 85: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

SymfowareDataReader drd = com.ExecuteReader();

// 4. データの取得

string msgstr = null;

// 行の位置づけ

while (drd.Read())

{

// 列数の取得

for (int i = 0; i < drd.FieldCount; i++)

{

// データの取得

msgstr += drd.GetValue(i) + " ";

}

msgstr += "<br>";

}

// メッセージ出力

Label1.Text = "DataReader<br>" + msgstr;

// 5. SymfowareDataReaderオブジェクトを閉じる

drd.Close();

// 6. コネクション切断

con.Close();

// 7. オブジェクトの破棄

con.Dispose();

com.Dispose();

}

// エラー処理

catch (Exception e1)

{

// エラー処理ルーチンを記述

}

A.2.3 DataSetでの参照

DataSetオブジェクトを使用して、任意の方向で更新可能なデータ参照をするサンプルコードについて説明します。

カーソルとは異なり、データをVisual Studioの内部にコレクション(DataSet)として取り込んで参照します。

更新方法は、“A.2.5 CommandBuilderを利用した更新”を参照してください。

本サンプルコードでは、取得データをグリッドビューコントロールで表示します。事前にフォームへグリッドビューコントロール(GridView1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。

2. SymfowareDataAdapterオブジェクトを生成します。(SymfowareDataAdapterのSelectCommandのCommandTextプロパティへ問

合せ式を設定します)

3. DataSetオブジェクトを生成します。

4. SymfowareDataAdapter.FillメソッドでデータをDataSetへ取得します。

5. DataSetのデータをグリッドビューコントロールにて参照します。

6. コネクションを切断します。

7. オブジェクトを破棄します。

エラー処理については、“A.2.8 エラー処理”を参照してください。

try

{

// SymfowareConnectionオブジェクトの生成

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

// 1. コネクション接続

- 80 -

Page 86: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

con.Open();

// 2. SymfowareDataAdapterオブジェクトの生成

SymfowareDataAdapter adp = new SymfowareDataAdapter("SELECT * FROM SAMPLE1.TESTTBL", con);

// 3. DataSetオブジェクトの生成

DataSet dst = new DataSet();

// 4. DataSetオブジェクトへデータを取得

adp.Fill(dst, "TESTTBL");

// 5. DataSetのデータをGridViewコントロールで参照する

this.GridView1.DataSource = dst;

GridView1.DataMember = "TESTTBL";

GridView1.DataBind();

// 6. コネクション切断

con.Close();

// 7. オブジェクトの破棄

con.Dispose();

adp.Dispose();

dst.Dispose();

}

// エラー処理

catch (Exception e1)

{

// エラー処理ルーチンを記述

}

A.2.4 探索条件付きSQL文での更新

探索条件付きSQL文で更新を行うサンプルコードについて説明します。

本サンプルコードは、UPDATE文実行後、影響を受けた行数をWebページ上に表示します。事前にフォームへラベルコントロール

(Label1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。

2. SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへUPDATE文を設定します)

3. SymfowareCommand.Parameters.AddメソッドでSymfowareParameterオブジェクトの生成と設定を行います。SQL文中のパラメタ

マーカ('?')の出現順に生成してください。

SymfowareParameter.ParameterNameプロパティには、オブジェクト名を任意で設定します。

SymfowareParameter.Valueプロパティへパラメタの値を設定します。

日時型のパラメタにはSymfowareParameter.SymfowareDbTypeプロパティを設定します。

4. SymfowareCommand.ExecuteNonQueryメソッドでUPDATE文を実行します。

ExecuteNonQueryメソッドより更新された行数が返されます。

5. コネクションを切断します。

6. オブジェクトを破棄します。

エラー処理については、“A.2.8 エラー処理”を参照してください。

try

{

// SymfowareConnectionオブジェクトの生成

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

// 1. コネクション接続

con.Open();

// 2. SymfowareCommandオブジェクトの生成

SymfowareCommand com = new SymfowareCommand("UPDATE SAMPLE1.TESTTBL SET DEC_C=?," +

"DAT_C=?,CHA_C = ? WHERE KEY_C = ?", con);

// 3. SymfowareParameterオブジェクトの生成と設定

com.Parameters.Add("DEC_C", 111111.111);

- 81 -

Page 87: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

com.Parameters.Add("DAT_C", "2007/04/10");

com.Parameters["DAT_C"].SymfowareDbType = SymfowareDbType.Date;

com.Parameters.Add("CHA_C", "更新データ");

com.Parameters.Add("KEY_C", 100);

// 4. UPDATE文の実行

int i = com.ExecuteNonQuery();

// 更新行数を表示する

Label1.Text = "RowCount<br>" + i + "行更新されました";

// 5. コネクション切断

con.Close();

// 6. オブジェクトの破棄

con.Dispose();

com.Dispose();

}

// エラ-処理

catch (Exception e1)

{

// エラー処理ルーチンを記述

}

A.2.5 CommandBuilderを利用した更新

CommandBuilderを利用して更新を行うサンプルコードについて説明します。

本サンプルコードは、結果列がある場合は1行目を更新し、結果列がない場合は行を挿入します。行の更新処理または行の挿入処理

を実行後、影響を受けた行数をWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトを生成します。

2. SymfowareDataAdapterオブジェクトを生成します。(SymfowareDataAdapterのSelectCommandのCommandTextプロパティへ問

合せ式を設定します)

3. DataSetオブジェクトを生成します。

4. SymfowareDataAdapter.FillメソッドでデータをDataSetへ取得します。

5. SymfowareCommandBuilderオブジェクトの生成

6. データを更新します。

SymfowareDataAdapter.Tables.Rows.Countメソッドを使用してDataSetに取り出した行数を取得します。

行がある場合は1行目を更新対象行としてDataRowオブジェクトへ取り出します。

行がない場合はDataSet.Tables.NewRowメソッドで新しい行を作成しDataRowオブジェクトへ取り出します。

DataRow.BeginEditメソッドで更新モードにしてデータを更新します。

DataRow.EndEditメソッドで更新を終了します。

NewRowメソッドにより作成したDataRowオブジェクトをDataSet.Tables.Rows.Addメソッドで追加します。

7. SymfowareDataAdapter.Updateメソッドで行の更新処理または行の挿入処理を実行します。

8. DataSet.AcceptChangesメソッドでDataSetに対して行った更新内容をコミットします。

9. コネクションを切断します。

10. オブジェクトを破棄します。

エラー処理については、“A.2.8 エラー処理”を参照してください。

try

{

// 1.SymfowareConnectionオブジェクトの生成

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

// 2. SymfowareDataAdapterオブジェクトの生成

SymfowareDataAdapter adp = new SymfowareDataAdapter("SELECT * FROM SAMPLE1.TESTTBL", con);

- 82 -

Page 88: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

// 3. DataSetオブジェクトの生成

DataSet dst = new DataSet();

// 4. DataSetオブジェクトへデータを取得

adp.Fill(dst, "TESTTBL");

// 5. SymfowareCommandBuilderオブジェクトの生成

SymfowareCommandBuilder builder = new SymfowareCommandBuilder(adp);

// 6. データの更新(DataSetに1行もデータがない場合は行を追加する)

DataRow myRow;

if (dst.Tables["TESTTBL"].Rows.Count != 0)

{

myRow = dst.Tables["TESTTBL"].Rows[0];

}

else

{

myRow = dst.Tables["TESTTBL"].NewRow();

}

myRow.BeginEdit();

myRow["KEY_C"] = 2;

myRow["DEC_C"] = 9999999.999;

myRow["DAT_C"] = "2007/04/10";

myRow["CHA_C"] = "TEST DATA";

myRow.EndEdit();

if (dst.Tables["TESTTBL"].Rows.Count == 0)

{

dst.Tables["TESTTBL"].Rows.Add(myRow);

}

// 7. 行の更新処理または行の挿入処理の実行

adp.Update(dst, "TESTTBL");

// 8. DataSetオブジェクトに対して行われたすべての更新をコミットする

dst.AcceptChanges();

//メッセージ表示

Label1.Text = "Normal End<br>データベースにデータが保存されました";

// 9. コネクション切断

con.Close();

// 10. オブジェクトの破棄

con.Dispose();

dst.Dispose();

adp.Dispose();

}

// エラー処理

catch (Exception e1)

{

// エラー処理ルーチンを記述

}

A.2.6 ストアドプロシジャの実行

ストアドプロシジャを実行するサンプルコードについて説明します。

本サンプルコードは、ストアドプロシジャを実行し、結果をWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。

2. SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへCALL文を設定します)

3. CommandTextプロパティへ設定したパラメタマーカ('?')に対応するSymfowareParameterオブジェクトの生成と設定をします。

SymfowareCommand.Parameters.AddメソッドでSymfowareParameterオブジェクトを生成します。SQL文中のパラメタマーカ('?')の出現順に生成してください。

SymfowareParameter.ParameterNameプロパティには、オブジェクト名を任意で設定します。

SymfowareParameter.Directionプロパティへ入力(Input)、出力(Output)、入出力(InputOutput)を設定します。

- 83 -

Page 89: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

SymfowareParameter.Valueプロパティへパラメタの値を設定します。

文字列型の出力パラメタおよび入出力パラメタのSymfowareParameter.Sizeプロパティには、 大サイズをバイト数で設定しま

す。

4. SymfowareCommand.ExecuteNonQueryメソッドでCALL文を実行します。

5. 出力パラメタの結果をメッセージでWebページ上に表示します。

SymfowareParameter.Valueプロパティで結果が参照できます。

このサンプルコードでは、出力パラメタごとに改行し、表示します。

6. コネクションを切断します。

7. オブジェクトを破棄します。

エラー処理については、“A.2.8 エラー処理”を参照してください。

try

{

// SymfowareConnectionオブジェクトの生成

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

// 1. コネクション接続

con.Open();

// 2. SymfowareCommandオブジェクトの生成

SymfowareCommand com = new SymfowareCommand("CALL SAMPLE1.COUNTPRC(?,?,?,?)", con);

// 3. SymfowareParameterオブジェクトの生成と設定

com.Parameters.Add("DAT_P", SymfowareDbType.Date);

com.Parameters["DAT_P"].Direction = ParameterDirection.Input;

com.Parameters["DAT_P"].Value = "2007/04/10";

com.Parameters.Add("OUT_P", SymfowareDbType.Int);

com.Parameters["OUT_P"].Direction = ParameterDirection.Output;

com.Parameters.Add("PRCSTATE", SymfowareDbType.Char);

com.Parameters["PRCSTATE"].Direction = ParameterDirection.Output;

com.Parameters["PRCSTATE"].Size = 5;

com.Parameters.Add("PRCMSG",SymfowareDbType.Char);

com.Parameters["PRCMSG"].Direction = ParameterDirection.Output;

com.Parameters["PRCMSG"].Size = 255;

//4. CALL文実行

com.ExecuteNonQuery();

// 5. 結果の表示

string msgstr = "COUNT: " + com.Parameters["OUT_P"].Value + "<br>";

msgstr += "PRCSTATE: " + com.Parameters["PRCSTATE"].Value + "<br>";

msgstr += "PRCMSG: " + com.Parameters["PRCMSG"].Value;

Label1.Text = "PROCEDURE DATA<br>" + msgstr;

// 6. コネクション切断

con.Close();

// 7. オブジェクトの破棄

con.Dispose();

com.Dispose();

}

// エラー処理

catch (Exception e1)

{

// エラー処理ルーチンを記述

}

A.2.7 トランザクション制御

トランザクション制御を行うサンプルコードについて説明します。

トランザクション制御は、明示的に行うことができます。

- 84 -

Page 90: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

SymfowareConnection.BeginTransactionメソッド、SymfowareTransaction.Commitメソッド、またはSymfowareTransaction.Rollbackメソッ

ドで明示的に行うことができます。これらのメソッドでトランザクションを制御していない場合は、トランザクションはSQL文を実行すること

で開始され、そのSQL文の処理完了後すぐにコミットされて終了します。

独立性水準およびアクセスモードの設定または変更は、SymfowareConnection.BeginTransactionメソッドの引数IsolationLevelと引数

AccessModeで指定します。

本サンプルコードは、独立性水準をReadCommittedに設定後、INSERT文を実行します。

アプリケーションの手順

1. コネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。

2. SymfowareConnection.BeginTransactionメソッドでトランザクションを開始します。

引数IsolationLevelに独立性水準(IsolationLevel.ReadCommitted)を設定します。

SymfowareTransactionオブジェクトが作成されます。

3. データ操作を行うオブジェクトを実行します。

4. データ操作が正常終了した場合、SymfowareTransaction.Commitメソッドを実行します。

データ操作が異常終了した場合、SymfowareTransaction.Rollbackメソッドを実行します。

5. コネクションを切断します。

6. オブジェクトを破棄します。

エラー処理については、“A.2.8 エラー処理”を参照してください。

// SymfowareConnectionオブジェクトの生成

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

SymfowareTransaction trn = null;

// 1. コネクション接続

con.Open();

// 2. トランザクション開始(独立性水準の設定)

trn = con.BeginTransaction(IsolationLevel.ReadCommitted);

try

{

// 3. データ操作を行う処理を記述

SymfowareCommand com = new SymfowareCommand("INSERT INTO SAMPLE1.TESTTBL VALUES(133," +

"500.001,DATE'2007-04-10','TEST DATA')", con);

com.Transaction = trn; // Transactionプロパティの設定は省略可能

int i = com.ExecuteNonQuery();

// 4. コミット

trn.Commit();

// 5. コネクション切断

con.Close();

// 6. オブジェクトの破棄

con.Dispose();

}

// エラー処理

catch (Exception e1)

{

// 4. ロールバック

trn.Rollback();

// エラー処理ルーチンを記述

}

A.2.8 エラー処理

エラー処理を行うサンプルコードについて説明します。

TryからCatchステートメントで、エラー発生時のエラー処理ルーチンを指定します。Symfowareのエラーが発生した場合、

SymfowareExceptionクラスをキャッチすることで、SQLSTATEやエラーメッセージなどが確認できます。SQLSTATEやエラーメッセージ

をキーにしてエラー処理を切り分け、その後の振る舞いを決めることが可能です。

- 85 -

Page 91: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

参照

エラーメッセージの対処法は“メッセージ集”を参照してください。

Symfoware以外のエラーは、Exceptionクラスをキャッチすることでエラー情報が確認できます。Symfoware以外のエラーの対処方法

は、Microsoft社のVisual Studioのマニュアルを参照してください。

本サンプルコードでは、接続文字列を間違えて入力しエラーを発生させます。発生したエラーのメッセージとSQLSTATEをWebペー

ジ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトを生成します。(ConnectionStringプロパティに接続文字列を間違えて設定したとします)

2. TryステートメントからCatchステートメントの範囲内にエラーが発生する可能性のあるコードを記述します。

3. SymfowareConnection.Openメソッドでコネクションを接続します。(パスワードを間違えて指定しエラーを発生させます)

4. Catchステートメントに処理したいエラーのクラスを指定します。

5. SymfowareException.Errors.CountプロパティでSymfowareのエラー数を取得します。

6. SymfowareException.Errors.MessageプロパティでSymfowareのエラーメッセージを取得します。

7. SymfowareException.Errors.SQLStateプロパティでSQLSTATEを取得します。

8. Exception.MessageプロパティでSymfoware以外のエラーメッセージを取得します。

処理がすべて行われた後に行う処理を、finallyステートメント以降に記述します。

// 1. SymfowareConnectionオブジェクトの生成(コネクション文字列を間違えて設定)

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=XXXXXX");

string msgstr = null;

// 2. Try ~ Catchの範囲内にエラーが発生する可能性のあるコードを記述

try

{

// 3. コネクション接続(エラー発生)

con.Open();

// データ処理を記述

// コネクション切断

con.Close();

}

// 4. SymfowareExceptionクラスのキャッチ

catch (SymfowareException e1)

{

//5. Symfowareのエラー数を取得

for (int i = 0; i <= e1.Errors.Count - 1; i++)

{

//6. Symfowareのエラーメッセージを取得

msgstr += e1.Errors[i].Message + "<br>";

//7. SQLSTATEを取得

msgstr += "SQLSTATE: " + e1.Errors[i].SQLState + "<br>";

}

Label1.Text = "Symfoware Error Message<br>" + msgstr;

}

// 4. Exceptionクラスのキャッチ

catch (Exception e2)

{

//8. Symfoware以外のエラーメッセージを取得

msgstr = e2.Message;

Label1.Text = "Error Message<br>" + msgstr;

- 86 -

Page 92: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

}

// Tryステートメント終了時の処理

finally

{

// オブジェクトの破棄

con.Dispose();

}

A.2.9 イベントハンドラによるメッセージの取得

イベントハンドラによるメッセージの取得を行うサンプルコードについて説明します。

アプリケーションの手順

1. SymfowareConnectionオブジェクトを生成します。

2. SymfowareInfoMessageEventハンドラ(conn1_InfoMessage)を追加します。

3. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。

4. コネクションを切断します。

5. SymfowareInfoMessageEvent発生時の処理(conn1_InfoMessage)としてメッセージの取得を行います。

エラー処理については、“A.2.8 エラー処理”を参照してください。

static void ChangeUserPassword(string password)

{

//1. SymfowareConnectionオブジェクトの生成

string connString = "DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01";

SymfowareConnection conn1 = new SymfowareConnection(connString);

try

{

//2. SymfowareInfoMessageEventハンドラの追加

conn1.InfoMessage += new SymfowareInfoMessageEventHandler(conn1_InfoMessage);

//3. コネクション接続

conn1.Open();

// パスワードの変更

conn1.SetUserPassword(password);

//4. コネクション切断

conn1.Close();

}

catch (Exception ex1)

{

// エラー処理ルーチンを記述

Console.WriteLine(ex1.Message);

}

finally

{

if ((conn1 != null) && (conn1.State == ConnectionState.Open))

{

conn1.Close();

}

}

}

//5. SymfowareInfoMessageEvent発生時の処理

public static void conn1_InfoMessage(object obj, SymfowareInfoMessageEventArgs args)

{

//メッセージの取得

string serverInfo = args.Message;

//メッセージの出力

- 87 -

Page 93: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

Console.WriteLine(serverInfo);

}

A.2.10 複数のTableAdapterオブジェクトのデータ操作を1つのトランザクションにする方法

複数のTableAdapterオブジェクトのデータ操作を、1つのトランザクションにする方法について説明します。

複数のTableAdapterオブジェクトで同一のデータベースを操作する場合、1つのコネクションを複数のTableAdapterオブジェクトに設定

することで、1つのトランザクションにすることができます。

参照

TableAdapterオブジェクトの作成方法は“3.2.2 TableAdapterの作成”を参照してください。

アプリケーションの手順

1. Visual Studio.NET開発環境のGUIを操作したことでTableAdapterオブジェクトのソースを生成させます

2. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。

3. TableAdapterオブジェクトを格納するDatasetのオブジェクトを作成します。

4. 複数のTableAdapterオブジェクトを作成します。

5. 1つのSymfowareConnectionオブジェクトを、複数のTableAdapterオブジェクトに設定します。

6. SymfowareConnection.BeginTransactionメソッドでトランザクションを開始します。

引数IsolationLevelに独立性水準(IsolationLevel.ReadCommitted)を設定します。

SymfowareTransactionオブジェクトが作成されます。

7. TableAdapterオブジェクトを利用して、データ操作を行います。

8. データ操作が正常終了した場合、SymfowareTransaction.Commitメソッドを実行します。

データ操作が異常終了した場合、SymfowareTransaction.Rollbackメソッドを実行します。

9. コネクションを切断します。

エラー処理については、“A.2.8 エラー処理”を参照してください。

// 1.GUIの操作によりTableAdapterオブジェクトのソースを生成(画面操作なので、ソース省略)

// SymfowareConnectionオブジェクトの生成

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

SymfowareTransaction trn = null;

// 2. コネクション接続

con.Open();

// 3. DataSetオブジェクトの作成

DataSet1 dataset1 = new DataSet1();

// 4. TableAdapterオブジェクトの作成

DataSet1TableAdapters.TABLE1TableAdapter tbAdapter1 = new DataSet1TableAdapters.TABLE1TableAdapter();

DataSet1TableAdapters.TABLE2TableAdapter tbAdapter2 = new DataSet1TableAdapters.TABLE2TableAdapter();

// 5. コネクションの設定

tbAdapter1.Connection = con;

tbAdapter2.Connection = con;

// 6. トランザクション開始(独立性水準の設定)

trn = con.BeginTransaction(IsolationLevel.ReadCommitted);

try

{

// 7. データ操作を行う処理を記述

tbAdapter1.Update(dataset1.TABLE1);

tbAdapter2.Update(dataset1.TABLE2);

// 8. コミット

- 88 -

Page 94: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

trn.Commit();

// 9. コネクション切断

con.Close();

}

// エラー処理

catch (Exception e1)

{

// 8. ロールバック

trn.Rollback();

// エラー処理ルーチンを記述

}

注意

複数のTableAdapterオブジェクトのデータ操作を、1つのトランザクションにする場合、TableAdapterオブジェクトのソースを自動生成さ

せるとき、[接続の追加]画面および[接続の変更]画面で、スキーマ名を指定しないようにしてください。スキーマ名を指定した場合は、

自動生成されるSQL文にスキーマ名が修飾されません。アプリケーション実行時に設定するSymfowareConnectionオブジェクトに指定

されたデフォルトスキーマ名でSQL文が実行されます。そのため、1つのコネクションを複数のTableAdapterオブジェクトに設定する場

合、同一スキーマの表に対するTableAdapterオブジェクトだけに設定するようにしてください。

A.2.11 名前付きパラメタでの更新

名前付きパラメタで更新を行うサンプルコードについて説明します。

本サンプルコードは、UPDATE文実行後、影響を受けた行数をWebページ上に表示します。事前にフォームへラベルコントロール

(Label1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。

2. SymfowareCommandオブジェクトを生成します。(CommandTextプロパティに、UPDATE文を設定します)

3. SymfowareCommand.Parameters.AddメソッドでSymfowareParameterオブジェクトの生成と設定を行います。追加する

SymfowareParameterオブジェクトのSymfowareParameter.ParameterName属性は、SQL文中のパラメタ名と一致させてください。

SymfowareParameter.Valueプロパティへパラメタの値を設定します。

必要に応じて、SymfowareParameter.SymfowareDbTypeなどのプロパティを設定してください。

4. SymfowareCommand.ExecuteNonQueryメソッドでUPDATE文を実行します。

ExecuteNonQueryメソッドより更新された行数が返されます。

5. コネクションを切断します。

6. オブジェクトを破棄します。

エラー処理については、“A.2.8 エラー処理”を参照してください。

try

{

// SymfowareConnectionオブジェクトの生成

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

// 1. コネクション接続

con.Open();

// 2. SymfowareCommandオブジェクトの生成

SymfowareCommand com = new SymfowareCommand("UPDATE SAMPLE1.TESTTBL SET DEC_C=:DEC_C," +

"DAT_C=:DAT_C,CHA_C = :CHA_C WHERE KEY_C = :KEY_C", con);

// 3. SymfowareParameterオブジェクトの生成と設定

com.Parameters.Add("DEC_C", 111111.111);

com.Parameters.Add("DAT_C", "2007/04/10");

com.Parameters["DAT_C"].SymfowareDbType = SymfowareDbType.Date;

com.Parameters.Add("CHA_C", "更新データ");

com.Parameters.Add("KEY_C", 100);

- 89 -

Page 95: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

// 4. UPDATE文の実行

int i = com.ExecuteNonQuery();

// 更新行数を表示する

Label1.Text = "RowCount<br>" + i + "行更新されました";

// 5. コネクション切断

con.Close();

// 6. オブジェクトの破棄

con.Dispose();

com.Dispose();

}

// エラ-処理

catch (Exception e1)

{

// エラー処理ルーチンを記述

}

A.2.12 CommandTimeoutプロパティでの実行時間の監視

CommandTimeoutプロパティで実行時間の監視を行うためのサンプルコードについて説明します。

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。

2. SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへ問合せ式を設定します)

3. SymfowareCommand. CommandTimeoutプロパティでタイムアウトの時間を設定します。

4. SymfowareCommand.Connectionプロパティは、SymfowareConnectionオブジェクトを関連します。

5. SymfowareDataReaderオブジェクトよりデータを取得します。

6. タイムアウトが発生したかどうか判定します。

7. タイムアウト発生を通知します。

8. コネクションを切断します。

9. オブジェクトを破棄します。

エラー処理については、“A.2.8 エラー処理”を参照してください。

try

{

// SymfowareConnectionオブジェクトの生成

SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");

SymfowareDataReader reader = null;

// 1. コネクション接続

con.Open();

// 2. SymfowareCommandオブジェクトの生成

SymfowareCommand com = new SymfowareCommand("SELECT * FROM SAMPLE1.TESTTBL", con);

// 3. SymfowareCommandオブジェクトのCommandTimeoutプロパティを設定する

com.CommandTimeout = 10;

// 4. SymfowareConnectionオブジェクトと関連

com.Connection = con;

try

{

// 5. SymfowareDataReaderオブジェクトよりデータを取得します。

reader = com.ExecuteReader();

// データを取得処理ルーチンを記述。“A.2.2 SymfowareDataReaderでの参照”を参照。

}

catch (SymfowareException ex)

{

// 6. タイムアウトが発生したかどうか判定する方法

if(string.Equals(ex.SQLState, "61000"))

- 90 -

Page 96: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

{

// 7. タイムアウト発生を通知する

Console.WriteLine("検索結果の件数が多すぎるため、タイムアウトが発生しました");

}

else

{

throw ex

}

}

finally

{

// 8. コネクション切断

con.Close();

// 9. オブジェクトの破棄

com.Dispose();

con.Dispose();

}

}

// エラ-処理

catch (Exception e1)

{

// エラー処理ルーチンを記述

}

A.2.13 TransactionScopeクラスを利用した分散トランザクション制御

TransactionScopeクラスで、暗黙的な分散トランザクション制御ができます。

アプリケーションの手順

1. TransactionScopeオブジェクトを作成します。

2. コネクション1のデータ操作。

1. コネクション1を確立します。

2. コネクション1でデータの追加操作を行います。

3. コネクション1をクローズします。

3. コネクション2のデータ操作。

1. コネクション2を確立します。

2. コネクション2でデータの追加操作を行います。

3. コネクション2をクローズします。

4. TransactionScopeオブジェクトのComplete()メソッドを呼び出して、トランザクションがコミットできる状態であることをトランザクショ

ンマネージャに伝えます。

5. TransactionScopeオブジェクトを破棄します。

6. アプリケーションの同期化

// 1.TransactionScopeのコンストラクタでTransactionScopeオブジェクトを作成して、分散トランザクションを開始する。

using (TransactionScope tran = new TransactionScope())

{

//トランザクションに参加する接続文字列にenlistキーワードを指定する。

string connString1 = "DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01;ENLIST=TRUE";

string connString2 = "DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST2;USER ID=USER02;PASSWORD=PASS02;ENLIST=TRUE";

//2. 接続1のデータ操作

SymfowareConnection conn1 = new SymfowareConnection(connString1);

- 91 -

Page 97: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

//2-1. コネクションの確立

conn1.Open();

//2-2. データの追加操作を行う

SymfowareCommand com1 = new SymfowareCommand("INSERT INTO SAMPLE1.TESTTBL VALUES(133," +

"500.001,DATE'2007-04-10','TEST DATA')", conn1);

com1.ExecuteNonQuery();

//2-3. コネクションのクローズ

conn1.Close();

//3. 接続2のデータ操作

SymfowareConnection conn2 = new SymfowareConnection(connString2);

//3-1. コネクションの確立

conn2.Open();

//3-2. データの追加操作を行う

SymfowareCommand com2 = new SymfowareCommand("INSERT INTO SAMPLE2.TESTTBL2 VALUES(133, +

'TARO')", conn2);

com2.ExecuteNonQuery();

//3-3. コネクションのクローズ

conn2.Close();

//4.トランザクションがコミットできる状態であることをトランザクションマネージャに伝える

tran.Complete();

}//5. TransactionScopeオブジェクトの破棄

Thread.Sleep(5000); //6.アプリケーションの同期化

A.3 Visual Basic .NETのサンプル

Visual Basic .NETのサンプルコードおよび留意事項について説明します。

A.3.1 接続および切断

接続および切断をするサンプルコードについて説明します。

本サンプルコードは、取得データをWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

Symfoware .NET Data Providerでアプリケーションを作成する手順

1. SymfowareConnectionオブジェクトを生成します。

ConnectionStringプロパティへ接続文字列を設定します。

2. SymfowareConnection.Openメソッドでコネクションを接続します。

3. SymfowareConnection.Closeメソッドでコネクションを切断します。

4. オブジェクトを破棄します。

エラー処理については、“A.3.8 エラー処理”を参照してください。

Try

'1.SymfowareConnectionオブジェクトの生成

Dim con As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _

& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")

'2.コネクション接続

con.Open()

'メッセージ表示

Label1.Text = "接続できました"

'3.コネクション切断

con.Close()

'4.オブジェクトの破棄

con.Dispose()

Catch exception1 As Exception

- 92 -

Page 98: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

'エラー処理ルーチンを記述

End Try

DbProviderFactoryでアプリケーションを作成する手順

1. DbProviderFactoryオブジェクトを生成します。

2. DbConnectionオブジェクトを生成します。

3. ConnectionStringプロパティへ接続文字列を設定します。

4. DbConnection.Openメソッドでコネクションを接続します。

5. DbConnection.Closeメソッドでコネクションを切断します。

6. オブジェクトを破棄します。

エラー処理については、“A.3.8 エラー処理”を参照してください。

Try

'1. DbProviderFactoryオブジェクトの生成

Dim factory As DbProviderFactory = DbProviderFactories.GetFactory(Fujitsu.Symfoware.Client")

'2. DbConnectionオブジェクトの生成

Dim con As DbConnection = factory.CreateConnection()

'3. コネクションの接続先情報の指定

con.ConnectionString = "DATA SOURCE=127.0.0.1;PORT=26551;" _

& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01"

'4.コネクション接続

con.Open()

'メッセージ表示

Label1.Text = "接続できました"

'5.コネクション切断

con.Close()

'6.オブジェクトの破棄

con.Dispose()

Catch exception1 As Exception

'エラー処理ルーチンを記述

End Try

A.3.2 SymfowareDataReaderでの参照

SymfowareDataReaderオブジェクトを使用して、前方向スクロール読み取り専用でデータ参照するサンプルコードについて説明しま

す。

SymfowareDataReaderオブジェクトでの参照方法では、参照レコードの取り出し方向はNEXTだけでカーソル位置づけによるデータ更

新はできません。

本サンプルコードは、取得データをWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。

2. SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへ問合せ式を設定します)

3. SymfowareCommand.ExecuteReaderメソッドでSymfowareDataReaderオブジェクトを生成します。

4. SymfowareDataReaderオブジェクトよりデータを取得します。

SymfowareDataReader.Readメソッドで次の行へ位置づけます。

SymfowareDataReader.FieldCountプロパティで列数を取得します。

SymfowareDataReader.GetValueメソッドでデータを取得します。

5. SymfowareDataReader.CloseメソッドでSymfowareDataReaderオブジェクトを閉じます。

6. コネクションを切断します。

7. オブジェクトを破棄します。

- 93 -

Page 99: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

エラー処理については、“A.3.8 エラー処理”を参照してください。

Try

'SymfowareConnectionオブジェクトの生成

Dim con As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _

& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")

'1.コネクション接続

con.Open()

'2.SymfowareCommandオブジェクトの生成

Dim command1 As New SymfowareCommand("SELECT * FROM SAMPLE1.TESTTBL", con)

'3.SymfowareDataReaderオブジェクトの生成

Dim reader1 As SymfowareDataReader = command1.ExecuteReader

'4.データの取得

Dim text1 As String = Nothing

'行の位置づけ

Do While reader1.Read

Dim num1 As Integer = 0

'列数の取得

Do While (num1 < reader1.FieldCount)

'データの取得

text1 = text1 & reader1.GetValue(num1) & " "

num1 += 1

Loop

text1 = text1 & "<br>"

Loop

'メッセージ出力

Label1.Text = "DataReader<br>" & text1

'5.SymfowareDataReaderオブジェクトを閉じる

reader1.Close()

'6.コネクション切断

con.Close()

'7.オブジェクトの破棄

con.Dispose()

command1.Dispose()

'エラー処理

Catch exception1 As Exception

'エラー処理ルーチンを記述

End Try

A.3.3 DataSetでの参照

DataSetオブジェクトを使用して、任意の方向で更新可能なデータ参照をするサンプルコードについて説明します。

カーソルとは異なり、データをVisual Studioの内部にコレクション(DataSet)として取り込んで参照します。

更新方法は、“A.3.5 CommandBuilderを利用した更新”を参照してください。

本サンプルコードでは、取得データをグリッドビューコントロールで表示します。事前にフォームへグリッドビューコントロール(GridView1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。

2. SymfowareDataAdapterオブジェクトを生成します。(SymfowareDataAdapterのSelectCommandのCommandTextプロパティへ問

合せ式を設定します)

3. DataSetオブジェクトを生成します。

4. SymfowareDataAdapter.FillメソッドでデータをDataSetへ取得します。

5. DataSetのデータをグリッドビューコントロールにて参照します。

6. コネクションを切断します。

- 94 -

Page 100: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

7. オブジェクトを破棄します。

エラー処理については、“A.3.8 エラー処理”を参照してください。

Try

'SymfowareConnectionオブジェクトの生成

Dim connection1 As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _

& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")

'1.コネクション接続

connection1.Open()

'2.SymfowareDataAdapterオブジェクトの生成

Dim adapter1 As New SymfowareDataAdapter("SELECT * FROM SAMPLE1.TESTTBL", connection1)

'3.DataSetオブジェクトの生成

Dim set1 As New DataSet

'4.DataSetオブジェクトへデータを取得

adapter1.Fill(set1, "TESTTBL")

'5.DataSetのデータをGridViewコントロールで参照する

Me.GridView1.DataSource = set1

Me.GridView1.DataMember = "TESTTBL"

Me.GridView1.DataBind()

'6.コネクション切断

connection1.Close()

'7.オブジェクトの破棄

connection1.Dispose()

adapter1.Dispose()

set1.Dispose()

'エラー処理

Catch exception1 As Exception

'エラー処理ルーチンを記述

End Try

A.3.4 探索条件付きSQL文での更新

探索条件付きSQL文で更新を行うサンプルコードについて説明します。

本サンプルコードは、UPDATE文実行後、影響を受けた行数をWebページ上に表示します。事前にフォームへラベルコントロール

(Label1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。

2. SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへUPDATE文を設定します)

3. SymfowareCommand.Parameters.AddメソッドでSymfowareParameterオブジェクトの生成と設定を行います。SQL文中のパラメタ

マーカ('?')の出現順に生成してください。

SymfowareParameter.ParameterNameプロパティには、オブジェクト名を任意で設定します。

SymfowareParameter.Valueプロパティへパラメタの値を設定します。

日時型のパラメタにはSymfowareParameter.SymfowareDbTypeプロパティを設定します。

4. SymfowareCommand.ExecuteNonQueryメソッドでUPDATE文を実行します。

ExecuteNonQueryメソッドより更新された行数が返されます。

5. コネクションを切断します。

6. オブジェクトを破棄します。

エラー処理については、“A.3.8 エラー処理”を参照してください。

Try

'SymfowareConnectionオブジェクトの生成

Dim connection1 As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _

& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")

'1.コネクション接続

connection1.Open()

- 95 -

Page 101: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

'2.SymfowareCommandオブジェクトの生成

Dim command1 As New SymfowareCommand("UPDATE SAMPLE1.TESTTBL SET DEC_C=?,DAT_C=?," _

& "CHA_C = ? WHERE KEY_C = ?", connection1)

'3.SymfowareParameterオブジェクトの生成と設定

command1.Parameters.Add("DEC_C", 111111.111)

command1.Parameters.Add("DAT_C", "2007/04/10")

command1.Parameters.Item("DAT_C").SymfowareDbType = SymfowareDbType.Date

command1.Parameters.Add("CHA_C", "更新データ")

command1.Parameters.Add("KEY_C", 100)

'4.UPDATE文の実行

Dim num1 As Integer = command1.ExecuteNonQuery

'更新行数を表示する

Me.Label1.Text = "RowCount<br>" + num1.ToString + "行更新されました"

'5.コネクション切断

connection1.Close()

'6.オブジェクトの破棄

connection1.Dispose()

command1.Dispose()

'エラー処理

Catch exception1 As Exception

'エラー処理ルーチンを記述

End Try

A.3.5 CommandBuilderを利用した更新

CommandBuilderを利用して更新を行うサンプルコードについて説明します。

本サンプルコードは、結果列がある場合は1行目を更新し、結果列がない場合は行を挿入します。行の更新処理または行の挿入処理

を実行後、影響を受けた行数をWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトを生成します。

2. SymfowareDataAdapterオブジェクトを生成します。(SymfowareDataAdapterのSelectCommandのCommandTextプロパティへ問

合せ式を設定します)

3. DataSetオブジェクトを生成します。

4. SymfowareDataAdapter.FillメソッドでデータをDataSetへ取得します。

5. SymfowareCommandBuilderオブジェクトの生成

6. データを更新します。

SymfowareDataAdapter.Tables.Rows.Countメソッドを使用してDataSetに取り出した行数を取得します。

行がある場合は1行目を更新対象行としてDataRowオブジェクトへ取り出します。

行がない場合はDataSet.Tables.NewRowメソッドで新しい行を作成しDataRowオブジェクトへ取り出します。

DataRow.BeginEditメソッドで更新モードにしてデータを更新します。

DataRow.EndEditメソッドで更新を終了します。

NewRowメソッドにより作成したDataRowオブジェクトをDataSet.Tables.Rows.Addメソッドで追加します。

7. SymfowareDataAdapter.Updateメソッドで行の更新処理または行の挿入処理を実行します。

8. DataSet.AcceptChangesメソッドでDataSetに対して行った更新内容をコミットします。

9. コネクションを切断します。

10. オブジェクトを破棄します。

エラー処理については、“A.3.8 エラー処理”を参照してください。

Try

Dim row1 As DataRow

'1.SymfowareConnectionオブジェクトの生成

Dim connection1 As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _

- 96 -

Page 102: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")

'2.SymfowareDataAdapterオブジェクトの生成

Dim adapter1 As New SymfowareDataAdapter("SELECT * FROM SAMPLE1.TESTTBL", connection1)

'3.DataSetオブジェクトの生成

Dim set1 As New DataSet

'4.DataSet オブジェクトへデータを取得

adapter1.Fill(set1, "TESTTBL")

'5.SymfowareCommandBuilderオブジェクトの生成

Dim builder1 As New SymfowareCommandBuilder(adapter1)

'6.データの更新(DataSetに1行もデータがない場合は行を追加する)

If (set1.Tables.Item("TESTTBL").Rows.Count <> 0) Then

row1 = set1.Tables.Item("TESTTBL").Rows.Item(0)

Else

row1 = set1.Tables.Item("TESTTBL").NewRow

End If

row1.BeginEdit()

row1.Item("KEY_C") = 2

row1.Item("DEC_C") = 9999999.999

row1.Item("DAT_C") = "2007/04/10"

row1.Item("CHA_C") = "TEST DATA"

row1.EndEdit()

If (set1.Tables.Item("TESTTBL").Rows.Count = 0) Then

set1.Tables.Item("TESTTBL").Rows.Add(row1)

End If

'7.行の更新処理または行の挿入処理の実行

adapter1.Update(set1, "TESTTBL")

'8.DataSet オブジェクトに対して行われたすべての更新をコミットする

set1.AcceptChanges()

'メッセージ表示

Me.Label1.Text = "Normal End<br>データベースにデータが保存されました"

'9.コネクション切断

connection1.Close()

'10.オブジェクトの破棄

connection1.Dispose()

set1.Dispose()

adapter1.Dispose()

'エラー処理

Catch exception1 As Exception

'エラー処理ルーチンを記述

End Try

A.3.6 ストアドプロシジャの実行

ストアドプロシジャを実行するサンプルコードについて説明します。

本サンプルコードは、ストアドプロシジャを実行し、結果をWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。

2. SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへCALL文を設定します)

3. CommandTextプロパティへ設定したパラメタマーカ('?')に対応するSymfowareParameterオブジェクトの生成と設定をします。

SymfowareCommand.Parameters.AddメソッドでSymfowareParameterオブジェクトを生成します。SQL文中のパラメタマーカ('?')の出現順に生成してください。

SymfowareParameter.ParameterNameプロパティには、オブジェクト名を任意で設定します。

SymfowareParameter.Directionプロパティへ入力(Input)、出力(Output)、入出力(InputOutput)を設定します。

SymfowareParameter.Valueプロパティへパラメタの値を設定します。

文字列型の出力パラメタおよび入出力パラメタのSymfowareParameter.Sizeプロパティには、 大サイズをバイト数で設定しま

す。

- 97 -

Page 103: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

4. SymfowareCommand.ExecuteNonQueryメソッドでCALL文を実行します。

5. 出力パラメタの結果をメッセージでWebページ上に表示します。

SymfowareParameter.Valueプロパティで結果が参照できます。

このサンプルコードでは、出力パラメタごとに改行し、表示します。

6. コネクションを切断します。

7. オブジェクトを破棄します。

エラー処理については、“A.3.8 エラー処理”を参照してください。

Try

'SymfowareConnectionオブジェクトの生成

Dim connection1 As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _

& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")

'1.コネクション接続

connection1.Open()

'2.SymfowareCommandオブジェクトの生成

Dim command1 As New SymfowareCommand("CALL SAMPLE1.COUNTPRC(?,?,?,?)", connection1)

'3.SymfowareParameterオブジェクトの生成と設定

command1.Parameters.Add("DAT_P", SymfowareDbType.Date)

command1.Parameters.Item("DAT_P").Direction = ParameterDirection.Input

command1.Parameters.Item("DAT_P").Value = "2007/04/10"

command1.Parameters.Add("OUT_P", SymfowareDbType.Int)

command1.Parameters.Item("OUT_P").Direction = ParameterDirection.Output

command1.Parameters.Add("PRCSTATE", SymfowareDbType.Char)

command1.Parameters.Item("PRCSTATE").Direction = ParameterDirection.Output

command1.Parameters.Item("PRCSTATE").Size = 5

command1.Parameters.Add("PRCMSG", SymfowareDbType.Char)

command1.Parameters.Item("PRCMSG").Direction = ParameterDirection.Output

command1.Parameters.Item("PRCMSG").Size = 255

'4.CALL文実行

command1.ExecuteNonQuery()

'5.結果の表示

Dim text1 As String = ("COUNT: " & command1.Parameters.Item("OUT_P").Value & "<br>")

Dim obj1 As Object = text1

text1 = String.Concat(New Object() {obj1, "PRCSTATE: ", command1.Parameters.Item("PRCSTATE").Value, "<br>"})

text1 = (text1 & "PRCMSG: " & command1.Parameters.Item("PRCMSG").Value)

Me.Label1.Text = ("PROCEDURE DATA<br>" & text1)

'6.コネクション切断

connection1.Close()

'7.オブジェクトの破棄

connection1.Dispose()

command1.Dispose()

'エラー処理

Catch exception1 As Exception

'エラー処理ルーチンを記述

End Try

A.3.7 トランザクション制御

トランザクション制御を行うサンプルコードについて説明します。

トランザクション制御は、明示的に行うことができます。

SymfowareConnection.BeginTransactionメソッド、SymfowareTransaction.Commitメソッド、またはSymfowareTransaction.Rollbackメソッ

ドで明示的に行うことができます。これらのメソッドでトランザクションを制御していない場合は、トランザクションはSQL文を実行すること

で開始され、そのSQL文の処理完了後すぐにコミットされて終了します。

独立性水準およびアクセスモードの設定または変更は、SymfowareConnection.BeginTransactionメソッドの引数IsolationLevelと引数

AccessModeで指定します。

本サンプルコードは、独立性水準をReadCommittedに設定後、INSERT文を実行します。

- 98 -

Page 104: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

アプリケーションの手順

1. コネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。

2. SymfowareConnection.BeginTransactionメソッドでトランザクションを開始します。

引数IsolationLevelに独立性水準(IsolationLevel.ReadCommitted)を設定します。

SymfowareTransactionオブジェクトが作成されます。

3. データ操作を行うオブジェクト(SymfowareCommand)を実行します。

4. データ操作が正常終了した場合、SymfowareTransaction.Commitメソッドを実行します。

データ操作が異常終了した場合、SymfowareTransaction.Rollbackメソッドを実行します。

5. コネクションを切断します。

6. オブジェクトを破棄します。

エラー処理については、“A.3.8 エラー処理”を参照してください。

'SymfowareConnectionオブジェクトの生成

Dim connection1 As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _

& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")

Dim transaction1 As SymfowareTransaction = Nothing

'1.コネクション接続

connection1.Open()

'2.トランザクション開始(独立性水準の設定)

transaction1 = connection1.BeginTransaction(IsolationLevel.ReadCommitted)

Try

'3.データ操作を行う処理を記述

Dim command1 As New SymfowareCommand("INSERT INTO SAMPLE1.TESTTBL VALUES(133," _

& "500.001,DATE'2007-04-10','TEST DATA')", connection1)

command1.Transaction = transaction1 'Transactionプロパティの値は省略可能

Dim num1 As Integer = command1.ExecuteNonQuery()

'4.コミット

transaction1.Commit()

'5.コネクション切断

connection1.Close()

'6.オブジェクトの破棄

connection1.Dispose()

'エラー処理

Catch exception1 As Exception

'4.ロールバック

transaction1.Rollback()

'エラー処理ルーチンを記述

End Try

A.3.8 エラー処理

エラー処理を行うサンプルコードについて説明します。

TryからCatchステートメントで、エラー発生時のエラー処理ルーチンを指定します。Symfowareのエラーが発生した場合、

SymfowareExceptionクラスをキャッチすることで、SQLSTATEやエラーメッセージなどが確認できます。SQLSTATEやエラーメッセージ

をキーにしてエラー処理を切り分け、その後の振る舞いを決めることが可能です。

参照

エラーメッセージの対処法は“メッセージ集”を参照してください。

Symfoware以外のエラーは、Exceptionクラスをキャッチすることでエラー情報が確認できます。Symfoware以外のエラーの対処方法

は、Microsoft社のVisual Studioのマニュアルを参照してください。

本サンプルコードでは、接続文字列を間違えて入力しエラーを発生させます。発生したエラーのメッセージとSQLSTATEをWebペー

ジ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

- 99 -

Page 105: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

アプリケーションの手順

1. SymfowareConnectionオブジェクトを生成します。(ConnectionStringプロパティに接続文字列を間違えて設定したとします)

2. TryステートメントからCatchステートメントの範囲内にエラーが発生する可能性のあるコードを記述します。

3. SymfowareConnection.Openメソッドでコネクションを接続します。(パスワードを間違えて指定しエラーを発生させます)

4. Catchステートメントに処理したいエラーのクラスを指定します。

5. SymfowareException.Errors.CountプロパティでSymfowareのエラー数を取得します。

6. SymfowareException.Errors.MessageプロパティでSymfowareのエラーメッセージを取得します。

7. SymfowareException.Errors.SQLStateプロパティでSQLSTATEを取得します。

8. Exception.MessageプロパティでSymfoware以外のエラーメッセージを取得します。

処理がすべて行われた後に行う処理を、Finallyステートメント以降に記述します。

'1.SymfowareConnectionオブジェクトの生成(コネクション文字列を間違えて設定)

Dim connection1 As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _

& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=XXXXXX")

Dim text1 As String = Nothing

'2.Try ~ Catchの範囲内にエラーが発生する可能性のあるコードを記述

Try

'3.コネクション接続(エラー発生)

connection1.Open()

'データ処理を記述

'コネクション切断

connection1.Close()

'4.SymfowareExceptionクラスのキャッチ

Catch exception1 As SymfowareException

Dim num1 As Integer = 0

'5.Symfowareのエラー数を取得

Do While (num1 <= (exception1.Errors.Count - 1))

'6.Symfowareのエラーメッセージを取得

text1 = (text1 & exception1.Errors.Item(num1).Message & "<br>")

'7.SQLSTATEを取得

text1 = (text1 & "SQLSTATE: " & exception1.Errors.Item(num1).SQLState & "<br>")

num1 += 1

Loop

Me.Label1.Text = ("Symfoware Error Message<br>" & text1)

'4.Exceptionクラスのキャッチ

Catch exception2 As Exception

'8.Symfoware以外のエラーメッセージを取得

text1 = exception2.Message

Me.Label1.Text = ("Error Message<br>" & text1)

'Tryステートメント終了時の処理

Finally

'オブジェクトの破棄

connection1.Dispose()

End Try

A.3.9 イベントハンドラによるメッセージの取得

イベントハンドラによるメッセージの取得を行うサンプルコードについて説明します。

アプリケーションの手順

1. SymfowareConnectionオブジェクトを生成します。

2. SymfowareInfoMessageEventハンドラ(conn1_InfoMessage)を追加します。

3. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。

- 100 -

Page 106: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

4. コネクションを切断します。

5. SymfowareInfoMessageEvent発生時の処理(conn1_InfoMessage)としてメッセージの取得を行います。

エラー処理については、“A.3.8 エラー処理”を参照してください。

Public Sub ChangeUserPassword(ByVal password As String)

'1. SymfowareConnectionオブジェクトの生成

Dim connString As String = "DATA SOURCE=127.0.0.1;PORT=26551;" _

& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01"

Dim conn1 As New SymfowareConnection(connString)

Try

'2. SymfowareInfoMessageEventハンドラの追加

AddHandler conn1.InfoMessage, AddressOf conn1_InfoMessage

'3.コネクション接続

conn1.Open()

'パスワードの変更

conn1.SetUserPassword(password)

'4.コネクション切断

conn1.Close()

Catch exception1 As SymfowareException

'エラー処理ルーチンを記述

Catch exception2 As Exception

'エラー処理ルーチンを記述

Finally

If ((Not conn1 Is Nothing) And (conn1.State = ConnectionState.Open)) Then

conn1.Close()

End If

End Try

End Sub

'5. SymfowareInfoMessageEvent発生時の処理

Public Sub conn1_InfoMessage(ByVal obj As Object, ByVal args As SymfowareInfoMessageEventArgs)

'メッセージの取得

Dim serverInfo As String = args.Message

'メッセージの出力

Console.WriteLine(serverInfo)

End Sub

A.3.10 複数のTableAdapterオブジェクトのデータ操作を1つのトランザクションにする方法

複数のTableAdapterオブジェクトのデータ操作を、1つのトランザクションにする方法について説明します。

複数のTableAdapterオブジェクトで同一のデータベースを操作する場合、1つのコネクションを複数のTableAdapterオブジェクトに設定

することで、1つのトランザクションにすることができます。

参照

TableAdapterオブジェクトの作成方法は“3.2.2 TableAdapterの作成”を参照してください。

アプリケーションの手順

1. Visual Studio.NET開発環境のGUIを操作したことでTableAdapterオブジェクトのソースを生成させます

2. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。

3. TableAdapterオブジェクトを格納するDatasetのオブジェクトを作成します。

4. 複数のTableAdapterオブジェクトを作成します。

5. 1つのSymfowareConnectionオブジェクトを、複数のTableAdapterオブジェクトに設定します。

- 101 -

Page 107: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

6. SymfowareConnection.BeginTransactionメソッドでトランザクションを開始します。

引数IsolationLevelに独立性水準(IsolationLevel.ReadCommitted)を設定します。

SymfowareTransactionオブジェクトが作成されます。

7. TableAdapterオブジェクトを利用して、データ操作を行います。

8. データ操作が正常終了した場合、SymfowareTransaction.Commitメソッドを実行します。

データ操作が異常終了した場合、SymfowareTransaction.Rollbackメソッドを実行します。

9. コネクションを切断します。

エラー処理については、“A.3.8 エラー処理”を参照してください。

' 1.GUIの操作によりTableAdapterオブジェクトのソースを生成(画面操作なので、ソース省略)

' SymfowareConnectionオブジェクトの生成

Dim con As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" &

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")

Dim trn As SymfowareTransaction = Nothing

' 2. コネクション接続

con.Open()

' 3. DataSetオブジェクトの作成

Dim dataset1 As New DataSet1()

' 4. TableAdapterオブジェクトの作成

Dim tbAdapter1 As New DataSet1TableAdapters.TABLE1TableAdapter()

Dim tbAdapter2 As New DataSet1TableAdapters.TABLE2TableAdapter()

' 5. コネクションの設定

tbAdapter1.Connection = con

tbAdapter2.Connection = con

' 6. トランザクション開始(独立性水準の設定)

trn = con.BeginTransaction(IsolationLevel.ReadCommitted)

Try

' 7. データ操作を行う処理を記述

tbAdapter1.Update(dataset1.TABLE1)

tbAdapter2.Update(dataset1.TABLE2)

' 8. コミット

trn.Commit()

' 9. コネクション切断

con.Close()

' エラー処理

Catch e1 As Exception

' 8. ロールバック

' エラー処理ルーチンを記述

trn.Rollback()

End Try

注意

複数のTableAdapterオブジェクトのデータ操作を、1つのトランザクションにする場合、TableAdapterオブジェクトのソースを自動生成さ

せるとき、[接続の追加]画面および[接続の変更]画面で、スキーマ名を指定しないようにしてください。スキーマ名を指定した場合は、

自動生成されるSQL文にスキーマ名が修飾されません。アプリケーション実行時に設定するSymfowareConnectionオブジェクトに指定

されたデフォルトスキーマ名でSQL文が実行されます。そのため、1つのコネクションを複数のTableAdapterオブジェクトに設定する場

合、同一スキーマの表に対するTableAdapterオブジェクトだけに設定するようにしてください。

A.3.11 名前付きパラメタでの更新

名前付きパラメタで更新を行うサンプルコードについて説明します。

本サンプルコードは、UPDATE文実行後、影響を受けた行数をWebページ上に表示します。事前にフォームへラベルコントロール

(Label1)を追加してください。

- 102 -

Page 108: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。

2. SymfowareCommandオブジェクトを生成します。(CommandTextプロパティに、UPDATE文を設定します)

3. SymfowareCommand.Parameters.AddメソッドでSymfowareParameterオブジェクトの生成と設定を行います。追加する

SymfowareParameterオブジェクトのSymfowareParameter.ParameterName属性は、SQL文中のパラメタ名と一致させてください。

SymfowareParameter.Valueプロパティへパラメタの値を設定します。

必要に応じて、SymfowareParameter.SymfowareDbTypeなどのプロパティを設定してください。

4. SymfowareCommand.ExecuteNonQueryメソッドでUPDATE文を実行します。

ExecuteNonQueryメソッドより更新された行数が返されます。

5. コネクションを切断します。

6. オブジェクトを破棄します。

エラー処理については、“A.3.8 エラー処理”を参照してください。

Try

'SymfowareConnectionオブジェクトの生成

Dim connection1 As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _

& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")

'1.コネクション接続

connection1.Open()

'2.SymfowareCommandオブジェクトの生成

Dim command1 As New SymfowareCommand("UPDATE SAMPLE1.TESTTBL SET DEC_C=:DEC_C,DAT_C=:DAT_C," _

& "CHA_C = :CHA_C WHERE KEY_C = :KEY_C", connection1)

'3.SymfowareParameterオブジェクトの生成と設定

command1.Parameters.Add("DEC_C", 111111.111)

command1.Parameters.Add("DAT_C", "2007/04/10")

command1.Parameters.Item("DAT_C").SymfowareDbType = SymfowareDbType.Date

command1.Parameters.Add("CHA_C", "更新データ")

command1.Parameters.Add("KEY_C", 100)

'4.UPDATE文の実行

Dim num1 As Integer = command1.ExecuteNonQuery

'更新行数を表示する

Me.Label1.Text = "RowCount<br>" + num1.ToString + "行更新されました"

'5.コネクション切断

connection1.Close()

'6.オブジェクトの破棄

connection1.Dispose()

command1.Dispose()

'エラー処理

Catch exception1 As Exception

'エラー処理ルーチンを記述

End Try

A.3.12 CommandTimeoutプロパティでの実行時間の監視

CommandTimeoutプロパティで実行時間の監視を行うためのサンプルコードについて説明します。

アプリケーションの手順

1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。

2. SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへ問合せ式を設定します)

3. SymfowareCommand.CommandTimeoutプロパティでタイムアウトの時間を設定します。

4. SymfowareCommand.Connectionプロパティは、SymfowareConnectionオブジェクトを関連します。

5. SymfowareDataReaderオブジェクトよりデータを取得します。

6. タイムアウトが発生したかどうか判定します。

- 103 -

Page 109: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

7. タイムアウト発生を通知します。

8. コネクションを切断します。

9. オブジェクトを破棄します。

エラー処理については、“A.3.8 エラー処理”を参照してください。

Try

'SymfowareConnectionオブジェクトの生成

Dim con As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _

"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")

Dim reader As SymfowareDataReader = Nothing

'1. コネクション接続

con.Open()

‘ 2. SymfowareCommandオブジェクトの生成

Dim com As New SymfowareCommand("SELECT * FROM SAMPLE1.TESTTBL", con)

'3. SymfowareCommandオブジェクトのCommandTimeoutプロパティを設定する

com.CommandTimeout = 10

‘ 4. SymfowareConnectionオブジェクトと関連

com.Connection = con

Try

‘ 5. SymfowareDataReaderオブジェクトよりデータを取得します。

reader = com.ExecuteReader()

‘ データを取得処理ルーチンを記述。“A.3.2 SymfowareDataReaderでの参照”を参照。

Catch ex As SymfowareException

‘ 6. タイムアウトが発生したかどうか判定する方法

If string.Equals(ex.SQLState, "61000") Then

‘ 7. タイムアウト発生を通知する

Console.WriteLine("検索結果の件数が多すぎるため、タイムアウトが発生しました")

Else

Throw ex

End If

Finally

‘ 8. コネクション切断

con.Close()

‘ 9. オブジェクトの破棄

com.Dispose()

con.Dispose()

End Try

}

‘ エラ-処理

Catch exception1 As Exception

‘ エラー処理ルーチンを記述

End Try

A.3.13 TransactionScopeクラスを利用した分散トランザクション制御

TransactionScopeクラスで、暗黙的な分散トランザクション制御ができます。

アプリケーションの手順

1. TransactionScopeオブジェクトを作成します。

2. コネクション1のデータ操作。

1. コネクション1を確立します。

2. コネクション1でデータの追加操作を行います。

3. コネクション1をクローズします。

3. コネクション2のデータ操作。

1. コネクション2を確立します。

- 104 -

Page 110: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

2. コネクション2でデータの追加操作を行います。

3. コネクション2をクローズします。

4. TransactionScopeオブジェクトのComplete()メソッドを呼び出して、トランザクションがコミットできる状態であることをトランザクショ

ンマネージャに伝えます。

5. TransactionScopeオブジェクトを破棄します。

6. アプリケーションの同期化。

' 1.TransactionScopeのコンストラクタでTransactionScopeオブジェクトを作成して、分散トランザクションを開始する。

Using tran As New TransactionScope()

'トランザクションに参加する接続文字列にenlistキーワードを指定する。

Dim connString1 As String = "DATA SOURCE=127.0.0.1;PORT=26551;" & "INITIAL CATALOG=TEST;USER

ID=USER01;PASSWORD=PASS01;ENLIST=TRUE"

Dim connString2 As String = "DATA SOURCE=127.0.0.1;PORT=26551;" & "INITIAL CATALOG=TEST2;USER

ID=USER02;PASSWORD=PASS02;ENLIST=TRUE"

'2. 接続1のデータ操作

Dim conn1 As New SymfowareConnection(connString1)

'2-1. コネクションの確立

conn1.Open()

'2-2. データの追加操作を行う

Dim com1 As New SymfowareCommand("INSERT INTO SAMPLE1.TESTTBL VALUES(133," &"500.001,DATE'2007-04-10','TEST

DATA')", conn1)

com1.ExecuteNonQuery()

'2-3. コネクションのクローズ

conn1.Close()

'3. 接続2のデータ操作

Dim conn2 As New SymfowareConnection(connString2)

'3-1. コネクションの確立

conn2.Open()

'3-2. データの追加操作を行う

Dim com2 As New SymfowareCommand("INSERT INTO SAMPLE2.TESTTBL2 VALUES(133, 'TARO')", conn2)

com2.ExecuteNonQuery()

'3-3. コネクションのクローズ

conn2.Close()

'4.トランザクションがコミットできる状態であることをトランザクションマネージャに伝える

tran.Complete()

End Using

'5. TransactionScopeオブジェクトの破棄

'6. アプリケーションの同期化

Call SLEEP(5000)

- 105 -

Page 111: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

付録B 接続文字列に指定可能なキーワード

接続文字列に指定可能なキーワードを説明します。

接続文字列は、以下の2つの作成方法があります。

・ コネクションのConnectionStringプロパティにより、接続文字列を指定します。

・ 接続文字列ビルダにより、接続文字列を作成します。

使用方法の詳細は、MSDNのDbConnectionStringBuilderクラス(System.Data.Common 名前空間)を参照してください。

キーワード 初期値 説明

Data Sourceまたは

Hostまたは

Serverまたは

Addressまたは

Addrまたは

Network Address

なし 接続するサーバのホスト名またはIPアドレスを指定します。

ホスト名を指定する場合、63バイト以内で指定してください。

ホスト名、またはIPアドレスは、必ず指定してください。

Port 2050 リモートアクセスで使用するポート番号を指定します。

Symfoware Serverのバージョンレベルや対象のプラットフォームによって、デフォ

ルトのポート番号が異なります。サーバ側で定義されているポート番号を確認の

上、指定してください。

User IDまたは

Userまたは

UID

なし データベースに接続するユーザIDを指定します。

Symfoware/RDBのSymfoware認証を使用している場合、ユーザIDは、18文字以

内の先頭が英字で始まる英数字、または9文字以内の日本語文字列を指定します。

ユーザIDは、必ず指定してください。

Passwordまたは

Pwd

なし データベースに接続するユーザIDのパスワードを指定します。

Symfoware/RDBのSymfoware認証を使用している場合、パスワードは、 低長以

上8バイト以下の長さで指定します。 低長はユーザパラメタ

“MIN_PASSWORD_SIZE”で変更することができます。

ユーザパラメタ“MIN_PASSWORD_SIZE”については、“SQLリファレンス”の

“CREATE USER文(利用者定義文)”を参照してください。

パスワードは必ず指定してください。

Initial Catalogまたは

Database

なし 接続するデータベース名を指定します。

データベース名は、36文字以内の先頭が英字で始まる英数字、または18文字以

内の日本語文字列を指定します。

データベース名は必ず指定してください。

schema なし アプリケーションで使用するSQL文のデフォルトスキーマ名を指定します。

スキーマ名は、36文字以内の先頭が英字で始まる英数字、または18文字以内の

日本語文字列を指定します。

eventlog OFF(取得

しない)EventLogの取得の有無やログの取得レベルを指定します。詳細は、“B.1 eventlogキーワード”を参照してください。

connect timeoutまたは

connection timeout

15 サーバへの接続を待機する時間を指定します。指定した待機時間を過ぎると、接

続を切断し、エラーを返します。

待機時間の単位は秒です。

0を指定した場合、待機時間に無制限が指定されます。接続が永続的に待機する

ことになるので、0は指定しないようにしてください。

- 106 -

Page 112: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

キーワード 初期値 説明

connectionlifetime 0( 大値) サーバと接続した時から、コネクションプールで保持している間も含めたコネクショ

ンの保持時間を指定します。プーリング中または、SymfowareConnectionクラスの

closeメソッドが実行されたコネクションが、connectionlifetimeを超えた場合、コネク

ションは解放されます。

poolingがtrue、かつ、Max Pool Sizeが1以上の場合に有効となります。

0~2147483647の範囲で指定します。保持時間の単位は秒です。

0を指定した場合、保持時間に 大値が指定されます。

pooling true コネクションをプーリングするかどうかを指定します。

・ trueが指定された場合、コネクションをプーリングします。

・ falseが指定された場合、コネクションをプーリングしません。

Max Pool Sizeまたは

maxpooledconnections

100 同じ内容のConnectionStringプロパティ(接続先情報)ごとに、接続が可能なコネク

ション数(再利用可能なコネクション数)の上限を指定します。Max Pool Sizeまたは

maxpooledconnectionsを超えるコネクションの接続要求(SymfowareConnectionクラスのopenメソッド)は、connect timeoutパラメタで指定した待機時間の間、再利用可

能なコネクションの空きがでるのを待ちます。

poolingがtrueの場合に有効となります。

0~32767の範囲で指定することができます。

0を指定した場合、コネクション数は無制限となり、コネクションは再利用されずに

切断されます。

1以上を指定した場合、SymfowareConnectionクラスのcloseメソッドを実行しても、

データベースとの接続は切断されません。コネクションは再利用可能な状態になり

ます。

また、32768以上が指定された場合、32767が指定されたとみなします。(注1)

Min Pool Sizeまたは

minpooledconnections

0 同じ内容のConnectionStringプロパティ(接続先情報)ごとに、再利用可能なコネク

ション数の下限を指定します。 初の接続要求が届いた段階で、Min Pool Sizeまたはminpooledconnectionsに指定された数まで接続し再利用可能なコネクションを

保持します。Connectionlifetimeの上限時間により切断され、保持しているコネク

ションの数がMin Pool Sizeまたはminpooledconnectionsより少なくなった場合に

は、再接続しコネクションを保持しなおします。接続要求のあったアプリケーション

のプロセス終了まで、Min Pool Sizeまたはminpooledconnections分のコネクション

は保持されます。

poolingがtrueの場合に有効となります。

0~32767の範囲で指定することができます。

ただし、32768以上が指定された場合は、32767が指定されたとみなします。(注2)

tuneparam なし Symfoware Serverのクライアント用の動作環境ファイルの実行パラメタを指定しま

す。指定可能な実行パラメタ、および指定形式の詳細は、“B.2 tuneparamキーワー

ド”を参照してください。

encrypt false クライアントとサーバ間の通信路をSSLプロトコルで暗号化するかどうかを指定しま

す。データベース簡単運用では、通信データの暗号化はできません。

・ trueが指定された場合、暗号化を行います。RDB2_TCPS通信となります。

・ falseが指定された場合、暗号化を行いません。RDB2_TCP通信となります。

cacertfile なし サーバ認証で使用する認証局(Certificate Authority: CA)証明書ファイルの配置

先を絶対パスで指定します。指定できるCA証明書ファイル名のファイル形式は、

PEM形式のみです。

CA証明書ファイルは、データベース管理者が認証局に発行手続きを行って取得

後、アプリケーションを開発および実行するマシンに配布されます。

通信データを暗号化しない場合に本キーワードを指定するとエラーになります。

Enlist true コネクションを、トランザクションスコープで宣言したトランザクションに参加させるか

どうかを指定します。

- 107 -

Page 113: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

キーワード 初期値 説明

● trueが指定された場合、コネクションをトランザクションに参加させます。

● falseが指定された場合、コネクションをトランザクションに参加させません。

本キーワードが未指定の場合、trueが指定されたとみなします。

注1) Min Pool Sizeまたはminpooledconnectionsに指定された値よりも小さい値は指定できません。

注2) Max Pool Sizeまたはmaxpooledconnectionsに指定された値よりも大きい値は指定できません。

B.1 eventlogキーワード

eventlogキーワードには、以下のオプションを指定することができます。

・ EventLogの取得の有無

・ EventLogの取得レベル

・ 取得したログの出力先

eventlogキーワードの指定形式とオプションの詳細を説明します。

指定形式

eventlog=(出力モード[,出力レベル][,ログの出力先])

記述例

出力レベルが“Debug”で、ログの出力先が“C:\log”の場合

eventlog=(ON,Debug,C:\log)

オプション

eventlogキーワードのオプションの詳細を以下に示します。

表B.1 eventlogキーワードの詳細

オプション 初期値 説明

出力モード なし ログの取得の有無を指定します。

ON:ログを取得します。

OFF:ログを取得しません。

出力レベル Error ログの出力レベルを指定します。

Error:APIの開始時刻と終了時刻、開始から終了までの経過時間、およびエ

ラーメッセージを取得します。

Debug:“Error”の情報に加えて、実行するクラス名や入力パラメタ名などの性

能情報を取得します。

出力レベルの詳細は、“表B.2 出力情報と出力レベルの対応関係”を参照し

てください。

ログの出力先 Symfoware .NETData Providerイン

ストールディレクトリ

\Log

ログの出力先フォルダのパスを指定します。絶対パスで指定してください。(注)

注)出力先には、実在するフォルダを指定してください。指定した出力先フォルダが存在しない場合、エラーになります。

出力レベルごとの出力情報は以下のとおりです。

- 108 -

Page 114: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

表B.2 出力情報と出力レベルの対応関係

出力情報 出力レベル

Error Debug

開始時刻 ○(注) ○

クラス名 - ○

メソッド名 - ○

入力パラメタ名 - ○

各クラスのプロパティ情報 - ○

戻り値 - ○

エラーメッセージ ○ ○

終了時刻(経過時間) ○(注) ○

○:出力あり

- :出力なし

注) エラーメッセージが出力された場合のみ、取得します。

以下に、出力情報の出力形式を示します。

表B.3 出力情報の詳細

出力情報 出力形式

開始時刻 Begin: YYYY-MM-DD HH:MM:SS.MMS

クラス名 Class: クラス名

メソッド名 Method: メソッド名

入力パラメタ名 Input Variables:パラメタ名: 値 (注1)

各クラスのプロパティ情報 各クラスに指定されているプロパティ情報、およびキーワード情報を以下の形式で出

力します。実行するSQL文はプロパティ情報として出力します。

クラス名 Environment:プロパティ名 = プロパティの値

キーワード名 = キーワードの値 (注2)

戻り値 Return: 戻り値 (注3)

エラーメッセージ Error: エラーメッセージ

終了時刻(経過時間) End: YYYY-MM-DD HH:MM:SS.MMS (HH:MM:SS.sss)

注1) パラメタがない場合は、“void”を出力します。

注2) ConnectionStringプロパティの接続先情報のユーザIDとパスワードは、*(アスタリスク)で出力します。

注3) 戻り値がオブジェクトの場合、オブジェクトのクラス名を返します。また、戻り値がない場合は、“void”を出力します。エラーが発生

した場合、戻り値は出力されません。

B.2 tuneparamキーワード

tuneparamキーワードには、Symfoware Serverのクライアント用の動作環境ファイルに相当する指定をすることができます。

動作環境の設定項目の中には、tuneparamキーワード、システム用の動作環境ファイル、およびサーバ用の動作環境ファイルで重複

して指定できるパラメタがあります。優先順位は以下のとおりです。

- 109 -

Page 115: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

参考

データベース簡単運用の場合には、Symfoware Severのインストール時に、システム用の動作環境として 適な環境が設定されるた

め、チューニングの必要がありません。よって、システム用の動作環境ファイルは、作成不要です。

1. サーバ用の動作環境ファイル

2. tuneparamキーワード

3. システム用の動作環境ファイル

tuneparamキーワードへの実行パラメタの指定形式と、使用可能な実行パラメタ一覧を説明します。

指定形式

tuneparamの指定方法には、以下の2つの方法があります。

・ DbConnectionまたはSymfowareConnectionのConnectionStringプロパティで指定します。

tuneparam='<param>'

<param>...tuneparamキーワードに指定する実行パラメタ

・ 接続文字列ビルダ(DbConnectionStringBuilderまたはSymfowareConnectionStringBuilder)で指定します。

connStrBuilder["tuneparam"] = "<param>";

connStrBuilder 接続文字列ビルダオブジェクト

<param>...tuneparamキーワードに指定する実行パラメタ

記述例

MAX_SQLとWAIT_TIMEを指定した場合

・ DbConnectionまたはSymfowareConnectionのConnectionStringプロパティで指定

tuneparam='MAX_SQL=(255);WAIT_TIME=(30)'

・ 接続文字列ビルダで指定

connStrBuilder["tuneparam"] = "MAX_SQL=(255);WAIT_TIME=(30) ";

注意

tuneparamキーワードに複数の実行パラメタを指定する場合、値を“;”(セミコロン)で区切って設定します。

実行パラメタ

Symfoware .NET Data Providerを利用するアプリケーションから指定可能な実行パラメタは以下のとおりです。

表B.4 tuneparamキーワードで使用可能な実行パラメタ一覧

分類

実行パラメタ 概要

優先順位

1 2 3

SV

tuneparamキー

ワードで使

用可能な

パラメタ

SY

通信SERVER_ENV_FILE 使用するサーバ用の動作環境ファイル - ○ -

TRAN_SPEC SQLエラー発生時のトランザクション - ○ -

- 110 -

Page 116: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

分類

実行パラメタ 概要

優先順位

1 2 3

SV

tuneparamキー

ワードで使

用可能な

パラメタ

SY

TRAN_TIME_LIMIT 1つのトランザクションの 大使用可能時間 ○ ○ ○

WAIT_TIME 通信時の待ち時間 - ○ -

作業領域

など

MAX_SQL 同時に操作できるオブジェクトの数 - ○ -

OPL_BUFFER_SIZE SQL文の実行手順を格納しておくバッファのサ

イズ- ○ -

SORT_MEM_SIZE 作業用ソート領域として使うメモリサイズ ○ ○ ○

WORK_ALLOC_SPACESIZE 作業用ソート領域および作業用テーブルとして

使うファイルサイズ○ ○ -

WORK_MEM_SIZE 作業用テーブルとして使うメモリのサイズ ○ ○ ○

WORK_PATH 作業用テーブルおよび作業用ソート領域のパス ○ ○ ○

データ処

CAL_ERROR 代入処理でオーバフローが起きた場合の処理- ○ -

表・イン

デックス

DEFAULT_DSI_TYPE 格納構造定義を行わない表を作成する場合、

Symfoware/RDBが自動的に生成する表のDSOの格納構造の選択

-○

(注)○

DEFAULT_INDEX_SIZE 格納構造定義を行わないインデックスを作成す

る場合のインデックスのデータ格納域の初期量、

拡張量、ページ長など

(注)○

(注)○

DEFAULT_OBJECT_TABLE_SIZE

格納構造定義を行わない表を作成する場合の

OBJECT構造の表のデータ格納域の初期量、拡

張量、ページ長など

(注)○

(注)○

DEFAULT_TABLE_SIZE 格納構造定義を行わない表を作成する場合の

表のデータ格納域の初期量、拡張量、ページ長

など

(注)○

(注)○

DSI_EXPAND_POINT DSIの容量拡張を起動するか否か ○

(注)○

(注)-

INCLUSION_DSI アプリケーションで使用するDSIを限定する ○

(注)○

(注)-

TEMPORARY_INDEX_SIZE 一時表にインデックスを定義する場合のインデッ

クスのデータ格納域の初期量、拡張量など

(注)○

(注)○

TEMPORARY_TABLE_SIZE 一時表を定義する場合の表のデータ格納域の

初期量、拡張量など

(注)○

(注)○

排他ISOLATION_WAIT 占有待ちの方式 - ○ -

R_LOCK 占有の単位を行とする - ○ ○

トランザク

ション

DEFAULT_ACCESS_MODE トランザクションアクセスモードの初期値を指定

する- ○ ○

DEFAULT_ISOLATION 独立性水準の初期値を指定する - ○ ○

デバッグ ROUTINE_SNAP ROUTINE_SNAP機能を利用するか否か - ○ -

- 111 -

Page 117: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

分類

実行パラメタ 概要

優先順位

1 2 3

SV

tuneparamキー

ワードで使

用可能な

パラメタ

SY

アクセス

プランお

よび性能

情報

ACCESS_PLAN アプリケーション単位でアクセスプランを取得す

るか否かおよびSQL文に対するアドバイスを出

力するか否か

- ○ -

CHOOSE_TID_UNION WHERE句にブール演算子”OR”、または、行値

構成子を指定した場合、TIDユニオンマージの

アクセスプランのみを作成するか否か

○ ○ ○

GROUP_COL_COND_MOVE 導出表を絞り込む探索条件を指定した場合、そ

の探索条件を導出表のWHERE句に移動するか

否か

○ ○ ○

IGNORE_INDEX インデックスを使用しないアクセスプランを選択

するか否か○ ○ -

INACTIVE_INDEX_SCAN 非活性状態のインデックスDSIを含むインデック

スを使用したアクセスプランを選択するか否か○ ○ ○

JOIN_ORDER 結合表と他の表のジョイン順 ○ ○ ○

JOIN_RULE ジョインする方法 ○ ○ ○

MAX_SCAN_RANGE インデックス、クラスタキー、または分割キーの検

索範囲の 大数○ ○ ○

SAME_COST_JOIN_ORDER 適化情報を設定していない場合、ジョイン順

をV5以前と同じにするか否か○ ○ ○

SCAN_KEY_ARITHMETIC_RANGE

四則演算の検索範囲について、インデックスの

範囲検索、または、クラスタキー検索を行うか否

○ ○ ○

SCAN_KEY_CAST 探索条件のCASTオペランドに指定した列でイ

ンデックスの範囲検索、または、クラスタキー検

索を行うか否か

○ ○ ○

SORT_HASHAREA_SIZE ソート処理がレコードをハッシングして格納する

ための領域サイズ○ ○ ○

SQL_TRACE アプリケーション単位でSQL性能情報を取得す

るか否か- ○ -

SS_RATE 述語ごとの検索範囲の選択率の値 ○ ○ ○

TID_SORT インデックス検索と表データ取得のアクセスモデ

ルでTIDソートを利用するか否か○ ○ ○

TID_UNION TIDユニオンマージのアクセスモデルを有効に

するか否か○ ○ ○

USQL_LOCK UPDATE文:探索またはDELETE文:探索の更新

標的レコードを位置づける部分の占有モード○ ○ ○

メッセー

MSG_LANG 表示するメッセージの言語種を設定する- ○ -

リカバリRCV_MODE アプリケーションのリカバリ水準を指定する

-○

(注)-

- 112 -

Page 118: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

分類

実行パラメタ 概要

優先順位

1 2 3

SV

tuneparamキー

ワードで使

用可能な

パラメタ

SY

予約語と

SQL機能

SQL_LEVEL アプリケーションの予約語とSQL機能のレベルを

設定する- ○ -

並列クエ

MAX_PARALLEL データベースを並列に検索する場合の多重度 ○

(注)○

(注)○

PARALLEL_SCAN アプリケーション単位またはコネクション単位に

データベースを並列に検索するか否か

(注)○

(注)-

その他ARC_FULL アーカイブログ満杯時にエラー復帰するか否か

-○

(注)○

互換

TableAdapterCompatible TableAdapter機能に関するクラス

(SymfowareCommandBuilder、SymfowareDataReader)の動作を指定する

- ○ -

DecimalConvertCompatible NUMERIC型またはDECIMAL型のデータを扱

うアプリケーションでのデータの小数点部分の扱

いを指定する

- ○ -

SV:サーバ用の動作環境ファイルへの指定が可能であるか否かを表します。

SY:システム用の動作環境ファイルへの指定が可能であるか否かを表します。

○:指定可

-:指定不可

注)データベース簡単運用の場合は、指定できません。

参照

以下で説明していない実行パラメタの詳細については、“アプリケーション開発ガイド(埋込みSQL編)”を参照してください。

◆通信に関する実行パラメタ

SERVER_ENV_FILE

【指定形式】

SERVER_ENV_FILE = (SQLサーバ名,ファイル名)

【実行パラメタの意味】

使用するサーバ用の動作環境ファイル名を指定します。コネクションごとにサーバのアプリケーション実行環境を変更する場合に

指定します。

【パラメタの意味】

SQLサーバ名:

接続するデータベース名を記述します。

ファイル名:

サーバ用の動作環境ファイル名を、絶対パスで指定します。

- 113 -

Page 119: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

◆排他に関する実行パラメタ

R_LOCK

【指定形式】

R_LOCK = ({YES | NO})

【実行パラメタの意味】

占有の単位を行とするかどうかを指定します。

本実行パラメタの設定は、“表B.4 tuneparamキーワードで使用可能な実行パラメタ一覧”の優先順位に従います。いずれの動作環

境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。

R_LOCK = (YES)

【パラメタの意味】

YES:

占有の単位を行とします。このパラメタを指定した場合、サーバ用の動作環境ファイルにDSO_LOCKを指定することはできませ

ん。

NO:

占有の単位は、DSO_LOCKの指定に従います。このパラメタを指定し、かつDSO_LOCKが指定されていない場合は、Symfoware/RDBによって自動的に占有の単位が選択されます。

データベース簡単運用の場合、占有の単位は、表またはインデックスとなります。

参照

占有の単位の詳細については、“アプリケーション開発ガイド(共通編)”の“排他制御”を参照してください。

また、データベース簡単運用の場合は、“アプリケーション開発ガイド(共通編)”の“トランザクションと排他制御(データベース簡

単運用の場合)”を参照してください。

注意

- システム用の動作環境ファイルまたは tuneparamキーワードのR_LOCKがNOの場合、 tuneparamキーワードの

DEFAULT_ISOLATIONにREPEATABLE_READを指定する、またはSymfowareConnectionクラスのBeginTransactionメソッド

のIsolationLevelに“RepeatableRead”を指定しても、独立性水準はSERIALIZABLEになります。

- システム用の動作環境ファイルまたは tuneparamキーワードのR_LOCKがYESの場合、 tuneparamキーワードの

DEFAULT_ISOLATIONにSERIALIZABLEを指定する、またはSymfowareConnectionクラスのBeginTransactionメソッドの

IsolationLevelに“Serializable”を指定しても、独立性水準はREPEATABLE READになります。

- データベース簡単運用でない場合、システム用の動作環境ファイルのR_LOCKがNOまたはtuneparamキーワードのR_LOCKがNOのときには、DSO定義でPRECEDENCE(1)が指定されたSEQUENTIAL構造の表にアクセスするアプリケーションの占有

の単位はDSIになります。

◆トランザクションに関する実行パラメタ

DEFAULT_ACCESS_MODE

【指定形式】

DEFAULT_ACCESS_MODE = ({READ_ONLY | READ_WRITE})

【実行パラメタの意味】

トランザクションアクセスモードの初期値を指定します。DEFAULT_ACCESS_MODEが指定された場合、プロセスで 初に実行さ

れるSQL文の直前でSET TRANSACTION文が実行されたことになります。

- 114 -

Page 120: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

本実行パラメタの設定は、“表B.4 tuneparamキーワードで使用可能な実行パラメタ一覧”の優先順位に従います。いずれの動作環

境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。

DEFAULT_ACCESS_MODE = (READ_WRITE)

注意

サーバ用の動作環境ファイルのDSO_LOCKを指定して、DEFAULT_ACCESS_MODEを指定した場合は、サーバ接続時にエラー

が発生します。データベース簡単運用の場合、サーバ用の動作環境ファイルでDSO_LOCKの指定はできません。

【パラメタの意味】

READ_ONLY:

トランザクションアクセスモードの初期値をREAD ONLYとします。

READ_WRITE:

トランザクションアクセスモードの初期値をREAD WRITEとします。

DEFAULT_ISOLATION

【指定形式】

DEFAULT_ISOLATION = ({DEFAULT | READ_UNCOMMITTED | READ_COMMITTED | REPEATABLE_READ |SERIALIZABLE})

【実行パラメタの意味】

独立性水準の初期値を指定します。DEFAULT_ISOLATIONが指定された場合、プロセスで 初に実行されるSQL文の直前で

SET TRANSACTION文が実行されたことになります。

本実行パラメタの設定は、“表B.4 tuneparamキーワードで使用可能な実行パラメタ一覧”の優先順位に従います。いずれの動作環

境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。

DEFAULT_ISOLATION = (DEFAULT)

データベース簡単運用で、本実行パラメタの指定を省略した場合は、省略値として以下の値が設定されます。

DEFAULT_ISOLATION = (READ COMMITTED)

【パラメタの意味】

DEFAULT:

独立性水準の初期値はシステム用の動作環境ファイルにおけるDEFAULT_ISOLATIONの指定に従います。

tuneparam キーワードの DEFAULT_ISOLATION に DEFAULT を指定し、かつ、システム用動作環境ファイルの

DEFAULT_ISOLATIONの値を指定していない場合、独立性水準の初期値は、READ_UNCOMMITTEDとなります。

READ_UNCOMMITTED:

独立性水準の初期値をREAD UNCOMMITTEDとします。

READ_COMMITTED:

独立性水準の初期値をREAD COMMITTEDとします。

REPEATABLE_READ:

独立性水準の初期値をREPEATABLE READとします。

SERIALIZABLE:

独立性水準の初期値をSERIALIZABLEとします。

注意

・ システム用の動作環境ファイルまたは tuneparam キーワードの R_LOCK が NO の場合、 DEFAULT_ISOLATION に

REPEATABLE_READを指定しても、独立性水準はSERIALIZABLEになります。

- 115 -

Page 121: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

・ システム用の動作環境ファイルまたはtuneparamキーワードのR_LOCKがYESの場合、DEFAULT_ISOLATIONにSERIALIZABLEを指定しても、独立性水準はREPEATABLE READになります。

◆アクセスプランに関する実行パラメタ

ACCESS_PLAN

【指定形式】

ACCESS_PLAN = ({ON | OFF},ファイル名[,[出力レベル][,[SQLアドバイザ出力レベル]]])

【実行パラメタの意味】

アプリケーション単位でアクセスプランを取得するかどうかを指定します。

本実行パラメタの指定を省略した場合は、以下の値が設定されます。

ACCESS_PLAN = (OFF)

参照

アクセスプランについては、“アプリケーション開発ガイド(共通編)”の“アクセスプラン”を参照してください。

【パラメタの意味】

ON:

アクセスプラン取得機能を利用する場合に指定します。

OFF:

アクセスプラン取得機能を利用しない場合に指定します。

ファイル名:

出力先のサーバ側のファイル名を、絶対パスで指定します。指定されたファイルがすでに存在する場合は、情報を追加して出

力します。

また、指定するパスが存在することと、CONNECT文で指定したユーザIDに対する書込み権があることを確認してください。

出力レベル:

出力レベルには1または2を指定します。1を指定すると、アクセスプランのセクション情報のみを出力します。2を指定すると、セ

クション内の各エレメント詳細情報も出力します。省略した場合は、2が指定されたものとみなします。

SQLアドバイザ出力レベル:

SQLアドバイザ出力レベルには、“ADVICE”または“NOADVICE”を指定します。“ADVICE”を指定すると、SQL文に対するア

ドバイスを出力します。“NOADVICE”を指定すると、SQL文に対するアドバイスを出力しません。省略した場合は、“ADVICE”が指定されたものとみなします。

◆互換に関する実行パラメタ

TableAdapterCompatible

【指定形式】

TableAdapterCompatible = ({ON | OFF})

【実行パラメタの意味】

TableAdapter機能に関するクラス(SymfowareCommandBuilder、SymfowareDataReader)の動作を指定します

本実行パラメタの指定を省略した場合は、以下の値が設定されます。

TableAdapterCompatible = (OFF)

- 116 -

Page 122: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

【パラメタの意味】

ON:

TableAdapter機能に関するクラス(SymfowareCommandBuilder、SymfowareDataReader)は、V10.1.0以前の仕様で動作します。

OFF:

TableAdapter機能に関するクラス(SymfowareCommandBuilder、SymfowareDataReader)は、V10.1.1以降の仕様で動作します。

MSDNと同様の動作となります。

それぞれの値を指定した場合の動作の違いを説明します。

SymfowareCommandBuilderクラスの動作

◆属性

属性名 V10.1.1以降 V10.1.0以前

CatalogLocation 既定値は、CatalogLocation.Endです。

属性値として、CatalogLocation.Endが固

定で設定されているため、ユーザの設定

値は無視されます。

既定値は、CatalogLocation. Startです。

属性値として、CatalogLocation.StartまたはCatalogLocation.Endが設定可能

です。

CatalogSeparator 既定値は、句点(.)です。

属性値として、句点(.)が固定で設定され

ているため、ユーザの設定値は無視され

ます。

既定値は、句点(.)です。

属性値として、任意の文字列が設定可

能です。

DataAdapter ベースクラスのDataAdapterプロパティは、

SymfowareCommandBuilderと一致しま

す。

ベースクラスのDataAdapterプロパティ

は、SymfowareCommandBuilderと一致しません。

QuotePrefix 既定値は、二重引用符(“)です。

属性値として、二重引用符(“)が固定で設

定されているため、ユーザの設定値は無

視されます。

既定値は、空文字列です。

属性値として、任意の文字列が設定可

能です。

QuoteSuffix 既定値は、二重引用符(“)です。

属性値として、二重引用符(“)が固定で設

定されているため、ユーザの設定値は無

視されます。

既定値は、空文字列です。

属性値として、任意の文字列が設定可

能です。

SchemaSeparator 既定値は、句点(.)です。

属性値として、句点(.)が固定で設定され

ているため、ユーザの設定値は無視され

ます。

既定値は、句点(.)です。

属性値として、任意の文字列が設定可

能です。

◆メソッド

メソッド V10.1.1以降 V10.1.0以前

Dispose(bool) ベースクラスと

SymfowareCommandBuilderに関す

るリソースを両方とも解放します。

SymfowareCommandBuilderに関する

リソースのみを解放します。

GetDeleteCommand() ・ SELECT文に、主キーとユニーク

な ど の 情 報 が な い 場 合、

DeleteCommand の 生 成 時、

Microsoftのメッセージが出力され

ます。

・ 作成したSymfowareCommandオブジェクトのParameterCollection中のParameter名の形式は“P”で始まる文字列定数となります。

・ SELECT文に、主キーとユニークな

ど の 情 報 が な い 場 合、

DeleteCommandの生成時、下記の

異常メッセージが出力されます。

“JYP9206E SQL文の生成に失敗

しました”

・ 作成したSymfowareCommandオブ

ジェクトのParameterCollection中の

- 117 -

Page 123: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

メソッド V10.1.1以降 V10.1.0以前

Parameter名の形式は“param_”で始まる文字列定数となります。

GetInsertCommand() 作成したSymfowareCommandオブ

ジェクトのParameterCollection中の

Parameter名の形式は“P”で始まる文

字列定数となります。

作成したSymfowareCommandオブジェ

クトのParameterCollection中の

Parameter名の形式は“param_”で始ま

る文字列定数となります。

GetUpdateCommand() ・ SELECT文に、主キーとユニーク

な ど の 情 報 が な い 場 合、

UpdateCommand の 生 成 時、

Microsoftのメッセージが出力され

ます。

・ 作成したSymfowareCommandオブジェクトのParameterCollection中のParameter名の形式は“P”で始まる文字列定数となります。

・ SELECT文に、主キーとユニークな

ど の 情 報 が な い 場 合、

UpdateCommandの生成時、下記

の異常メッセージが出力されます。

“JYP9206E SQL文の生成に失敗

しました”

・ 作成したSymfowareCommandオブ

ジェクトのParameterCollection中の

Parameter名の形式は“param_”で始まる文字列定数となります。

RefreshSchema() ベースクラスと

SymfowareCommandBuilderと関連す

るコマンドについての情報を削除しま

す。

SymfowareCommandBuilderと関連す

るコマンドを削除します。

SymfowareDataReader.GetSchemaTable()メソッドの返却値

フィールド V10.1.1以降 V10.1.0以前

BaseServerName BNull.Value String.Empty

ColumnOrdinal 0から番号を振ります。 1から番号を振ります。

ProviderType データ型は枚挙型、枚挙名

SymfowareDbTypeデータ型はSystem.String

NumericPrecision ・ データ型はSystem.Int16

・ ProviderType は数値データ

型 以 外 の 場 合、

DBNull.Value値になります。

・ データ型はSystem.Int32

・ ProviderType は数値データ

型以外の場合、0になります。

NumericScale ・ データ型はSystem.Int16

・ ProviderType は、

DBTYPEDECIMAL または

DBTYPE_NUMERIC 以外

の場合、DBNull.Value 値に

なります。

・ データ型はSystem.Int32

・ ProviderType は、

DBTYPE_DECIMAL また

は DBTYPE_NUMERIC以

外の場合、0になります。

BaseCatalogName DBNull.Value 現在接続中のデータベース名

DecimalConvertCompatible

【指定形式】

DecimalConvertCompatible = ({ON | OFF})

【実行パラメタの意味】

NUMERIC型またはDECIMAL型のデータを扱うアプリケーションで、データの小数点以下の桁数が、位取りに指定した桁数よりも

小さい場合の動作を指定します。

本実行パラメタの指定を省略した場合は、以下の値が設定されます。

DecimalConvertCompatible = (OFF)

- 118 -

Page 124: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

【パラメタの意味】

ON:

NUMERIC型またはDECIMAL型のデータを扱うアプリケーションで、データの小数点以下の桁数が、位取りに指定した桁数よ

りも小さい場合に、0を付加しないで、アプリケーションに返却します。

V10.1.1以前と同様の動作となります。

OFF:

NUMERIC型またはDECIMAL型のデータを扱うアプリケーションで、データの小数点以下の桁数が、位取りに指定した桁数よ

りも小さい場合に、0を付加します。

DECIMAL(12,6)で定義された列に、“123.456”のデータを格納した場合のデータ参照結果

- DecimalConvertCompatibleがONの場合:123.456

- DecimalConvertCompatibleがOFFの場合:123.456000

- 119 -

Page 125: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

付録C 使用可能SQL文一覧

Symfoware .NET Data Providerを使用したアプリケーションで指定可能なSQL文について説明します。

データベース簡単運用の場合には、使用可能なSQL文の範囲が異なります。“データベース簡単運用ガイド”を参照し、使用可能な

SQL文の範囲を確認してください。

Symfoware .NET Data Providerでは、SymfowareCommandクラスに指定します。

表C.1 Symfoware .NET Data Providerで使用可能なSQL文

分類 SQL文

スキーマ定義文 CREATE SCHEMA文 (注1)(スキーマ定義)

CREATE TABLE文 (注1) (注2)(表定義)

CREATE VIEW文

(ビュー定義)

CREATE PROCEDURE文(プロシジャルーチン定義)

CREATE FUNCTION文

(ファンクションルーチン定義)

CREATE INDEX文 (注1) (注2)(インデックス定義)

CREATE TRIGGER文(トリガ定義)

CREATE SEQUENCE文(順序定義)

スキーマ操作文 DROP SCHEMA文

(スキーマ削除文)

DROP TABLE文(表削除文)

ALTER TABLE文(表定義変更文)

DROP VIEW文

(ビュー削除文)

DROP PROCEDURE文(プロシジャルーチン削除文)

DROP INDEX文

(インデックス削除文)

DROP TRIGGER文(トリガ削除文)

SWAP TABLE文(表交換文)

DROP SEQUENCE文(順序削除文)

DROP FUNCTION文

(ファンクションルーチン削除文)

格納構造定義文 CREATE DSO文

(表のDSO定義文)

- 120 -

Page 126: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

分類 SQL文

CREATE DSO文

(インデックスのDSO定義文)

CREATE DSI文(表のDSI定義文)

CREATE DSI文(インデックスのDSI定義文)

CREATE SCOPE文(スコープ定義文)

格納構造操作文 DROP DSO文

(DSO削除文)

DROP DSI文(DSI削除文)

ALTER DSI文(DSI変更文)

DROP SCOPE文(スコープ削除文)

APPLY SCOPE文(スコープ適用文)

RELEASE SCOPE文(スコープ解除文)

データ操作文 問合せ式

INSERT文

DELETE文: 探索

UPDATE文: 探索

セション管理文 SET SCHEMA文

利用者制御文 CREATE USER文(利用者定義文)

DROP USER文(利用者削除文)

ALTER USER文(利用者変更文)

システム制御文 SET SYSTEM PARAMETER文

アクセス制御文 CREATE ROLE文(ロール定義文)

DROP ROLE文(ロール削除文)

GRANT文

REVOKE文

ストアドプロシジャ文 CALL文

注1) Symfoware .NET Data Providerを利用したアプリケーションで、スキーマ定義文、表定義文およびインデックス定義文を実行する

場合、指定するスキーマ名、表名およびインデックス名は、通常、8文字以内で指定します。

スキーマ名などの文字数を拡張したい場合、システム用の動作環境ファイルの“DEFAULT_DSI_NAME”を指定してください。データ

ベース簡単運用の場合は、システム用の動作環境ファイルによる指定はできません。

- 121 -

Page 127: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

参照

“DEFAULT_DSI_NAME”の詳細は、“セットアップガイド”を参照してください。

注2) Symfoware .NET Data Providerを利用したアプリケーションで、表定義文およびインデックス定義文を実行する場合、データベー

ス名と同じ名前の空きのあるデータベーススペースを用意しておく必要があります。なお、データベース簡単運用の場合は、データ

ベーススペースを考慮する必要がありません。

- 122 -

Page 128: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

付録D SDT.NETのアドオン登録

SDT.NETのアドオン登録は、sdtregisterコマンドで行います。

sdtregisterコマンドは、Symfoware Serverのクライアント機能のインストール時に、Symfoware Server クライアント機能インストール先ディ

レクトリ\SNDP\BIN配下にインストールされます。

名前

sdtregister - TableAdapter機能をVisual Studio .NETに登録

形式

sdtregister

機能説明

SDT.NETのアドオン登録を行います。

使用例

SDT.NETのアドオン登録を行います。

C:\SFWCLNT\SNDP\BIN\sdtregister

終了ステータス

以下の終了ステータスが返されます。

0 : 正常終了

0以外 : 異常終了

注意

・ 本コマンドは、“Administrators”グループに属するユーザのみ実行可能です。

・ 本コマンドはVisual Studio .NETのインストール後に実行してください。

・ Windows(R) 7、Windows(R) 8またはWindows(R) 8.1でVisual Studio 2005をインストールした後、本コマンドを実行すると、以下の

警告メッセージが表示される場合があります。表示された場合は[プログラムを実行する]をクリックしてください。

- 123 -

Page 129: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

付録E QueryBuilderTableAdapterを作成する際にSQL文を自動生成できるQueryBuilderについて説明します。

QueryBuilderの画面構成は下記のとおりです。

QueryBuilderの画面には、以下の4つのペインがあります。

・ ダイアグラムペイン

操作する表をリストアップします。複数の表をリストアップすることもでき、結合表として結合条件を操作することも可能です。

・ 抽出条件ペイン

操作する列をリストアップし、列に対する抽出条件などを指定します。

・ SQL ペイン

QueryBuilderが自動生成したSQL文を表示します。表示したSQL文の更新や別のSQL文の直接入力が可能です。

・ 結果ペイン

[クエリの実行]ボタンをクリックすると、SQL文の実行結果を表示します。

E.1 QueryBuilder使用時の注意事項

QueryBuilder使用時の注意事項を以下に示します。

・ ダイアグラムペインの結合線で、FULL OUTER JOINとなるテーブル結合を指定しないてください。

・ 表名や列名などに英小文字を含む場合、QueryBuilderを使用してSQL文を作成すると、二重引用符(")を付加できないためエラー

になります。表名や列名などに英小文字を指定しないてください。

・ NCHAR型またはNVCHAR型の列に各国語文字列定数を指定する場合、定数の前にNを付けないでください。

・ SQLペインに記述したSQL文について、QueryBuilderのSQLペインで右クリックして表示される[SQL構文の確認]は利用できませ

ん。[SQL構文の確認]を選択するとエラーとなります。

・ 関数を指定する場合、Symfoware Serverがサポートしている関数の記述形式ではエラーになる場合があります。QueryBuilderのSQLペインで入力する関数の形式については、下記の表を参考にしてください。

- 124 -

Page 130: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

また、関数を指定する場合、パラメタに空白が含まれていると、自動生成されたSQL文には不当なシングルクォーテーションが付

加されます。そのままクエリを実行するとエラーになりますので、SQLペインで、関数の形式を下表の“QueryBuilderで指定する関

数の形式”に変更してください。

Symfoware Serverの関数の形式 QueryBuilderで指定する関数の形式

ADD_DATE(DATE'2006-08-28',6,'MONTH') DATEADD(MONTH,6,DATE'2006-08-28')

CAST('2012-10-01 11:34:56' AS timestamp) CONVERT(datetime,'2012-10-01 11:34:56')

CEIL(123.456) CEILING(123.456)

CHAR_LENGTH(RTRIM('ABあいう ')) LEN('ABあいう ')

CHR(78) CHAR(78)

CURRENT_TIMESTAMP GETDATE()

CURRENT_TIMESTAMP SYSDATETIME()

EXTRACT(YEAR FROM DATE'2006-08-01') DATEPART(YEAR,DATE'2006-08-01')

EXTRACT(DAY FROM DATE'2006-08-01') DAY(DATE'2006-08-01')

EXTRACT(MONTH FROM DATE'2006-08-01') MONTH(DATE'2006-08-01')

EXTRACT(YEAR FROM DATE'2006-08-01') YEAR(DATE'2006-08-01')

'Happy ' || 'Birthday ' || '11' || '/' || '25' CONCAT ( 'Happy ', 'Birthday ', '11', '/', '25' )

LAST_DAY(DATE'2006-08-01') EOMONTH(DATE'2006-08-01')

LN(10) LOG(10)

LPAD(CAST(CAST(ROUND(123.4555,2) ASNUMERIC(18,2)) AS VARCHAR(6)),6)

STR(123.4555,6,2)

OCTET_LENGTH(N'ABあいう ') DATALENGTH('ABあいう ')

POWER(10,2) SQUARE(10)

POSITION('vital' IN 'Reflectors are vital safety', 5) CHARINDEX('vital','Reflectors are vital safety', 5)

REPLICATE(' ',2) SPACE(2)

SPAN_DATE(DATE'2006-08-01',DATE'2007-09-20','YEAR')

DATEDIFF(YEAR,DATE'2006-08-01',DATE'2007-09-20')

SUBSTRING('abcdefg' FROM 1 FOR 2) LEFT('abcdefg',2)

SUBSTRING('abcdefg' FROMCHARACTER_LENGTH('abcdefg')-2+1 FOR 2)

RIGHT('abcdefg',2)

SUBSTRING('Symfoware' FROM 6 FOR 3) SUBSTRING('Symfoware', 6 , 3)

SUBSTRING('abcdef' FROM 1 FOR 2-1) || 'ijklmn' ||SUBSTRING('abcdef' FROM 2+3)

STUFF('abcdef',2,3,'ijklmn')

・ 以下の関数は指定できません。構文エラーとなります。

- OCTET_POSITION

- OCTET_SUBSTRING

- 丸め位置を指定していないROUND

- 文字列長を指定していないSUBSTRING

- FROMを指定したTRIM

・ Symfoware Serverの予約語であるデータオブジェクト名がクエリに含まれる場合、クエリを実行するとエラーになります。

・ Symfoware Serverの予約語は、“SQLリファレンス”の“キーワード一覧”を参照してください。

- 125 -

Page 131: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

・ QueryBuilderでは、条件指定の値を定数または名前付きパラメタで指定できます。それぞれの注意事項を下記で説明します。

- 定数

日時データ型について、定数の形式が変更されます。

- DATE/TIME/TIMESTAMP定数

指定したDATE/TIME/TIMESTAMP定数の形式がQueryBuilderで以下のとおり変更されます。変更された形式は、その

まま正常に実行できます。

指定した形式 変更された形式

DATE `YY-MM-DD` {d `YY-MM-DD`}

TIME `hh:mm:ss` {t `hh:mm:ss`}

TIMESTAMP `YY-MM-DD hh:mm:ss` {ts `YY-MM-DD hh:mm:ss`}

- INTERVAL定数

指定したINTERVAL定数のシングルクォーテーションの位置が、QueryBuilderで以下のとおり変更されます。変更された

形式は、そのまま実行するとエラーになりますので、手動でシングルクォーテーションの位置を修正してください。

変更された形式 手動で修正した形式

`INTERVAL 9 YEAR` INTERVAL `9` YEAR

- 名前付きパラメタ

SQLペインでは、以下のような名前付きパラメタを含むSQL文を使用できます。

例:SELECT C1,C2 FROM SC1.TB1 WHERE C1=:PARAM

名前付きパラメタを使用する場合、[クエリの実行]ボタンをクリックして、実行結果を確認するときに、以下の[クエリパラメー

ター]画面が表示されます。

[クエリパラメーター]画面で、名前付きパラメタの値を設定し、[OK]ボタンをクリックすると、結果ペインに実行結果が表示でき

ます。

名前付きパラメタのバインド時に指定するデータの形式は、定数で指定する形式とは異なります。

下記の表で説明します。

データ型 定数で指定する形式 名前付きパラメタに指定する

データの形式

INTERVAL YEAR INTERVAL '20' YEAR 20

INTERVAL YEAR TO MONTH INTERVAL '20-11' YEAR TO MONTH 20-11

INTERVAL MONTH INTERVAL '20' MONTH 20

- 126 -

Page 132: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

データ型 定数で指定する形式 名前付きパラメタに指定する

データの形式

INTERVAL DAY INTERVAL '20' DAY 20

INTERVAL DAY TO HOUR INTERVAL '20 10' DAY TO HOUR 20 10

INTERVAL DAY TO MINUTE INTERVAL '20 10:20' DAY TO MINUTE 20 10:20

INTERVAL DAY TO SECOND INTERVAL '20 10:20:30' DAY TOSECOND

20 10:20:30

INTERVAL HOUR INTERVAL '10' HOUR 10

INTERVAL HOUR TOMINUTE

INTERVAL '10:20' HOUR TO MINUTE 10:20

INTERVAL HOUR TOSECOND

INTERVAL '10:30:20' HOUR TO SECOND 10:30:20

INTERVAL MINUTE INTERVAL '10' MINUTE 10

INTERVAL MINUTE TOSECOND

INTERVAL '10:20' MINUTE TO SECOND 10:20

INTERVAL SECOND INTERVAL '10' SECOND 10

DATE DATE '2012-07-18' 2012-07-18

TIME TIME '17:00:00' 指定不可(注)

TIMESTAMP TIMESTAMP '2012-07-18 17:00:00' 2012-07-18 17:00:00

CHAR(10) 'abc' Abc

VARCHAR(10) 'abc' Abc

注) TableAdapterではTIME型の名前付きパラメタを使用できません。詳細は“3.2.5 アプリケーションからのTableAdapterの利

用”にある注意事項を参照してください。

- 127 -

Page 133: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

付録F SNDPコード生成ツールでの自動生成を利用する場合

SNDPコード生成ツールでコードを自動生成する方法を説明します。

本説明ではVisual Studio 2005を使用しています。

自動生成可能なコードの範囲は、“F.1 コードの自動生成範囲”を参照してください。

な お 、 Symfoware .NET Data Provider の デ ー タ オ ブ ジ ェ ク ト ( SymfowareCommand 、 SymfowareCommandBuilder、SymfowareConnection、およびSymfowareDataAdapter)を使用して、データ操作を自動生成することはできません。

注意

1つのフォームに、Symfoware .NET Data Providerのデータ操作を自動生成する目的以外のODBCブリッジコードを、混在させないで

ください。

コードの自動生成の流れと詳細手順の参照先を、以下に示します。

作業項目 説明 参照先

1 プロジェクトの作成 Visual Studioでアプリケーションのプロ

ジェクトを作成します。

Microsoft社の

Visual Studioのマニュアル

2 Symfoware .NET Data Providerライブ

ラリ参照の追加

Visual StudioでSymfoware .NET DataProviderを使用できるようにします。

3.2.1

3 ユーザインタフェースの作成 アプリケーションのユーザインタフェース

を作成します。

Microsoft社の

Visual Studioのマニュアル

4 ODBCデータソースの登録とデータ接

続の作成

データアダプタ構成ウィザード使用時

に、接続するデータベースの接続先を

設定します。

F.2

5 ODBCブリッジコードの生成 ODBCブリッジコードを自動生成します。 F.3

6 Symfoware .NET Data Providerのコー

ドの生成

SNDPコード生成ツールを使用して、自

動生成したODBCブリッジコードから

Symfoware .NET Data Providerのコード

を生成します。

Symfoware .NET Data Providerのコード

生成後に、ユーザインタフェースまたは

データ操作を変更したい場合は、手順

3.または手順5.まで戻り、やり直してくだ

さい。変更後は、SNDPコード生成ツー

ルを必ず再実行してください。

F.4

7 アプリケーションロジックの作成 アプリケーションロジックを作成します。

コードを自動生成した場合、アプリケー

ションロジック作成時に、必ず行う作業

があります。

・ F.5

・ APIリファレ

ンス

・ Microsoft 社の MSDN ラ

イブラリ

自動生成したコードの呼出し 自動生成したコードをアプリケーションロ

ジックで呼び出します。

F.5.1

コネクションの作成 データベースの接続情報を追加します。

- 128 -

Page 134: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

F.1 コードの自動生成範囲

自動生成可能なSymfoware .NET Data Providerのコードは、以下のとおりです。

・ 自動生成可能なコードは、以下のオブジェクトの範囲です。

- OdbcCommand

- OdbcCommandBuilder

- OdbcConnection

- OdbcDataAdapter

・ 自動生成可能なコードは、ODBCブリッジコードで生成可能な範囲です。詳細は、Microsoft社のVisual Studioのマニュアルを参照

してください。

・ 時間隔型を含む表に対しては、データアダプタ構成ウィザードを使用してSQL文を生成することはできません。時間隔型を含む表

は、直接コーディングしてください。

F.2 ODBCデータソースの登録とデータ接続の作成

ODBCブリッジコードを生成するときに接続するSymfoware Serverを、あらかじめ、接続先として設定します。

ODBCデータソースの登録

ODBCデータソースを登録します。データソース登録時のODBCドライバには、“Symfoware ODOS”を指定してください。

参照

ODBCデータソースの登録手順の詳細は、“アプリケーション開発ガイド(ODBCドライバ編)”の“ODBCデータソースの登録”を参照し

てください。

注意

ODBCデータソースの登録前に、データベースが構築されている必要があります。

データ接続の作成

Visual Studioから、データベースのデータ接続を作成します。

1. [ツール]メニューの[データベースへの接続]を選択し、[データソースの選択]ダイアログを表示します。

- 129 -

Page 135: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

2. [データソース]の“その他”を選択し、[データプロバイダ]プルダウンメニューから“.NET Framework ODBC 用データ プロバイダ”

を選択します。

3. [続行]ボタンをクリックし、[接続の追加]ダイアログボックスを表示します。

4. [データソースの指定]、および[ログイン情報]に接続先情報を指定し、[OK]ボタンをクリックします。

5. サーバーエクスプローラのデータ接続の配下に、作成したデータ接続のテーブル、ビュー、およびプロシージャが表示されるこ

とを確認します。

F.3 ODBCブリッジコードの生成

ODBCブリッジコードを生成します。ODBCブリッジコードの生成には、ODBCデータソース用のデータオブジェクトを使用します。生成

可能なデータ操作の範囲は、“F.1 コードの自動生成範囲”を参照してください。

また、コード生成時の注意事項は、“コード生成時の注意事項”を参照してください。

参照

ODBCブリッジコードの詳細は、Microsoft社のVisual Studioのマニュアルを参照してください。

ここでは、データアダプタ構成ウィザードを使用して、データ操作文を生成する例で説明します。

- 130 -

Page 136: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

1. アプリケーションのフォーム、またはコンポーネント上に、ツールボックスからOdbcDataAdapterオブジェクトをドラッグし、データア

ダプタ構成ウィザードを起動します。

ポイント

ツールボックスにODBCデータソース用のデータオブジェクト(OdbcCommand、OdbcCommandBuilder、OdbcConnection、およ

びOdbcDataAdapter)が表示されていない場合は、ツールボックスを右クリックし、[アイテムの選択]からデータオブジェクトを追加

してください。

2. [データ接続の選択]の[データアダプタで使用するデータ接続]に、データベースの接続名を選択し、[次へ]ボタンをクリックしま

す。

3. コマンドの種類の選択画面で[SQLステートメントを使用する]ラジオボタンを選択し、[次へ]ボタンをクリックします。

注意

[既存のストアドプロシージャを使用]は選択しないでください。[既存のストアドプロシージャを使用]を選択し、[次へ]ボタンをクリッ

クした場合、ユーザが定義済みのストアドプロシージャが表示されないので、ODBCブリッジコードが生成できません。

4. [SQLステートメントの生成]の[クエリ ビルダ]ボタンをクリックし、[クエリ ビルダ]ダイアログボックスを表示します。

5. [クエリ ビルダ]ダイアログボックスで、データ操作文を作成します。

注意

データアダプタ構成ウィザードでは時間隔型を含む表のデータを指定することはできません。詳細は、“F.1 コードの自動生成範

囲”を参照してください。

- 131 -

Page 137: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

6. データアダプタ構成ウィザードに戻り、[次へ]ボタンをクリックし、データ操作文を生成します。

7. [ウィザードの結果]画面の[完了]ボタンをクリックします。

8. 生成したODBCブリッジコードにコンパイルエラーがないことを確認します。

9. [ファイル]メニューの[すべてを保存]を選択し、プロジェクトを保存します。

コード生成時の注意事項

ODBCブリッジコードを自動生成する場合、以下のことに注意してください。

・ Visual Studioを利用してアプリケーションを開発する場合は、データベース名をスキーマ名として扱います。そのため、スキーマ名

と同一のデータベース名を定義してください。

・ 各オブジェクトで生成したコードを変更する場合は、必ず各オブジェクトのプロパティ、またはデータアダプタ構成ウィザードを使用

してください。直接変更すると、Symfoware .NET Data Providerのコードが生成できない可能性があります。

・ 一部のOdbcTypeについては、対応するSymfowareDbTypeはありません。OdbcCommandプロパティ画面、またはOdbcDataAdapterプロパティ画面で各オブジェクトのプロパティを変更する際に、選択しないでください。OdbcTypeとSymfowareDbTypeの対応関係

詳細は下表のとおりです。

表F.1 OdbcTypeとSymfowareDbTypeの対応関係

No OdbcType SymfowareDbType 対応関係

1 BigInt - ×

2 Binary - ×

3 Bit - ×

4 Char Char ○

5 DateTime Timestamp ○

6 Decimal Decimal ○

7 Numeric Numeric ○

8 Double DoublePrecision ○

9 Image BLOB ○

10 Int Int ○

11 NChar - ×

12 NText - ×

13 NVarChar - ×

14 Real Real ○

15 UniqueIdentifier - ×

16 SmallDateTime - ×

17 SmallInt SmallInt ○

18 Text - ×

19 Timestamp - ×

20 TinyInt - ×

21 VarBinary - ×

22 VarChar VarChar ○

23 Date Date ○

24 Time Time ○

○:OdbcTypeに対応するSymfowareDbTypeがあります。

- 132 -

Page 138: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

×:OdbcTypeに対応するSymfowareDbTypeがありません。

・ 以下の各オブジェクトのプロパティは編集しないでください。エラーの原因や、自動生成したコードの正確性を確保できなくなる可

能性があります。

- GenerateMember

- ApplicationSettings配下のPropertyBinding

F.4 Symfoware .NET Data Providerのコードの生成

SNDPコード生成ツールを使用して、生成したODBCブリッジコードから、Symfoware .NET Data Providerのコードを生成します。

コード生成後にユーザインタフェース、またはデータ操作を変更したい場合は、変更したい操作まで戻り、コード生成までやり直してく

ださい。

ODBCブリッジコードからSymfoware .NET Data Providerのコードを生成する手順を説明します。

注意

・ SNDPコード生成ツールを実行する前に、ODBCブリッジコードにコンパイルエラーがないことを確認してください。エラーがあると、

Symfoware .NET Data Providerのコードもエラーになります。

・ SNDPコード生成ツールを実行する前に、プロジェクトを保存してください。保存していない場合、データが失われる可能性があります。

なお、保存には、[ファイル]メニューの[すべてを保存]を使用してください。

・ Symfoware Server クライアント機能のインストール後にVisual Studioをインストールしている場合、SNDPコード生成ツールの機能

を有効とするために、以下の設定を実施してから、Visual Studioを再起動してください。

1. [ツール]メニューのアドインマネージャを選択します。

2. 表示されたアドインマネージャのダイアログで、アドイン“Make SNDP Code”のスタートアップの項目にチェックをします。

Symfoware .NET Data Providerのコード生成は、ファイル単位に行います。コード生成時に複数のファイルを開いている場合、現在有

効になっているファイルが変換されます。

1. Visual Studioでコードを生成するファイルを開きます。

2. フォームデザイナをアクティブにします。

3. [ツール]メニューの[SNDPコード生成]を選択します。

4. フォームのリソースファイルにSQL文が書き込まれている場合、以下のダイアログボックスが表示されます。[はい]ボタンをクリック

し、リソースファイルを再度読み込んでください。

- 133 -

Page 139: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

5. 以下に示すとおり、Symfoware .NET Data Providerのコードが生成されたことを確認してください。

[C#の場合]

#region "SNDP Wizard generated code "

(Symfoware .NET Data Providerのコード)

#endregion

注意

SNDPコード生成ツールで生成したコードは、直接変更しないでください。直接変更した場合、正常に動作しない可能性があります。

変更する場合は、ODBCブリッジコードの生成からやり直してください。

SNDPコード生成ツールにより生成されるオブジェクト名

SNDPコード生成ツールを使用すると、ODBCオブジェクト名の先頭に“SNDP_”が付加されます。アプリケーションロジック作成時に、

オブジェクト名を間違えないよう、注意してください。

SNDPコード生成ツールの実行前と実行後のオブジェクト名の例を示します。

実行前 実行後

OdbcConnection SNDP_OdbcConnection

MyObject SNDP_MyObject

F.5 アプリケーションロジックの作成

アプリケーションのロジックを作成します。

Symfoware .NET Data Providerのコードを自動生成した場合、アプリケーションロジックで、生成したコードを呼び出す必要があります。

ここでは、自動生成したコードの呼び出し方と、コネクションの作成について説明します。

参照

そのほかのアプリケーションロジックの詳細は、“第5章 APIリファレンス”およびMicrosoft社のMSDNライブラリを参照してください。

注意

・ Symfoware .NET Data Providerのコードを自動生成した場合、関数SNDP_InitializeComponentが自動生成されます。したがって、

アプリケーションロジックを作成する際に、“SNDP_InitializeComponent”という関数名は定義しないでください。

・ アプリケーションロジックは、自動生成したコードと混在させないでください。混在させると、SNDPコード生成ツールを再実行したと

きに、ロジックが失われます。

F.5.1 自動生成したコードの呼出しとコネクションの作成

自動生成したSymfoware .NET Data Providerのコードの呼び出し方とコネクションの作成について説明します。

- 134 -

Page 140: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

自動生成したコードの呼出し

アプリケーションロジックの作成時、自動生成した関数“SNDP_InitializeComponent”を呼び出してください。

Windows(R)アプリケーションの場合は、Form_Load関数の中に、Webアプリケーションの場合は、Page_Load関数の中に記載すること

を推奨します。

なお、SNDP_InitializeComponent関数は、グローバルオブジェクトにメモリを配布するため、アプリケーションロジックの 初に1回だけ

呼び出すようにしてください。SNDP_InitializeComponent関数を2回以上呼び出すと、メモリリークやオーバーフローが生じる可能性が

あります。

コネクションの作成

コードを自動生成した場合、SNDP_InitializeComponent関数の直後に、データベースへの接続先情報(コネクション)を記述します。

コネクションには、2種類の指定方法があります。詳細は、“2.1 コネクション”を参照してください。

自動生成したコードの呼出しとコネクションの作成例

自動生成したコードの呼出しとコネクションの作成例を示します。

[C#の場合]

private void Form1_Load(object sender, EventArgs e)

{

this.SNDP_InitializeComponent();

this.SNDP_odbcConnection1.ConnectionString = "DATA SOURCE=127.0.0.1;PORT=26551;" +

"INITIAL CATALOG=TEST;USER ID=root;PASSWORD=PASS01";

}

[Visual Basic .NETの場合]

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.SNDP_InitializeComponent()

Me.SNDP_OdbcConnection1.ConnectionString = "DATA SOURCE=127.0.0.1;PORT=26551;" _

& "INITIAL CATALOG=TEST;USER ID=root;PASSWORD=PASS01"

End Sub

ポイント

Symfoware .NET Data Providerのコードを自動生成すると、自動生成コードの開始直後に、SNDP_InitializeComponent関数、および

作成したオブジェクトのConnectionStringプロパティが、コメントとして表示されます。このコメントをアプリケーションロジックにコピーし、

ConnectionStringプロパティに接続先情報を追加してください。

[C#の場合]

#region "SNDP Wizard generated code "

// このregion内の内容をコード エディタで変更しないでください。

// 下記のコードは自動生成したSymfoware .NET Data Providerのコードの呼び出し方法です。

// アプリケーションロジックの最初にコピーしてください。

// this.SNDP_InitializeComponent();

// this.SNDP_odbcConnection1.ConnectionString="実際の接続先情報を記載してください";

private Fujitsu.Symfoware.Client.SymfowareDataAdapter SNDP_odbcDataAdapter1;

:

#endregion

[Visual Basic .NETの場合]

#Region "SNDP Wizard generated code "

' このregion内の内容をコード エディタで変更しないでください。

' 下記のコードは自動生成したSymfoware .NET Data Providerのコードの呼び出し方法です。

' アプリケーションロジックの最初にコピーしてください。

' Me.SNDP_InitializeComponent()

' Me.SNDP_OdbcConnection1.ConnectionString="実際の接続先情報を記載してください"

Friend WithEvents SNDP_OdbcDataAdapter1 As Fujitsu.Symfoware.Client.SymfowareDataAdapter

- 135 -

Page 141: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

:

#End Region

- 136 -

Page 142: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

付録G SchemaTableSymfowareDataReaderのGetSchemaTableメソッドにより返却される、SymfowareDataReader の各列のメタデータについて説明します。

メタデータ データ型 説明

ColumnName System.String 対象列の列名が返却されます。相関名が指定された場合、列名として相関名が返

却されます。

ColumnOrdinal System.Int32 対象列の選択リストにおける指定順番号が返却されます。0 から順番に採番され

た値が返却されます。

ColumnSize System.Int32 対象列が文字列型の場合、 大文字数が返却されます。それ以外の型の場合、

データ長が返却されます。

NumericPrecision System.Int16 対象列が真数型/概数型の場合、精度が返却されます。真数型でも概数型でもな

い場合、DBNull.Valueが返却されます。

NumericScale System.Int16 対象列がNUMERICA型/DECIMAL型の場合、位取りが返却されます。それ以外

のデータ型の場合、DBNull.Valueが返却されます。

IsUnique System.Boolean データの一意性が保障されている列であることを示します。

以下の条件の順に、true/falseが決まります。以下の条件に該当しない場合はfalseとなります。

1) 対象列が一意性制約を構成する列の一つである場合、trueとなります。

2) 上記の1)の条件によりtrueとなる場合でも、対象となるSELECT文が更新不可(注1)の場合は、falseとなります。

IsKey System.Boolean 一意性制約を構成するすべての列が指定されていることを示します。

以下の条件の順に、true/falseが決まります。以下の条件に該当しない場合はfalseとなります。

1) 対象となる選択リストに主キーを構成する列すべてが指定されている場合、trueとなります。

2) 対象となる選択リストが上記の1)に該当せず、UNIQUE制約のすべての列が指

定されている場合、trueとなります。

(UNIQUE制約が複数指定されている場合、 初に定義されたUNIQUE制約のみ

が対象となります)

3) 上記の1)および2)の条件によりtrueとなる場合でも、対象となるSELECT文が更

新不可(注1)の場合は、falseとなります。

BaseServerName System.String 常にDBNull.Valueが返却されます。

BaseCatalogName System.String 常にDBNull.Valueが返却されます。

BaseColumnName System.String 対象列の定義時の列名が返却されます。

(相関名が指定された場合も定義時の列名が返却されます)

BaseSchemaName System.String 対象列が所属するスキーマ名が返却されます。

BaseTableName System.String 対象列が所属する表名が返却されます。

DataType System.Type 列の .NET Framework に合う型に割り当てます。

(詳細については、“2.4 データ型の対応関係”を参照してください)

AllowDBNull System.Boolean null値が許可されている場合はtrue、それ以外の場合はfalseとなります。

ProviderType SymfowareDbType 対象列のデータ型のコードを返却します (注2)

IsAliased System.Boolean 対象列に相関名が指定されている場合はtrue、相関名が指定されていない場合

はfalseとなります。

IsReadOnly System.Boolean 対象列が読込み専用かどうかを示します。

読込み専用の場合はtrue、それ以外の場合はfalseとなります。

- 137 -

Page 143: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

メタデータ データ型 説明

選択リストに単純な列以外が指定されている場合はtrue、単純な列が指定されて

いる場合はflaseになります。

上記の選択リストに指定する値式以外の条件について、対象となるSELECT文が

更新不可(注1)の場合は、falseとなります。

IsExpression System.Boolean 関数(単純な列以外)が指定されている場合はtrue、それ以外(単純な列)が指定さ

れている場合はfalseとなります。

IsAutoIncrement System.Boolean 常にfalseが返却されます。

IsHidden System.Boolean 常にfalseが返却されます。

IsLong System.Boolean 対象列のデータ型がBLOBの場合はtrue、それ以外のデータ型の場合はfalseとなります。

IsIdentity System.Boolean 常にfalseが返却されます。

IsRowVersion System.Boolean 常にfalseが返却されます。

注1) SELECT文の更新不可となる条件については、“SQLリファレンス”の“DECLARE CURSOR(カーソル宣言)”の“読込み専用

カーソルとなる条件”の表を参照してください。

注2) データ型のコードについては、“SQLリファレンス”の“DESCRIBE文”の“SQLTYPEまたはTYPEの値とSQLのデータ型の対

応”の表を参照してください。

- 138 -

Page 144: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

索 引[数字]

2階層モデル.............................................................................. 23階層モデル.............................................................................. 24階層モデル.............................................................................. 1

[記号].NET CLS(共通言語仕様)のデータ型................................... 13.NET Frameworkアプリケーションの文字コード系................... 8.NET Framework環境で 適な文字コード系...........................8

[A]AccessModeプロパティ............................................................ 67ACCESS_PLAN.....................................................................116app.config................................................................................... 6

[B]BeginTransactionメソッド.......................................................... 58

[C]COBOL.....................................................................................19ConnectionLifetimeプロパティ.................................................65ConnectionStringプロパティ.......................................................6

[D]DEFAULT_ACCESS_MODE............................................... 114DEFAULT_ISOLATION.......................................................115

[E]eventlogキーワードのオプション............................................ 108eventlogキーワードの指定形式............................................. 108EventLogによるデバッグ..........................................................43EventLogの出力内容...............................................................44EventLogの取得方法...............................................................43EventLogプロパティ................................................................. 66

[F]Fujitsu.Symfoware.Client名前空間.........................................47

[H]Hostプロパティ..........................................................................58

[N]NetCOBOL for .NET............................................................... 19

[O]ODBCデータソースの登録....................................................129ON................................................................................... 116,118

[P]Portプロパティ..................................................................... 58,66

[Q]QueryBuilder.......................................................................... 124

[R]READメソッド............................................................................68ReleaseTableメソッド................................................................. 60R_LOCK.................................................................................114

[S]Schemaプロパティ.................................................................... 66SERVER_ENV_FILE............................................................ 113SetRoleメソッド.......................................................................... 62SetUserPasswordメソッド...........................................................63SNDPコード生成ツール.........................................................133SNDPコード生成ツールにより生成されるオブジェクト名..... 134Symfoware .NET Data Providerライブラリ参照の追加........... 20SymfowareCommand.CommandTextプロパティ..................... 70SymfowareCommand.Disposeメソッド.................................71,73SymfowareCommandオブジェクト...................................... 71,73SymfowareConnection.ConnectionStringプロパティ............... 72SymfowareConnection.ServerVersionプロパティ.................... 72SymfowareConnectionオブジェクト..........................................71SymfowareDataReader.Closeメソッド.................................. 71,73SymfowareDataReader.GetCharsメソッド................................. 73SymfowareDataReaderオブジェクト.................................... 71,73SymfowareError.SQLStateプロパティ......................................74SymfowareError.ToStringメソッド.............................................74SymfowareParameterCollection..........................................70,75SymfowareParameter.ParameterNameプロパティ...............70,74SymfowareParameter.SymfowareDbTypeプロパティ..............74Symfoware Serverで使用可能な文字コード系.........................8Symfoware Serverの動作環境ファイルとの関係.................... 46SymfowareTransaction.IsolationLevelプロパティ....................75

[T]tuneparamキーワードの指定形式..........................................110TuneParamプロパティ...............................................................67

[U]UNICODE.................................................................................. 8

[V]Visual Studioによるデバッグ....................................................43

[W]web.config.................................................................................. 6

[あ]アプリケーションサーバ..............................................................2アプリケーションで指定可能なSQL文.................................. 120アプリケーションのチューニング................................................ 3アプリケーションロジック.........................................................134エラーメッセージによるデバッグ..............................................43

[か]構成ファイル...............................................................................6コーディング方法の種類..........................................................19コード生成時の注意事項...................................................... 132

[さ]サーバ用の動作環境ファイル.......................................... 46,110サーバ用の動作環境ファイル名........................................... 113時間隔型................................................................................ 129資源解放............................................................................. 71,73システム用の動作環境ファイル........................................ 46,110

- 139 -

Page 145: アプリケーション開発ガイド (.NET Data Provider編)software.fujitsu.com/jp/manual/manualfiles/m140027/... · 本書は、Symfoware .NET Data Providerを利用して、Symfoware

実行パラメタ........................................................................... 110自動生成可能なコード...........................................................129接続先情報の指定方法............................................................ 6占有の単位............................................................................ 114

[た]チューニング方法.....................................................................46通信データを暗号化する場合の設定.....................................18デバッグ順序............................................................................43データ取得可能なSymfoware .NET Data Providerのメソッド.15データ接続の作成................................................................. 129データの代入........................................................................... 13データの取出し........................................................................ 13データベースの文字コード系との関係..................................... 8データベースへの接続先情報.............................................. 135

[は]非接続型データアクセス........................................................... 8

[ま]文字の欠損................................................................................ 8

[ら]利用可能な開発言語.................................................................3ログの取得..................................................................................3

- 140 -