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 메서드에서 예외가 발생하면 수행하려고합니까? 그것은 catch 블록에 들어가야 할 것이 무엇인지 지시 할 것입니다. – DoctorMick
독자가 안에 있어야합니다. – Aristos
연결이 비슷하게 누출 될 수 있습니다. – Constantin