2010-06-03 2 views
4

У меня есть консольное приложение, которое извлекает данные из таблицы SQL в плоский файл. Как я могу получить каждый тип и длину столбца, а затем использовать длину каждого столбца для padright (length), чтобы получить пробелы в конце каждого поля. Вот что я имею прямо сейчас, что не включает эту функциональность.C# Как я могу получить каждый тип столбца и длину, а затем использовать длину для padright, чтобы получить пробелы в конце каждого поля.

Благодаря

{ 
       var destination = args[0]; 
       var command = string.Format("Select * from {0}", Validator.Check(args[1])); 
       var connectionstring = string.Format("Data Source={0}; Initial Catalog=dbname;Integrated Security=SSPI;", args[2]); 

      var helper = new SqlHelper(command, CommandType.Text, connectionstring); 

      using (StreamWriter writer = new StreamWriter(destination)) 
      using (IDataReader reader = helper.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
        Object[] values = new Object[reader.FieldCount]; 
        int fieldCount = reader.GetValues(values); 

        for (int i = 0; i < fieldCount; i++) 
         writer.Write(values[i].ToString().PadRight(513)); 

        writer.WriteLine(); 
       } 

       writer.Close(); 
      } 
+0

Почему бы не использовать значения [i] .ToString(). Длина? – Patko

+0

@Patko, потому что разные строки могут иметь разную длину, и он хочет прокладывать все строки последовательно, но не больше, чем ему действительно нужно? –

+0

@Cade Roux, конечно. Я не знаю, как я этого не видел. Должно быть, немного поспать. – Patko

ответ

3

Вы можете использовать метод DataReader's GetSchemaTable для извлечения информации о схеме столбца. This article содержит полную информацию о получении метаданных о полученных данных.

После того, как размер столбца можно добавить к полученным данным с помощью метода .