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

5.3.1 SymfowareConnectionクラス

SymfowareConnectionクラスで拡張したAPIは、以下のメンバです。

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);
[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されるまで検索することはできません。

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

解放する一時表の名前。

注意

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
        'エラー処理ルーチンを記述
    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

データベースアクセスエラーが発生しました。

使用例
[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で利用者の認証情報を管理している場合、現行セションの利用者(認可識別子)のパスワードを変更します。

記述形式
[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)
    {
        // エラー処理ルーチンを記述
    }
    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