SqlDataReader 上未以 table 格式返回数据以下载 csv 文件

Data is not being returned in table format on SqlDataReader for download csv file

这里是 table 结构:

enter image description here

代码如下:

protected void Write_CSV_From_Recordset2(SqlDataReader oDataReader)
{
    StringBuilder builder = new StringBuilder();

    List<string> columnNames = new List<string>();
    List<string> rows = new List<string>();

    for (int i = 0; i < oDataReader.FieldCount; i++)
    {
        string tmpColumnName = oDataReader.GetName(i);
        columnNames.Add(tmpColumnName);
    }

    builder.Append(string.Join(",", columnNames.ToArray())).Append("\n");

    List<string> currentRow = new List<string>();

    while (oDataReader.Read())
    {
        ////base.WriteLog(oDataReader.FieldCount + "fieldcount");
        for (int i = 0; i < oDataReader.FieldCount; i++)
        {
            object item = oDataReader[i];
            currentRow.Add(item.ToString());
        }
    }

    //builder.Append(string.Join("\n", rows.ToArray())).Append("\n");  
    rows.Add(string.Join(",", currentRow.ToArray()));
    builder.Append(string.Join(",", rows.ToArray())).Append("\n");

    Response.Clear();
    Response.ContentType = "text/csv";
    Response.AddHeader("Content-Disposition", "attachment;filename=pretestscore.csv");
    Response.Write(builder.ToString());
    Response.End();
}

问题是当输出开始返回时,

while (oDataReader.Read())

函数返回值就像

281063,70,7091,85,TEST,200,test,NULL

如何从 table 中获取实际数据?

我的代码哪里出错了?

有什么建议吗?

可以直接写代码用逗号隔开for循环或while循环

你可以参考这段代码,你就会明白

string s;                
while (reader.Read())
{
    if(!String.IsNullOrEmpty(s)){
        s += ", ";
    }
    s += reader["name"].ToString();
}
protected void Write_CSV_From_Recordset2(SqlDataReader oDataReader)
    {
        string strCSV = string.Empty;

        for (int i = 0; i < oDataReader.FieldCount; i++)
        {
            string tmpColumnName = oDataReader.GetName(i);

            strCSV += tmpColumnName + ',';
        }

        strCSV += "\r\n";



        while (oDataReader.Read())
        {


            for (int i = 0; i < oDataReader.FieldCount; i++)
            {
                object item = oDataReader[i];

                strCSV += item.ToString().Replace(",", ";") + ',';

            }


            strCSV += "\r\n";

        }


        //Download the CSV file.
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment;filename=pretestscore.csv");
        Response.Charset = "";
        Response.ContentType = "application/text";
        Response.Output.Write(strCSV);
        Response.Flush();
        Response.End();


    }