繁体   English   中英

SqlDataAdapter.Fill() 与 DataTable.Load()

[英]SqlDataAdapter.Fill() vs DataTable.Load()

我来自这里的这个问题,但我有一个不同的案例。 我需要在DataTable结果,并且我有两种可能的方法:

public static DataTable SelectDataTable(string query, string ConnectionString)
{       
    using (SqlConnection myConnection = new SqlConnection(ConnectionString))
    {
        using (SqlDataAdapter myDataAdapter = new SqlDataAdapter(query, myConnection))
        {
            DataTable dt = new DataTable();
            myDataAdapter.Fill(dt);
            return dt;
        }
    }
}

public static DataTable SelectDataTable(string query, string ConnectionString)
{
    using (SqlConnection myConnection = new SqlConnection(ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand(query, myConnection))
        {
            myConnection.Open();
            DataTable dt = new DataTable();
            dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection));
            return dt;
        }
    }
}

所以我的问题是:两者之间有区别吗

SqlDataAdapter + Fill()SqlDataReader + DataTable + Load()

更喜欢哪种方法?

乔尔的回答非常详细,是什么让这个问题不重复

事实上,我没有使用SqlDataReader所有提到的优点,我用它来填充 DataTable,这让我期待答案是这样的:它是一样的?! 不幸的是,很难猜测引擎盖下发生了什么。

除非您正在处理大数据,否则我不希望使用 dataReader 而不是 dataAdapter 会带来巨大的性能提升。

话虽如此, Pawel发布的链接有一篇相当不错的文章,解释了两者的差异和优势。

主要内容是阅读器用于阅读数据。 除了这些,他们什么都不做。

因为它们没有做太多其他的事情,所以它们的性能开销相对较低。

DataAdapters 将允许您做的比 Readers 多,但在您的情况下,听起来您除了读取记录之外不需要做任何事情。

重申一下,除非您正在处理大数据(如数十万/数百万行),否则我不希望使用 dataReader 带来的性能节省会非常明显。

只有您在使用自己的数据进行基准测试时才能确定这一点。

如果这消除了您对 DataAdapter 和 DataReader 之间差异的任何混淆,请告诉我们。

暂无
暂无

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

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