我在该网站和Google上进行了查看,但似乎找不到针对我要尝试的解决方案的好方法。
基本上,我有一个客户端服务器应用程序(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! }
}`
不幸的是,我真的是C#与SQL连接的新手。我需要有关如何将结果简单地以csv格式放入字符串的任何提示。列和字段可能会有所不同,因此我无法使用某些站点中所见的something [something]方法。我不确定我是否会被理解!
我真的很感谢有关此操作的任何提示/要点!
这是我用来将任何IDataReader转储到StreamWriter的方法。我通常是这样创建StreamSwriter的:new StreamWriter(Response.OutputStream)。我将输入中的所有双引号字符转换为单引号字符(也许不是处理此问题的最佳方法,但对我有用)。
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(); }