ページの先頭行へ戻る
Symfoware Server V11.1.0 アプリケーション開発ガイド(.NET Data Provider編)
FUJITSU Software

5.4 留意事項

サポートAPIの使用上の留意事項は以下のとおりです。各APIの詳細は、Microsoft社のMSDNライブラリを参照してください。

クラス名

メンバ

留意事項

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 WHERE C1 = :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 WHERE C1 = :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を指定すると無制限になります。

  • 本機能は、ロードシェア運用をサポートしていません。

Transaction

SymfowareCommand.Transactionプロパティでは、常にSymfowareCommandオブジェクト関連のコネクションの起動したトランザクションを返却します。当該プロパティを手動で設定する場合、ユーザの設定値が無視されます。

Dispose

以下のオブジェクトを生成すると、.NET Framework環境だけではなく、サーバ側にも資源が作成されます。

  • SymfowareCommandオブジェクト

  • SymfowareDataReaderオブジェクト

作成された資源は、不要になった時点でSymfowareCommand.Disposeメソッド、またはSymfowareDataReader.Closeメソッドを実行することにより、即座に解放することができます。しかし、これらのメソッドを省略し、資源解放をガーベジコレクションに任せている場合、ガーベジコレクションは.NET Framework環境の空間を制御しているだけなので、サーバ側に無駄な資源が残る可能性があり、性能上の問題となります。これらのオブジェクトが不要となった場合は、必ず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個です。

ConnectionString

SymfowareConnection.ConnectionStringプロパティには、Symfoware .NET Data Provider固有のキーワードを指定することができます。キーワードの詳細は、“付録B 接続文字列に指定可能なキーワード”を参照してください。

ServerVersion

SymfowareConnection.ServerVersionプロパティで取得するバージョンレベルの形式は、以下のとおりです。
VxxLyy
xxは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 = new
      SymfowareDataAdapter(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);
        :
      adp.Update();
    • xxxCommandのセットメソッドを利用して、当該属性に直接設定する。
      例:

      xxxAdap.UpdateCommand=xxxCommand;
  • 関連するSymfowareConnectionは、以下のいずれかの方法で設定してください。

    • SymfowareDataAdapter(SymfowareCommand,String);

    • SymfowareDataAdapter(String,String);

    • SymfowareDataAdapter xxxAdap = new
      SymfowareDataAdapter(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メソッドを実行することにより、即座に解放することができます。しかし、これらのメソッドを省略し、資源解放をガーベジコレクションに任せている場合、ガーベジコレクションは.NET Framework環境の空間を制御しているだけなので、サーバ側に無駄な資源が残る可能性があり、性能上の問題となります。これらのオブジェクトが不要となった場合は、必ずSymfowareCommand.Disposeメソッド、またはSymfowareDataReader.Closeメソッドを指定し、解放してください。

GetChars

SymfowareDataReader.GetCharsメソッドでは、すべての場合においてGetCharsを使用してVarChar列をチャンクとして読み取ることができます。

Equals

2つの Object インスタンスが等しいかどうかを判断します(Object から継承されます)。

GetSchemaTable

  • 他システムから接続しているコネクション数がMAX_CONNECT_TCPに指定した接続数に達している場合、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メソッドにより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

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