DABroker for C++ でSQLを実行する場合,カーソルというリソースを使用します。このカーソルは,処理内容によって必要な個数が異なります。
一つのカーソルに対する占有期間は,オブジェクトの生存期間に依存するケースとメソッド実行時にだけ必要とするケースの二つのケースに分けることができます。オブジェクトの生存期間に依存するケースは,オブジェクトが作成されてから削除されるまで占有します。メソッド実行時にだけ必要とするケースは,そのメソッドの実行が終了すると解放します。一つのコネクションで使用できるカーソル数は64個までです。64個を超えた場合は,DBSQLCA例外をスローしますので64個を超えないようにプログラムで制御する必要があります。
オブジェクトの生存期間に依存するケースで使用するカーソル数を表3-1,メソッド実行時にだけ必要とするケースで使用するカーソル数を表3-2に示します。
表3-2 オブジェクトの生存期間に依存するケース
クラス名 | DBMSの種類※1 | |
---|---|---|
A | B | |
DBConnection※2 | 1 | 1 |
DBStatement | 1 | 1 |
DBPreparedStatement | 1 | 1 |
DBCallableStatement※3 | 2 | 2 |
DBRDatabase※2※4 | 1 | 1 |
DBRResultSet※5 | 1 | 1 |
A | HiRDB,VOS3 XDM/RD,VOS3 XDM/SD,VOSK SQL/K,Oracle |
B | SQL Anywhere,Adaptive Server Anywhere,SQL Server |
表3-3 メソッド実行だけ必要とするケース
クラス名 | メソッド名 | DBMSの種類※1 | |
---|---|---|---|
A | B | ||
DBConnection | ExecuteDirect※2 | 0 | 1 |
DBDatabaseMetaData | GetTable | 1 | 1 |
GetColumns | 1 | 1 | |
GetProcedures | 2 | 2 | |
GetprocedureColumns | 1 | 1 | |
GetPrimaryKeys | 1 | 1 | |
DBStatement | Execute | 0 | 1 |
GetResult | 0 | 1 | |
DBPreparedStatement | Execute | 0 | 1 |
GetResult | 0 | 1 | |
DBCallableStatement | SetProcedure | 0 | 1 |
Execute | 0 | 1 | |
Resume | - | 1 | |
DBResultSet | Update | 1 | 2 |
Delete | 1 | 2 | |
DBRDatabase | ExecuteDirect※2 | 0 | 1 |
DBRResultSet | Update | 1 | 2 |
Delete | 1 | 2 |
注※1 DBMSの種類は以下のとおりです。
A | HiRDB,VOS3 XDM/RD,VOS3 XDM/SD,VOSK SQL/K,Oracle |
B | SQL Anywhere,Adaptive Server Anywhere,SQL Server |
注※2 非同期処理の場合は,A:1 B:2となります。
クラス数 | オブジェクト数 | オブジェクト単位のカーソル使用数 | カーソル使用数 |
---|---|---|---|
DBConnection | 1 | 1 | 1 |
DBStatement | 2 | 1 | 2 |
DBCallableStatement | 1 | 2 | 2 |
合計 | 5 |