【发布时间】:2011-07-05 10:13:40
【问题描述】:
我有 2 节课。使用通用数据访问类,我可以从存储过程 GetDepartments 中获取部门。我的问题是在目录访问类中,特别是在公共静态 DataTable ExecuteSelectCommand(DbCommand 命令)(执行命令并将结果作为 DataTable 对象返回)我不知道我必须在 CATCH 循环中写什么或如何离开它空白。任何人都可以帮我完成这部分吗?或者如果没有 Try-catch,我该如何更改它。
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 块的内容。
-
阅读器必须在里面使用。
-
看起来 Connection 可能同样被泄露。
标签: c# exception-handling data-access-layer