Foreach数据表没有得到最后一行

时间:2016-03-21 09:44:58

标签: c# .net

我有一个Windows控制台应用程序。在这个Windows控制台项目中,我将发送一封电子邮件。

这让我很困惑,因为当我从.exe文件执行它时,我无法获得最后一行发送电子邮件 - 但是如果我从Visual Studio调试它就可以工作。

我已经确定我创建的所有.dll都是Copy Local = True。但它仍然不起作用。

这是我的代码:

static void Main(string [] args)         {

        DataSet dtPending = db.GetDataSet("GET_REMINDER_BACKDATE", CommandType.StoredProcedure);
        DataTable ds = dtPending.Tables[0];

        System.Console.WriteLine("Start looking pending approval ....");
        System.Console.WriteLine();

        foreach (DataRow row in ds.Rows)
        {
            try
            {
                System.Console.WriteLine("  Process {0} ..", row["DestinationName"].ToString());

                db.AddParameter("RequestID", row["RequestID"].ToString());
                db.AddParameter("ServerUri", ConfigurationManager.AppSettings["MIS_url"]);
                DataSet result = db.GetDataSet("GET_EMAIL_DATA_REMINDER", CommandType.StoredProcedure);
                DataTable datas = result.Tables[0];

                foreach (DataRow data in datas.Rows)
                {                      Mail.Send(ConfigurationManager.AppSettings["mailSender"], row["DestinationEmail"].ToString(), "", data["EmailSubject"].ToString(), data["EmailContent"].ToString());
                }
                System.Console.WriteLine("  Insert to pending approval log");
                InserReminderBackdateLog(Guid.Parse(row["RequestID"].ToString()), row["RefferenceNo"].ToString(), row["EmployeeID"].ToString(), row["SBU"].ToString(), "1");
                System.Console.WriteLine();
            }
            catch (Exception ex)
            {
                //do nothing
                System.Console.WriteLine("  Error : {0}", ex.Message);
            }
        }
        System.Console.WriteLine("Finish ....");
        //System.Console.ReadKey();
    }

这是因为foreach还是应用程序本身?我在代码中找不到我的错误。

1 个答案:

答案 0 :(得分:0)

试试这个: 而不是使用数据表,使用

DataSet ds = new DataSet(yourSqlCommandHere);
SqlDataAdapter da = new SqlDataAdapter();
da.Fill(ds);

将你的foreach替换为

foreach(DataRow dr in ds.Tables[0].Rows)
{
    //Your code here.
}