再继续请教:数据库读取类是静态方法好还是实例化好?
刚才问了个数据库连接的 现在请教一个读取类的:
如:
namespace BProc
{
public DataSet Re_DataSet(string strProName, ProceducreParameter[] stProParameters)
{
using (B_SqlConn Exsql = new B_SqlConn())
{
DataSet ds = null;
Exsql.Open();
using (SqlCommand Cmd = new SqlCommand(strProName, Exsql.Conn))
{
Cmd.CommandType = CommandType.StoredProcedure;
for (int i = 0; i < stProParameters.Length; ++i)//注意,不是“i++”!
{
ProceducreParameter stProPar = stProParameters[i];
SqlParameter sp = new SqlParameter(stProPar.TabStrName, stProPar.TabStrType, stProPar.TabStrSize);
sp.Direction = stProPar.TabStrDirection;
sp.Value = stProPar.TabStrValue;
Cmd.Parameters.Add(sp);
}
SqlDataAdapter da = new SqlDataAdapter(Cmd);
ds = new DataSet();
da.Fill(ds);
da.Dispose();
Cmd.Parameters.Clear();
Cmd.Dispose();
}
Exsql.Close();
Exsql.Dispose();
return ds;
}
}
}
引用的时候:using BProc;
ProcParameter Proce = new ProcParameter();
SqlDataReader sdr = Proce.Re_DataSet("储存过程名称",proc);
还是使用静态: public static DataSet Re_DataSet(string strProName, ProceducreParameter[] stProParameters)
调用的时候直接:ProcParameter..Re_DataSet("储存过程名称",proc);
哪个方法是最佳选择的,最专业合理的?这几年我一直用的都是实例化调用的方式,但不知道是不是最好的 数据库 类
[解决办法]
高度频繁的重用方法,用静态更方便。不过建议你使用微软的企业图库,操作数据库更方便的简洁。
[解决办法]
SqlDataReader sdr = Proce.Re_DataSet("储存过程名称",proc);
你这类的类型写错了。这可不是小事。如果是DataSet,那么它不是占用物理连接的。如果是DbDataReader,那么就是占用连接的,是不应该这样写的。如果这里是笔误,是DataSet(而跟任何Reader无关),那么就对了。
在你的代码中,
da.Dispose();
Cmd.Parameters.Clear();
Cmd.Parameters.Clear();
Cmd.Dispose();
Exsql.Close();
Exsql.Dispose();
不要在这么浅的地方过于纠结“专业不专业”的。你要是知道如何专业地设计程序,你就没有经历先把时间用在这种地方了。
[解决办法]
简单来说,如果你拿不出测试代码来说明问题,那么对于“可以不可以把一个方法定义为static的”,这个问题,不要再多花精力。你只要听着自己的最初的设计。假设不需要面向对象设计,那么我可能就在第一时间写上
public static class MySqlHeler
{
public static DataSet Re_DataSet(......)
{
......