[seasar-dotnet:347] [Seasar]SQLRuntimeExceptionの中に実行SQLを格納して欲しい
kubo
jazzflute @ mbn.nifty.com
2006年 9月 19日 (火) 19:21:22 JST
久保です。
要望です。
SQLRuntimeExceptionに関して
現状この例外が発生した場合は、例外Messageの中にSQL文は
格納されていないため、Applicationが例外をcatchしたときに
「どんなSQLがダメだったのか?」がわかりません。
これを、SQLRuntimeExceptionの例外MessageもしくはPropertyからGetできる
ようにして欲しいです。
Java版では、SSQLExceptionがSQL文を保持できるようになっていて、
ApplicationではErrorレベルでSQL文を出力することが可能です。
(2.3.9より)
※DEBUGではSQL文がLog出力されますが、Applicationで判断して
Errorレベルで出力したい。
試しにCommandUtilとSQLRuntimeExceptionを以下のように修正したら、
上記のことが実現できました。(catchしてSQL文を取り出す)
//
// SQLRuntimeExceptionにConstructorを追加{SQLを指定できる}
//
public SQLRuntimeException(Exception cause, String targetSql)
: base("ESSR0071", new object[] { cause }, cause)
{
_targetSql = targetSql;
}
//
// SQLRuntimeExceptionに例外対象となったSQLのPropertyを追加
// ★Instance変数も
//
public String TargetSql
{
get { return _targetSql; }
set { _targetSql = value; }
}
//
// SQLRuntimeExceptionの生成時にIDbCommandのCommandTextを格納
// ★他のMethodも同様の修正
//
public static IDataReader ExecuteReader(IDataSource dataSource, IDbCommand cmd)
{
try
{
DataSourceUtil.SetTransaction(dataSource, cmd);
return cmd.ExecuteReader();
}
catch(Exception ex)
{
throw new SQLRuntimeException(ex, cmd.CommandText);//★ここ
}
}
ぜひともご検討お願いします。
--
kubo <jazzflute @ mbn.nifty.com>
seasar-dotnet メーリングリストの案内