如何从数据库中检索多个查询结果

时间:2012-06-12 06:13:37

标签: .net database asp.net-mvc-3 .net-4.0 ado.net

正在研究我在.net 4和MVC 3上构建的一个项目,事情很好,除了我对代码改进和特别是关于数据库连接的效率几乎没有疑问,方案是:

我在模型类中运行,它连接到数据库并从中检索信息,由于几乎没有要求必须使用多个查询检索必须由函数返回的整体结果,所以为了达到这个目的,我我目前正在做的是创建三个sql命令并运行它们并逐个填充数据集。

但我有一种直觉,认为这可能不是最好的,有效的方式,加上这也可能是时间/资源消耗逐个运行多个查询到数据库,这可能是多余的。

所以我希望你们的专家意见我做得对,或者有更好,更快的方法来实现这个目标?

public string[] GetData()
    {
        …

        const string cmdString = "Select TOP 3 item.Id FROM design WHERE status=1 ORDER BY submittedOn Desc";
        const string cmdString2 = "Select TOP 6 item.Id FROM design WHERE status=1 ORDER BY orders desc;";
        const string cmdString3 = "SELECT TOP 9 item.Id FROM design WHERE status=1 ORDER BY NewID()";
        …

        var conn = new SqlConnection(conString.ConnectionString);
        var mySqlDataAdapter = new SqlDataAdapter();

        var myDataSet = new DataSet();
        int totalRows = 1;

        try
        {
            mySqlDataAdapter = new SqlDataAdapter(cmdString, conn);
            mySqlDataAdapter.Fill(myDataSet, "DataTble");

            mySqlDataAdapter = new SqlDataAdapter(cmdString2, conn);
            mySqlDataAdapter.Fill(myDataSet, "DataTble");

            mySqlDataAdapter = new SqlDataAdapter(cmdString3, conn);
            mySqlDataAdapter.Fill(myDataSet, "DataTble");

            totalRows = myDataSet.Tables["DataTble"].Rows.Count;

            status = true;
        }
        catch (Exception exp)
        {
            status = false;
            totalRows = 0;
        }

        var dataResults = new string[totalRows];

        if (status)
        {
            //putting the results into an Array() and returning that Array.
        }
        conn.Dispose();
        mySqlDataAdapter.Dispose();
        myDataSet.Dispose();
    return dataResults;
    }

0 个答案:

没有答案