C#控制台应用程序在csv文件中调用存储过程和输出文件

时间:2015-04-23 17:04:01

标签: c# csv stored-procedures console output

我正在尝试用c#构建一个控制台应用程序,结果我想把它放到csv文件中。

当我执行代码时没有任何反应。当我尝试调试时,我很难确定可能发生的事情。

这是控制台代码

namespace ConsoleOutputFile
{
    class Program
    {
        static void Main(string[] args)
        {


            try
            {
                using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Connection"].ConnectionString))
                {
                    var outCsvFile = @"C:\test\result.csv";
                    SqlCommand sqlCmd = new SqlCommand();
                    sqlCmd.CommandType = CommandType.StoredProcedure;
                    sqlCmd.Connection = conn;
                    sqlCmd.CommandText = "ExportTasks";

                    conn.Open();

                    DataSet dsData = new DataSet();
                    DataTable dt = new DataTable();
                    SqlDataAdapter da = new SqlDataAdapter(sqlCmd);


                    File.WriteAllText(outCsvFile, dt.Columns[0].ToString());

                    da.Fill(dsData);
                    conn.Close();
                }

            }
            catch (Exception)
            {
            }
        }
    }
}

这是我的app.config文件

<?xml version="1.0"?>
<configuration>
    <startup> 

    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
  <connectionStrings>
    <add connectionString="Server=TestServer;database=test;user=sa;pwd=test" name="Connection"/>
  </connectionStrings>
</configuration>

3 个答案:

答案 0 :(得分:1)

您正在转储空数据表。在任何时候你都没有填充数据表(dt)。做这样的事情:

max(map(len, dict.values()))

快乐编码:)

答案 1 :(得分:0)

从这里开始:如果在try内部抛出异常,你会抓住它但不对它做任何事情。在那里放一些有助于调试的东西。例外有一个属性Message,因此您可以将Message写入控制台:

        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }

无论谁抛出异常,他们都可能会提供有用的信息。将其写入控制台将有助于您的工作。

接下来,在解决方案中添加断点。运行它时,调试器将在断点处停止。使用F10一次单步执行一行。这也可以帮助您找出问题所在。更多关于here

答案 2 :(得分:0)

您初始化但从不填充数据表。考虑使用DataReader执行查询,然后使用结果加载数据表

SqlDataReader dr = dalMgr.SqlCommand.ExecuteReader();
dt.Load(dr);

或者完全修改数据表

string output = dr["column_name"].ToString();