110,566
社区成员
发帖
与我相关
我的任务
分享
public static SqlDataReader Execute(String sql) {
SqlConnection conn = new SqlConnection(Constants.CONNECT_STRING);
using(SqlCommand cmd = new SqlCommand(sql, conn)) {
try {
conn.Open();
return cmd.ExecuteReader();
} catch(System.Data.SqlClient.SqlException ex) {
throw new Exception(ex.Message);
}
}
}
SqlDataReader sdr = SQLHelper.Execute(sql);
// 使用sdr
sdr.Close();
sdr = null;
Result ret = SQLHelper.Execute(sql);
// 使用ret.sdr
ret.sdr.Close();
ret.sdr = null;
ret.conn.Close();
ret.conn.Dispose();
ret.conn = null;
var lst = SqlHelper.GetList<ResultType>(connstr, cmd,
rd => new ResultType
{
Name = (string)rd["Name"],
Cost = (decimal)rd["Cost"]
});
只要将这个用来返回强类型对象的委托作为参数提供,就能返回一个强类型的对象集合。而隐藏了内部的代码。public static List<T> GetList<T>(string connectionString, SqlCommand cmd, Func<IDataReader, T> Converter)
{
using (var conn = new SqlConnection(connectionString))
{
conn.Open();
return (from IDataReader rd in cmd.ExecuteReader() select Converter(rd)).ToList();
}
}
可以发返回强类型的对象集合,例如调用它public class ResultType
{
public string Name;
public decimal Cost;
}
var lst = SqlHelper.GetList<ResultType>(string, cmd,
rd => new ResultType
{
Name = (string)rd["Name"],
Cost = (decimal)rd["Cost"]
});