如何使用c#将包含逗号的sql列作为一个字段读取

时间:2013-02-21 16:23:06

标签: c# sqldatareader

我有一个sql08数据库表,我正在用C#阅读。其中一列(学院)包含一些数据,其中一些数据带有逗号:Miami, FLMiami, OH,有些则不包含:USC。我的输出.csv将包含行的逗号中的数据右移一列。我希望我的输出包含Miami,FL作为一个字段:|Miami,FL|而不是|Miami| |FL|

myWriter.WriteLine("Player, Position, Current Team, College");
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("Select * FROM FootballRoster", myConnection);

myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
    string myPlayer = myReader.GetString(0);
    string myPosition = myReader.GetString(1);
    string myCurTeam = myReader.GetString(2);
    string myCollege = myReader.GetString(3);

    myWriter.WriteLine("{0}, {1}, {2}, {3},", myPlayer, myPosition, myCurTeam, myCollege);
}

3 个答案:

答案 0 :(得分:3)

你可以在这里找到答案

Dealing with commas in a CSV file

基本上你需要逃避','字符。你可以使用''来做到这一点

此处您有CSV格式的规范

http://tools.ietf.org/html/rfc4180

答案 1 :(得分:2)

尝试将值放在双引号中:

myWriter.WriteLine("\"{0}\", \"{1}\", \"{2}\", \"{3}\",", myPlayer, myPosition, myCurTeam, myCollege);

答案 2 :(得分:1)

通常在.CSV中,如果字符串包含逗号,则用双引号将字段包装。

所以迈阿密,佛罗里达州成为“迈阿密,FL”,在.CSV文件中。

所以你可以做点像......

string myCollege = "";

if(myReader.GetString(3).Contains(","))
 {
    myCollege = "\"" + myReader.GetString(3) + "\"";
 }
else
 {
    myCollege = myReader.GetString(3);
 }