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

标签 c# sql sql-server client-server resultset

我查看了该网站和 Google,但我似乎找不到适合我尝试做的事情的解决方案。

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

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

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

} `

不幸的是,我对连接 C# 和 SQL 真的很陌生。我需要任何关于如何简单地将结果放入 csv 格式的字符串的提示。列和字段可能不同,所以我不能使用我在一些网站上看到的 something[something] 方法。我不确定我是否被理解了!

如果有任何有关如何解决此问题的提示/要点,我将不胜感激!

最佳答案

这是我用来将任何 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();
}

关于C# SQLServer 检索结果并以 .csv 格式放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963719/

相关文章:

sql - case 语句中的 Hive 摘要函数

mysql - 在数据库中创建多大的名称字段?

SQL ANY 作为函数而不是运算符

C#:判断一个类是否已经初始化

c# - async await是否增加上下文切换

python - django postgresql 查询不工作

sql - A left outer join B 如何返回比 A 中更多的行?

C# AsyncEnumerable 运行/等待多个任务永远不会完成

c# - 为什么 C# 编译器使用隐式运算符返回的值的父类型来调用重载运算符

SQL Server 选择大多数列匹配的位置