5

我有一个控制台应用程序,可以将数据从 SQL 表中提取到平面文件中。如何获取每个列的类型和长度,然后使用每个列的长度来 padright(length) 来获取每个字段末尾的空格。这是我现在拥有的不包含此功能的内容。

谢谢

{
                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();
            }
4

2 回答 2

8

IDataReader 提供了一个 GetSchemaTable() 方法,该方法提供了一个 ColumnSize 属性(这因基础提供程序而异 - SQL Server 版本在这里)。

于 2010-06-03T18:30:47.553 回答
4

您可以使用该DataReader's GetSchemaTable方法检索列架构信息。本文包含有关获取有关检索数据的元数据的完整详细信息。

获得列大小后,您可以使用该String.PadRight方法将尾随字符添加到检索到的数据中。

于 2010-06-03T18:35:45.227 回答