IndexOutOfRangeException SqlCommand .NET

时间:2018-06-27 14:30:26

标签: c# sql sql-server ado.net

我想创建一个应用程序,该应用程序将使用数据库中的数据创建一个.CSV文件,但是出现此错误:

  

System.IndexOutOfRangeException:'CT_Num'

当我删除时:

command.CommandText = "SELECT [Actionnaire Pal] FROM f_comptet";

dataReader["[Actionnaire Pal]"].ToString() 

我没有任何错误了。

class Program
{
    static void Main(string[] args)
    { 
        SqlConnection conn = DBUtils.GetDBConnection();

        conn.Open();

        SqlCommand command = conn.CreateCommand();
        command.CommandText = "SELECT CT_Num, [Actionnaire Pal] FROM F_COMPTET WHERE CG_NumPrinc = '4110000'";

        SqlDataReader dataReader = command.ExecuteReader();

        StreamWriter sw = new StreamWriter("C:\\facture.csv");

        while (dataReader.Read())
        {
            sw.WriteLine("FAAV" + ";" + "." + ";" + "02" + ";" + "JJ/MM/AAAA" + ";" + "A" + ";" + "11" + ";" + dataReader["CT_Num"].ToString() + dataReader["[Actionnaire Pal]"].ToString() + ";");
        }
            sw.Close();
    }
}

1 个答案:

答案 0 :(得分:1)

更改

dataReader["[Actionnaire Pal]"]

dataReader["Actionnaire Pal"]

[]只是告诉SQL从其中的所有内容中创建一个列名,而忽略空格(通常会考虑将其表示为语句下一部分的开始) 。它们实际上并不构成最终列名称的一部分。