データベースへの接続を表す。
dataAccess | セクション名 |
defaultConnectionTimeout | 接続タイムアウトの既定値。設定要素に設定されていない場合の既定値とする。接続がタイムアウトするまでの時間を秒で指定する。 |
defaultCommandTimeout | クエリーコマンドタイムアウトの既定値。設定要素に設定されていない場合の既定値とする。クエリーコマンドがタイムアウトするまでの時間を秒で指定する。 60秒以上は指定しない。ここにそれ以上の値を指定しなければ動作しないシステムは設計がおかしいか配置がおかしいか他何かが間違っている。 |
addタグにより個別の接続に対する設定を記述する。
name | 設定要素名。重複は許されない。"default"の名前を持つ設定要素が必ず1つ必要。"/"(スラッシュ)で区切った文字を指定する事でプログラムからの設定名称指定を柔軟に出来る。 |
className | 実際に使用するConnectionの実装を記述する。 |
url | 接続先のURLを記述する。webサービスの場合は http://exapmle.com:8000/service/function.aspx のような形式になる。 |
database | 接続先のデータベース名を記述する。webサービスの場合は 使用しない。 |
user | 接続先のデータベースを使用するためのユーザー名を記述する。 |
password | 接続先のデータベースを使用するためのパスワードを記述する。 |
quoteStyle | 引用記号処理のためのスタイルを記述する。0:SQLサーバー(シングルクォーテーションを二重化、ワイルドカード文字を"[]"(ブラケット)で囲む) |
commandTimeout | この接続でのクエリーコマンドタイムアウトの既定値。クエリーコマンドがタイムアウトするまでの時間を秒で指定する。記述しない場合は基本設定項目の値を使用する。長い値を指定してはならない。ほとんどのクエリーに300秒などありえない。 |
defaultConnectionTimeout | この接続での接続タイムアウトの既定値。接続がタイムアウトするまでの時間を秒で指定する。記述しない場合は基本設定項目の値を使用する。 |
SQLサーバーに接続する。
<dataAccess defaultConnectionTimeout="15" defaultCommandTimeout="45">
<add name="default"
className="CFW.Database.SqlServer.SqlServerConnection,CFW.Database"
url="dbserver.example.com"
database="sampledb"
user="sample"
password="sample"
quoteStyle="0"
commandTimeout="15"
connectionTimeout="15"
option=""
/>
</dataAccess>
Connection connection = ConnectionFactory.GetConnectionByName("default");
connection.Open();
try{
string query = @"select * from MST_CITY where CITY_CODE=@cityCode";
Command command = new Command(query,CommandType.Text);
command.SetParameter(new CFW.Database.Parameter( "@cityCode",DbType.String,"1"));
DataSet result = connection.ExecuteQuery(command);
}
catch(Exception ex){
ErrorHandler handler = ErrorHandler.GetInstance(ex);
handler.WriteLog();
}
finally{
connection.Close();
}
Connection connection = ConnectionFactory.GetConnectionByName("default");
connection.Open();
try{
string query = @"update MST_CITY set AREAS_CODE = @areasCode where CITY_CODE=@cityCode";
Command command = new Command(query,CommandType.Text);
command.SetParameter(new CFW.Database.Parameter( "@areasCode",DbType.String,"JPN"));
command.SetParameter(new CFW.Database.Parameter( "@cityCode",DbType.String,"1"));
int result = connection.ExecuteUpdate(command);
}
catch(Exception ex){
ErrorHandler handler = ErrorHandler.GetInstance(ex);
handler.WriteLog();
}
finally{
connection.Close();
}
//設定要素"draft"に記述された接続設定を使用する。
Connection defaultConnection = ConnectionFactory.GetConnectionByName("default");
//設定要素"A001/PM/DRAFT"に記述された接続設定を使用する。
//ここではC#の可変引数機能を使用して"/"区切り要素を渡す。
Connection specialCompanyConnection = ConnectionFactory.GetConnectionByName("A001","PM","DRAFT");
実装されていない種類の接続を作成する場合、CFW.Database.Connection を継承するクラスを作成し抽象メソッドを実装する。
Open | 設定内容から接続の実体(SqlConnection,OracleConnectionなど)を生成し、開く。 |
BeginTransaction | 接続実体に対応したトランザクションオブジェクトを生成し、トランザクションを開始する。 |
CommitTransaction | 既に開始されているトランザクションをコミットする。 |
RollbackTransaction | 既に開始されているトランザクションを破棄する。 |
CreateDbCommand | 接続実体に対応したIDbCommandをCommandオブジェクトの内容で生成する。 |
CreateDataAdapter | 接続実体に対応したIDataAdapterを生成する。 |
SystemDate | 接続実体に対応した現在時間取得クエリーを実行し、日付を返す |
実装されているが処理内容を変更する場合は適宜オーバーライドする。