繁体   English   中英

如何在VB.Net或ASP.Net中创建Windows应用程序

[英]how to create windows applications in VB.Net or ASP.Net

从哪种数据库表中导入数据时,哪种方法更有效:DataAdapter和DataSet或DataReader?

我会选择最喜欢的一个,并在发现使用另一个的瓶颈时决定进行优化。 如果您只是计划一个新的应用程序,那么让它以Okay的性能工作比让您陷入停顿尝试“最佳”方法更有意义。

在后台,DataAdapter使用DataReader实际查询数据并填充数据表/数据集。 因此,一天结束时,使用哪个适配器并不重要,但我建议使用DataAdapter,因为它更易于编写代码,并且不易出错。

数据读取器将以渐进方式读取数据,使您一次可以处理一行,其速度快且重量轻,但仅向前处理。

数据适配器和数据集正确地使用DataReader来获取数据并将结果存储在内存中,填满表需要更长的时间,但是访问和更新之后要快得多,直到将数据持久保存到数据库中为止。

如果您需要速度,请使用数据读取器,否则请使用数据集,因为它的可读性和可管理性更高。

用例在这里很重要。 一旦数据编组到您的应用程序中,您将如何使用它?

如果只需要进行迭代,则DataReader具有列出技术中最少的内存开销。

DataAdapter提供了更多功能以换取更多内存,并且特别地将涉及DataTable的开销。 这是为了换取更方便的API。

DataSet最重(至少在进入类型化数据集之前),但提供了获取DataRows之间的内存中关系的能力。

就内存和编程效率而言,功能与成本之间存在一定范围的关系-内存在许多用例中相对便宜,从长远来看,程序员的时间和代码的可维护性可能更为重要。

DataReader比DataAdapter更“高效”,但有局限性。 这可能是最适合您的问题的方法,但是如果没有更多细节,很难说。

正如约翰所说,获得可行的解决方案可能是您的第一要务。

既然听起来您正在寻找程序效率。 我倾向于使用数据读取器作为访问方法的业务对象类。 那将使您能够创建可维护的代码并提高速度。

您可以使用下面的示例通过DataReader进行迭代的方法来创建对象。 这为您提供了所有的速度,我认为这是相当可维护的。 这可能是DataSet为您提供的一种类型,几乎不需要更多的代码来概括检索数据所需的功能。

像这样的东西:

public class Table1
{
    public int Col1 { get; set; }
    public String Col2 { get; set; }

    public List<Table1> GetTable1()
    {
        List<Table1> tableContents = new List<Table1>();
        SqlCommand cmd = new SqlCommand("SELECT * FROM Table1");
        SqlDataReader rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
            tableContents.Add(new Table1
            {
                Col1 = (int)rdr["Col1"],
                Col2 = (string)rdr["Col2"]
            });
        }

        return tableContents;
    }
}

有很多方法可以完成,希望对您有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM