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

5.4 留意事項

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

クラス名

メンバ

留意事項

SymfowareCommand

CommandText

  • 疑問符(?)のプレースホルダを利用する場合

    • SymfowareCommand.CommandTextプロパティでは、疑問符(?)のプレースホルダを使用してください。
      例:
      SELECT * FROM General.Customers WHERE CustomerID = ?

    • 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文に重複して使用する場合は、ParameterDirectionプロパティに必ずInputを指定してください。

    • SymfowareParameterCollectionには、同名の名前付きパラメタを複数登録することはできません。

  • 1つのSQL文で疑問符プレースホルダと名前付きパラメタは混在して利用できません。

CommandTimeout

SymfowareCommand.CommandTimeoutプロパティへの設定値は無視されます。また、プロパティを参照すると、必ず0が返ります。コマンドの実行待ち時間を指定する場合は、SymfowareConnection.ConnectionStringプロパティのWAIT_TIMEを使用してください。

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

  • SymfowareConnection.BeginTransactionメソッドのIsolationLevelに“Chaos”および“Snapshot”は指定できません。指定するとエラーが返却されます。

  • システム用の動作環境ファイルの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メソッドによりスキーマ情報を取得することはできません。

  • 相関名を使用する場合、下記の属性値の返却値について、留意事項があります。

    • BaseColumnName

    • IsAliased

    • IsUnique

    • IsKey

    列1と列2が同じ相関名を持つ場合、それぞれの列の属性値の返却値は、同じ値になります。

    例:表“TB1”の列が、C1(プライマリーキー)、C2の場合
      SELECT C1 AS NAME,C2 AS NAME FROM SC1.TB1

    C1とC2の下記の属性値は、同じ値になります。

    [C1の値]
    BaseColumnName:C1
    IsAliase:True
    IsUnique:True
    IsKey:True

    [C2の値]
    BaseColumnName:C1
    IsAliase:True
    IsUnique:True
    IsKey:True

    また、列1の名前が列2の別名と同じ名前の場合、それぞれの列の属性値の返却値は、同じ値になります。

    例:
      SELECT C1,C2 AS C1 FROM SC1.TB1

    C1とC2の下記の属性値は、同じ値になります。

    [C1の値]
    BaseColumnName:C2
    IsAliase:False
    IsUnique:False
    IsKey:True

    [C2の値]
    BaseColumnName:C2
    IsAliase:False
    IsUnique:False
    IsKey:True

  • マルチテーブル参照とサブ参照を試用する場合、下記の属性値はデフォルト値のみ返却します。

    • ColumnName

    • IsUnique

    • IsKey

    • IsAutoIncrement

    • BaseSchemaName

    • BaseTableName

    • BaseColumnName

    • IsAliased

    • IsExpression

    • IsReadOnly

  • tuneparamキーワード“TableAdapterCompatible”の値により、動作が異なります。
    TableAdapterCompatibleの値がOFFの場合は、MSDNと同様の動作となります。TableAdapterCompatibleの値がONの場合は、V10.1.0以前の動作となります。動作の違いについては、“B.2 tuneparamキーワード”の“TableAdapterCompatible ”を参照してください。

GetString

SymfowareDataReader.GetStringメソッドでは、変換は実行されません。そのため、取得するデータは文字列である必要があります。文字列でない場合は、例外が生成されます。

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プロパティに指定可能なデータ型の詳細は、以下のとおりです。既定値はVarCharです。

  • BLOB

  • Char

  • VarChar

  • NChar

  • NCharVarying

  • Date

  • Time

  • Timestamp

  • Numeric

  • Decimal

  • Real

  • DoublePrecision

  • SmallInt

  • Int

  • IntervalYear

  • IntervalMonth

  • IntervalYearToMonth

  • IntervalDay

  • IntervalDayToHour

  • IntervalDayToMinute

  • IntervalDayToSecond

  • IntervalHour

  • IntervalHourToMinute

  • IntervalHourToSecond

  • IntervalMinute

  • IntervalMinuteToSecond

  • IntervalSecond

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機能を実装しています。