admin

System.Data.Common.DbDataReader

sql

如果我使用此类来做一个

SELECT * FROM ...

针对数据库的语句,我应该仅使用哪种方法或此类的变量来转储SQL语句的输出?


阅读 503

收藏
2021-07-01

共1个答案

admin

使用DbDataReader时,您需要迭代所有结果,如下所示:

using (DbDataReader dataReader = dbCommand.ExecuteReader())
{
    while (dataReader.Read())
    {
        // Get the values of the fields in the current row
        // For example, if the first column is a string...
        string firstColumn = dataReader.GetString(0);
    }

    dataReader.Close();
}

如果您尝试将结果输出到文件中,那么非常幼稚的方法将是这样的:

using (StreamWriter streamWriter = new StreamWriter(path))
{
    using (DbDataReader dataReader = command.ExecuteReader())
    {
        while (dataReader.Read())
        {
            for (int index = 0; index < dataReader.FieldCount; index++)
            {
                streamWriter.Write(dataReader.GetValue(index));

                if (index < dataReader.FieldCount - 1)
                {
                    streamWriter.Write(',');
                }
                else
                {
                    streamWriter.WriteLine();
                }
            }
        }

        dataReader.Close();
    }

    streamWriter.Close();
}

这将生成一个基本的CSV文件。

2021-07-01