私は2つのクラスを持っています。汎用データアクセスクラスでは、ストアドプロシージャGetDepartmentsから部門を取得できます。私の問題は、カタログアクセスクラスと特にパブリック静的DataTable ExecuteSelectCommand(DbCommandコマンド)(コマンドを実行し、DataTableオブジェクトとして結果を返す)です。CATCHループで何を書き込む必要があるか、それを残す方法はわかりません私はこの部分を完了するために私を助けてもらえますか?あるいは、どうすれば私はTry-catchなしで変更することができますか?trycatch関数の問題
using System;
using System.Data;
using System.Data.Common;
using System.Configuration;
public static class GenericDataAccess
{
static GenericDataAccess()
{
}
public static DataTable ExecuteSelectCommand(DbCommand command)
{
DataTable table;
try
{
command.Connection.Open();
DbDataReader reader = command.ExecuteReader();
table = new DataTable();
table.Load(reader);
reader.Close();
}
catch (...)
{
......
}
finally
{
command.Connection.Close();
}
return table;
}
public static DbCommand CreateCommand()
{
string dataProviderName = BalloonShopConfiguration.DbProviderName;
string connectionString = BalloonShopConfiguration.DbConnectionString;
DbProviderFactory factory = DbProviderFactories.GetFactory(dataProviderName);
DbConnection conn = factory.CreateConnection();
conn.ConnectionString = connectionString;
DbCommand comm = conn.CreateCommand();
comm.CommandType = CommandType.StoredProcedure;
return comm;
}
}
**The Catalog Access class:**
using System;
using System.Data;
using System.Data.Common;
public static class CatalogAccess
{
static CatalogAccess()
{
}
public static DataTable GetDepartments()
{
DbCommand comm = GenericDataAccess.CreateCommand();
comm.CommandText = "GetDepartments";
return GenericDataAccess.ExecuteSelectCommand(comm);
}
}
何その後、次のような何かをしたいですExecuteSelectCommandメソッドで例外が発生した場合はどうしますか?それはキャッチブロックに入る必要があることを指示するでしょう。 – DoctorMick
リーダーは使用中でなければなりません。 – Aristos
Connectionのように見えますが、同様にリークする可能性があります。 – Constantin