我查看了该网站和 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/