通过ADO.NET改进数据访问的方法

时间:2011-09-30 16:47:25

标签: c# ado.net

您更喜欢以下两个代码段中的哪一个?为什么?在任何情况下,对方更可取吗?你能进一步改进吗?

 i. 
        private int GetSize(string deptName)
        {
            QueryHelper dqh = new QueryHelper();
            return dqh.GetDataSet("sp_GetDeptSize",deptName).Tables[0].Rows[0]["Size"];
        }

    ii. 
        private int GetSize(string deptName)
        {
            QueryHelper dqh = new QueryHelper();
            DataSet ds = dqh.GetDataSet("sp_GetDeptSize", deptName);
            DataTable dt = ds.Tables[0];
    DataRow dr = dt.Rows[0];
    int size = dr["Size"];
            return size;
        }

请注意,QueryHelper是自定义类型。

我对此的回答: 我更喜欢方法i,它更简洁。似乎方法ii在任何情况下都不是优选的。

我需要有关方法i的进一步改进的建议,我们非常感谢您的想法。

2 个答案:

答案 0 :(得分:1)

您列出的两种方法99%相同。符号差异是品味问题 两者仍然需要转换为int

我更喜欢跳过DataSet并使用Command.ExecuteScalar()

答案 1 :(得分:0)

鉴于代码,我会说方法2更好,因为你必须在尝试访问之前检查所有内容。

如果数据集为NULL会怎么样?方法1将出错。

如果数据集中没有表格怎么办?方法1将再次出错。

如果有桌子但没有排怎么办?方法1将再次出错。