C#SQLServer检索结果并以.csv格式放置

Eri*_*ika 9 c# sql sql-server client-server resultset

我看了一下网站和谷歌,但我似乎无法找到一个很好的解决方案,我正在尝试做什么.

基本上,我有一个客户端服务器应用程序(C#),我向服务器发送一个SQL select语句(连接到SQL Server 2008),并希望以CSV方式将结果返回给客户端.

到目前为止,我有以下内容:

if (sqlDataReader.HasRows)
{
    while(sqlDataReader.Read())
    {
       //not really sure what to put here and if the while should be there!
    }
Run Code Online (Sandbox Code Playgroud)

}

不幸的是,我真的很想将C#与SQL连接起来.我需要有关如何简单地将结果放在csv格式的字符串中的任何提示.列和字段可能会有所不同,所以我不能像在一些网站上看到的那样使用某种东西的方法.我不确定我是否可以理解了!

我非常感谢有关如何解决这个问题的任何提示/要点!

Ray*_*Ray 16

这是我用来将任何IDataReader转储到StreamWriter的方法.我通常像这样创建StreamSwriter : new StreamWriter(Response.OutputStream). 我将输入中的任何双引号字符转换为单引号字符(可能不是处理此问题的最佳方法,但它适用于我).

public static void createCsvFile(IDataReader reader, StreamWriter writer) {
    string Delimiter = "\"";
    string Separator = ",";

    // write header row
    for (int columnCounter = 0; columnCounter < reader.FieldCount; columnCounter++) {
        if (columnCounter > 0) {
            writer.Write(Separator);
        }
        writer.Write(Delimiter + reader.GetName(columnCounter) + Delimiter);
    }
    writer.WriteLine(string.Empty);

    // data loop
    while (reader.Read()) {
        // column loop
        for (int columnCounter = 0; columnCounter < reader.FieldCount; columnCounter++) {
            if (columnCounter > 0) {
                writer.Write(Separator);
            }
            writer.Write(Delimiter + reader.GetValue(columnCounter).ToString().Replace('"', '\'') + Delimiter);
        }   // end of column loop
        writer.WriteLine(string.Empty);
    }   // data loop

    writer.Flush();
}
Run Code Online (Sandbox Code Playgroud)