DataTable未加载SqlDataReader

asm*_*dev 3 .net c# datatable sqldatareader

using (SqlConnection connection = new SqlConnection(connectionString))
    {
        using (SqlCommand command = new SqlCommand(sqlCommand, connection))
        {
            command.CommandType = CommandType.Text;
            connection.Open();
            using (SqlDataReader reader = command.ExecuteReader())
            {
                DataTable datatable = new DataTable();
                datatable.Load(reader);

                return datatable;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

运行此代码将返回一个空的DataTable。但是,循环遍历reader.Read()并打印到调试控制台会显示读取器具有数据,并且可以打印预期的数据。另外,在调试过程中扩展阅读器对象时,hasRows为true,并且字段计数对返回的列数正确。

在这里有类似的帖子 麻烦将SQL Data Reader数据加载到DataTable中, 但是答案实际上是,只是不使用它,而是使用a SqlDataAdapter。我更喜欢使用它,并且DataTable具有使用IDataReader的load方法DataTable.Load(IDataReader)。我只是不知道当我将阅读器打印到调试窗口时阅读器为什么能工作,而当我将其加载到调试窗口时却不知道DataTable。我只是在俯视什么吗?

asm*_*dev 6

事实证明,我只是忽略了某些东西,而实际上这根本不是问题。原始代码实际上可以正常工作。DataTable调试时显示的对象预览{}对我来说是空的。 在此处输入图片说明

然后,在对象上有一个名为ExtendedPropertieshad 的属性,该属性Count = 0显然不是行数,但是我只是掩饰不住,Count = 0陷入了困境。

在此处输入图片说明

如果发现自己处在相同的情况下,则将鼠标悬停在对象上时向下滚动并展开Rows,您应该会在其中看到行数。在此处输入图片说明

我被这个骗了...对我的愚蠢感到抱歉,并感谢大家的帮助。

  • 因此,您是如何解决该错误的? (2认同)