| Oracle® Data Provider for .NET開発者ガイド リリース9.2.0.4 部品番号 B13807-01 |
|
Oracle.DataAccess.Clientネームスペース、4/30
OracleConnectionオブジェクトは、Oracleデータベースへの接続を表します。
Object
MarshalByRefObject
Component
OracleConnection
// C# public sealed class OracleConnection : Component, IDbConnection, ICloneable
インスタンス・メソッドではスレッド・セーフティを保証しませんが、すべてのpublic staticメソッドはスレッド・セーフです。
// C# // Uses connection to create and return an OracleCommand object. ... string ConStr = "User Id=myschema;Password=mypassword;" + "Data Source=oracle;"; OracleConnection con = new OracleConnection(ConStr); con.Open(); OracleCommand cmd = con.CreateCommand(); cmd.CommandText = "insert into mytable values (99, 'foo')"; cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); ...
ネームスペース: Oracle.DataAccess.Client
アセンブリ: Oracle.DataAccess.dll
OracleConnectionのメンバーを次の表に示します。
OracleConnectionのコンストラクタを表4-19に示します。
| コンストラクタ | 説明 |
|---|---|
|
|
OracleConnectionのstaticメソッドを表4-20に示します。
| メソッド | 説明 |
|---|---|
|
|
|
OracleConnectionのプロパティを表4-21に示します。
OracleConnectionのpublicメソッドを表4-22に示します。
OracleConnectionのイベントを表4-23に示します。
| イベント名 | 説明 |
|---|---|
|
|
|
|
Oracleフェイルオーバーが発生するとトリガーされるイベント。 |
|
|
データベースによって送信されるメッセージまたは警告に対してトリガーされるイベント。 |
|
|
接続状態が変化するとトリガーされるイベント。 |
OracleConnectionのイベント・デリゲートを表4-24に示します。
| イベント・デリゲート名 | 説明 |
|---|---|
|
|
|
|
|
|
|
|
OracleConnectionのコンストラクタは、OracleConnectionクラスの新規インスタンスをインスタンス化します。
このコンストラクタは、デフォルトのプロパティ値を使用して、OracleConnectionクラスの新規インスタンスをインスタンス化します。
このコンストラクタは、指定された接続文字列を使用して、OracleConnectionクラスの新規インスタンスをインスタンス化します。
このコンストラクタは、デフォルトのプロパティ値を使用して、OracleConnectionクラスの新規インスタンスをインスタンス化します。
// C# public OracleConnection();
OracleConnectionのプロパティは、次のデフォルト値に設定されます。
このコンストラクタは、指定された接続文字列を使用して、OracleConnectionクラスの新規インスタンスをインスタンス化します。
// C# public OracleConnection(String connectionString);
ConnectionStringプロパティは、指定されたconnectionStringに設定されます。ConnectionStringプロパティが解析され、無効な接続文字列属性または属性値が含まれている場合は例外がスローされます。
OracleConnectionオブジェクトのプロパティは、接続文字列で設定された場合を除き、デフォルトで次の値に設定されます。
OracleConnectionのstaticメソッドを表4-25に示します。
| メソッド | 説明 |
|---|---|
|
|
|
OracleConnectionのプロパティを表4-26に示します。
このプロパティは、Oracleデータベースへの接続に使用する接続情報を指定します。
// C# public string ConnectionString{get; set;}
接続文字列がコンストラクタを介して提供されている場合、このプロパティはその文字列に設定されます。
IDbConnection
ArgumentException: 無効な構文が接続文字列に指定されています。
InvalidOperationException: 接続がオープンされているときにConnectionStringが設定されています。
デフォルト値は空の文字列です。
ConnectionStringは、次の例のように、属性名と値のペアをセミコロンで区切った文字列である必要があります。
// C# OracleConnection con = new OracleConnection(); con.ConnectionString = "User Id=MYSCHEMA;Password=MYPASSWORD;" + "Data Source=Oracle";
ConnectionStringが適切な形式でない場合は、例外がスローされます。スペースは、二重引用符で囲まれている場合以外はすべて無視されます。
ConnectionStringプロパティが設定されると、OracleConnectionオブジェクトはすぐにエラーがないか文字列を解析します。ConnectionStringに無効な属性または無効な値が含まれている場合は、ArgumentExceptionがスローされます。User Id、Password、Proxy User Id、Proxy PasswordおよびData Source(指定されている場合)の属性値は、Openメソッドがコールされるまで検証されません。
接続は、ConnectionStringプロパティを設定するためにクローズする必要があります。ConnectionStringプロパティがリセットされると、新しい値が適用される前に、以前に設定されたすべての値がデフォルト値に再初期化されます。
Oracleデータベースでは、ユーザー名の大/小文字を区別できます。MySchemaなど、大/小文字が混在した名前のユーザーとして接続するには、User Id属性の値を次のように二重引用符で囲む必要があります。
// C# OracleConnection con = new OracleConnection(); con.ConnectionString = "User Id=\"MySchema\";Password=MYPASSWORD;" + "Data Source=Oracle";
ただし、Oracleのユーザー名がすべての大文字の場合、二重引用符のないUser Idは接続時にすべて大文字に変換されるので、二重引用符を使用せずにUser Id接続文字列属性をそのユーザー名に設定できます。一重引用符はサポートされていません。
| 関連項目:
完全な例は「例」を参照 |
接続文字列属性を2回以上設定した場合、最後の設定が有効になり、例外はスローされません。
ブール接続文字列属性は、true、false、yesまたはnoのいずれかに設定されます。
サポートされる接続文字列属性:
表4-27に、サポートされている接続文字列属性を示します。
このコード例は、二重引用符で囲まれていない場合はUser Id属性値の大/小文字が保持されないことを示しています。また、接続プールがいつ作成され、接続が接続プールからいつ取得されるのかも示しています。
// C# // Assume users "MYSCHEMA"and "MySchema" exist in the database ... OracleConnection con1 = new OracleConnection(); con1.ConnectionString = "User Id=myschema;Password=mypassword;" + "Data Source=oracle;"; con1.Open(); // Attempts to connect as "MYSCHEMA/MYPASSWORD" // A new connection is created; A new Connection Pool X is created con1.Dispose(); // Connection is placed back into Pool X OracleConnection con2 = new OracleConnection(); con2.ConnectionString = "User Id=MySchema;Password=MyPassword;" + "Data Source=oracle;"; con2.Open(); // Attempts to connect as "MYSCHEMA/MYPASSWORD" A connection is // obtained from Pool X; A new connection is NOT created. con2.Dispose(); // Connection is placed back into Pool X OracleConnection con3 = new OracleConnection(); con3.ConnectionString = "User Id=\"MYSCHEMA\";Password=MYPASSWORD;" + "Data Source=oracle;"; con3.Open(); // Attempts to connect as "MYSCHEMA/MYPASSWORD" A connection is // obtained from Pool X; A new connection is NOT created. con3.Dispose(); // Connection is placed back into Pool X OracleConnection con4 = new OracleConnection(); con4.ConnectionString = "User Id=\"MySchema\";Password=mypassword;" + "Data Source=oracle;"; con4.Open(); // Attempts to connect as "MySchema/MYPASSWORD" // A new connection is created; A new Connection Pool Y is created con4.Dispose(); // Connection is placed back into Pool Y OracleConnection con5 = new OracleConnection(); con5.ConnectionString = "User Id=MySchema;Password=mypassword;" + "Data Source=oracle; "; con5.Open(); // Attempts to connect as "MYSCHEMA/MYPASSWORD" // A connection is obtained from Connection Pool X // Extra spaces in the connection string do not force creation // of a new pool con5.Dispose(); // Connection is placed back into Pool X OracleConnection con6 = new OracleConnection(); con6.ConnectionString = "User Id=MySchema;Password=mypassword;" + "Data Source=oracle;Pooling=true;"; con6.Open(); // Attempts to connect as "MYSCHEMA/MYPASSWORD" // A connection is obtained from Connection Pool X. "Pooling=true" // in the connection string does not force creation of a new pool // since the initial connection was established using the default // value of "Pooling=true". Note that even if the connection // string had "POOLING=Yes", a new connection pool will not be // created since they both enable pooling. The same rule applies // to other connection string attributes as well. con6.Dispose(); // Connection is placed back into Pool X ...
このプロパティは、Open()メソッドが、要求を終了するまでに、プールされた接続の取得にかけられる最長時間を指定します。
// C# public int ConnectionTimeout {get;}
プールされた接続要求に割り当てられる最長時間(秒)
IDbConnection
デフォルト値は15です。
このプロパティを0に設定すると、プールされた接続要求が空いた接続を取得するまで待機するときの時間制限がなくなります。このタイムアウトは、プールされた接続要求にのみ影響し、新規の接続要求には関係しません。
このプロパティは、Oracleのデータベース・インスタンスを識別するOracle Netサービス名(以前のTNS別名)を指定します。
// C# public string DataSource {get;}
Oracle Netサービス名
このプロパティのデフォルト値は空の文字列です。
このプロパティは、OracleConnectionが接続を確立したOracleデータベースのリリース番号を指定します。
// C# public string ServerVersion {get;}
Oracleデータベースのリリース(9.2.0.1.0.など)
InvalidOperationException: 接続がクローズされています。
デフォルトは空の文字列です。
このプロパティは、接続の現在の状態を指定します。
// C# public ConnectionState State {get;}
接続のConnectionState
IDbConnection
ODP.NET では、このプロパティにConnectionState.ClosedおよびConnectionState.Openを指定できます。デフォルト値は、ConnectionState.Closedです。
OracleConnectionのpublicメソッドを表4-28に示します。
BeginTransactionメソッドは、ローカル・トランザクションを開始します。
このメソッドは、ローカル・トランザクションを開始します。
このメソッドは、指定された分離レベルでローカル・トランザクションを開始します。
このメソッドは、ローカル・トランザクションを開始します。
// C# public OracleTransaction BeginTransaction();
新規トランザクションを表すOracleTransactionオブジェクト
IDbConnection
InvalidOperationException: トランザクションはすでに開始されています。
トランザクションは、IsolationLevel.ReadCommittedのデフォルト値に設定された分離レベルを使用して作成されます。トランザクションに関係する操作をさらに行う場合は、返されたOracleTransactionオブジェクトで実行する必要があります。
このメソッドは、指定された分離レベルでローカル・トランザクションを開始します。
// C# public OracleTransaction BeginTransaction(IsolationLevel isolationLevel);
新規トランザクションを表すOracleTransactionオブジェクト
IDbConnection
InvalidOperationException: トランザクションはすでに開始されています。
ArgumentException: 指定されたisolationLevelが無効です。
次の2つの分離レベルがサポートされています。
その他の分離レベルを要求すると、例外が発生します。
// C# // Starts a transaction and inserts one record. If insert fails, rolls back // the transaction. Otherwise, commits the transaction. ... string ConStr = "User Id=myschema;Password=mypassword;" + "Data Source=oracle;"; OracleConnection con = new OracleConnection(ConStr); con.Open(); //Create an OracleCommand object using the connection object OracleCommand cmd = new OracleCommand("", con); // Start a transaction OracleTransaction txn = con.BeginTransaction(IsolationLevel.ReadCommitted); try { cmd.CommandText = "insert into mytable values (99, 'foo')"; cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); txn.Commit(); Console.WriteLine("Both records are inserted into the database table."); } catch(Exception e) { txn.Rollback(); Console.WriteLine("Neither record was inserted into the database table."); } ...
このメソッドは、OracleConnectionオブジェクトのコピーを作成します。
// C# public object Clone();
OracleConnectionオブジェクト
ICloneable
クローニングされたオブジェクトは、クローニング元のオブジェクトと同じプロパティ値を持ちます。
// C# ... OracleConnection con = new OracleConnection(ConStr); con.Open(); ... //Need a proper casting for the return value when cloned OracleConnection con_cloned = (OracleConnection) con.Clone(); ...
このメソッドは、データベースへの接続をクローズします。
// C# public void Close();
IDbConnection
次のように実行されます。
Open()を使用すると、接続を再びオープンできます。
このメソッドは、OracleConnectionオブジェクトと関連付けられたOracleCommandオブジェクトを作成し、返します。
// C# public OracleCommand CreateCommand();
OracleCommandオブジェクト
IDbConnection
// C# // Uses connection to create and return an OracleCommand object. ... string ConStr = "User Id=myschema;Password=mypassword;" + "Data Source=oracle;"; OracleConnection con = new OracleConnection(ConStr); con.Open(); OracleCommand cmd = Con.CreateCommand(); cmd.CommandText = "insert into mytable values (99, 'foo')"; cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); ...
GetSessionInfoは、セッションのグローバリゼーション設定を表すOracleGlobalizationオブジェクトを返すか、リフレッシュします。
このメソッドは、セッションのグローバリゼーション設定を表すOracleGlobalizationオブジェクトの新規インスタンスを返します。
このメソッドは、セッションのグローバリゼーション設定を使用して指定されたOracleGlobalizationオブジェクトをリフレッシュします。
このメソッドは、セッションのグローバリゼーション設定を表すOracleGlobalizationオブジェクトの新規インスタンスを返します。
// C# public OracleGlobalization GetSessionInfo();
新しく作成されたOracleGlobalizationオブジェクト
// C# // Retrieves the session globalization info and prints the language name. // Then sets new territory, language, and timestamp format into the session // globalization info in the connection object. ... string ConStr = "User Id=myschema;Password=mypassword;" + "Data Source=oracle;"; OracleConnection con = new OracleConnection(ConStr); con.Open(); ... //Get session info from connection object OracleGlobalization ogi = con.GetSessionInfo(); //Print the language name Console.WriteLine(ogi.Language); //Update session info oraGlob.Territory = "JAPAN"; ogi.Language = "JAPANESE"; ogi.TimeStampFormat = "HH.MI.SSXFF AM YYYY-MM-DD"; //Set session info into connection object con.SetSessionInfo(ogi); ...
このメソッドは、セッションのグローバリゼーション設定を使用して指定されたOracleGlobalizationオブジェクトをリフレッシュします。
// C# public void GetSessionInfo(OracleGlobalization oraGlob);
このメソッドは、Oracleデータベースへの接続をオープンします。
// C# public void Open();
IDbConnection
ObjectDisposedException: オブジェクトがすでに破棄されています。
InvalidOperationException: 接続がすでにオープンされているか、接続文字列がnullまたは空です。
接続プーリングが使用可能の場合は、接続はプールから取得されます。使用禁止の場合は、新規の接続が確立されます。
Open()メソッドがコールされた際に、プール内に未使用の接続が存在しないことがあります。この場合は、新規の接続が確立されます。
指定された接続タイムアウト値以内に使用できる接続がない場合、Max Pool Sizeに達すると、OracleExceptionがスローされます。
このメソッドは、新しいパスワードを使用して新規の接続をオープンします。
// C# public void OpenWithNewPassword(string newPassword);
このメソッドは、ConnectionStringプロパティの設定を使用して、新規の接続を確立します。接続文字列の中で、古いパスワードをPassword属性値として指定する必要があります。
このメソッドは、クローズ状態のOracleConnectionでのみコールできます。
このメソッドは、指定されたOracleGlobalizationオブジェクトで指定されたすべてのプロパティ値を使用して、セッションのグローバリゼーション設定を変更します。
// C# public void SetSessionInfo(OracleGlobalization oraGlob);
OracleGlobalizationオブジェクト。
このメソッドをコールすることは、セッションでALTER SESSION SQLをコールすることと同じです。
// C# // Retrieves the session globalization info and prints the language name. // Then sets new territory, language, and timestamp format into the session // globalization info in the connection object. ... string ConStr = "User Id=myschema;Password=mypassword;" + "Data Source=oracle;"; OracleConnection con = new OracleConnection(ConStr); con.Open(); //Create an OracleGlobalization object OracleGlobalization ogi; //Get session info using the second overloaded method con.GetSessionInfo(ogi); //Print the language name Console.WriteLine(ogi.Language); //Update session globalization info oraGlob.Territory = "JAPAN"; ogi.Language = "JAPANESE"; ogi.TimeStampFormat = "HH.MI.SSXFF AM YYYY-MM-DD"; //Set session globalization info into connection object con.SetSessionInfo(ogi);
OracleConnectionのイベントを表4-29に示します。
| イベント名 | 説明 |
|---|---|
|
|
|
|
Oracleフェイルオーバーが発生するとトリガーされるイベント。 |
|
|
データベースによって送信されるメッセージまたは警告に対してトリガーされるイベント。 |
|
|
接続状態が変化するとトリガーされるイベント。 |
このイベントは、Oracleフェイルオーバーが発生するとトリガーされます。
// C# public event OracleFailoverEventHandler Failover;
イベント・ハンドラは、イベントについての情報を含む次のプロパティを公開するOracleFailoverEventArgsオブジェクトを受け取ります。
このイベントは、データベースによって送信されるメッセージまたは警告に対してトリガーされます。
// C# public event OracleInfoMessageEventHandler InfoMessage;
イベント・ハンドラは、イベントについての情報を含む次のプロパティを公開するOracleInfoMessageEventArgsオブジェクトを受け取ります。
データベースからの警告およびメッセージに応答するには、クライアントはこのイベントをリスニングするためのOracleInfoMessageEventHandlerデリゲートを作成する必要があります。
このイベントは、接続の状態が変化するとトリガーされます。
// C# public event StateChangeEventHandler StateChange;
イベント・ハンドラは、イベントについての情報を含む次のプロパティを公開するStateChangeEventArgsオブジェクトを受け取ります。
Open、CloseまたはDisposeへのコールが明示的に行われると、接続の状態が変わった後にStateChangeイベントが起動されます。
OracleConnectionのイベント・デリゲートを表4-30に示します。
| イベント・デリゲート名 | 説明 |
|---|---|
|
|
|
|
|
|
|
|
このイベント・デリゲートは、Failoverイベントを処理します。
このイベント・デリゲートは、InfoMessageイベントを処理します。
このイベント・デリゲートは、StateChangeイベントを処理します。
| 関連資料:
|
|
|
![]() Copyright © 2002, 2003 Oracle Corporation. All Rights Reserved. |
|