[英]Create ASP.NET Syndication Feeds with SqlConnection and VB.NET
[英]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.