类似的应用还可以在访问数据库时。例如用DataReader访问数据库,必须要刻用完了Reader和Connection需要关闭,并且需要处理各种异常情况。用类似的方法可以写出比较方便的函数:
public delegate T TryExecuteReaderDelegate
(SqlDataReader reader);
public T TryExecuteReader(SqlCommand command, TryExecuteReaderDelegate dele, T defaultValue)
{
command.Connection = conn;
SqlDataReader reader = null;
try
{
conn.Open();
reader = command.ExecuteReader();
return dele(reader);
}
catch
{
return defaultValue;
}
finally
{
if(reader != null && !reader.IsClosed)
reader.Close();
if(conn != null && conn.State != ConnectionState.Closed)
conn.Close();
}
}
使用:
SqlCommand command = new SqlCommand("select xxxx");
command.Parameters.AddWithValue("@paramName", value);
String s = TryExecuteReader(command, delegate(SqlDataReader reader)
{
reader.Read();
return reader.GetString(0);
}, "haha");
这样一来,使用的时候要方便很多,再也不用考虑连接是否关闭、是否处理了异常情况等问题:正常的时候返回想要的结果,异常的时候返回缺省值。
上一页 [1] [2] [3] [4]
关注此文的读者还看过: