2010-08-19 71 views
1

我想在C#中簡單地從SQL數據庫中提取一組行並通過每一行運行我得到了一些代碼的結果,這些代碼會將每一行返回給我一次。如何使用SQL SELECT&循環遍歷每行結果的代碼?

下面的代碼應該工作,據我所知,並沒有返回任何錯誤,我很難過。你可以假設「ConnectionString」是有效的,並在網站上的很多地方使用,並且在那裏定義的查詢肯定應該從我的數據庫返回一行,因爲我通過運行它來驗證完全相同的行與SQL mgmt工作室的原始數據庫表達,我得到我期待的結果。

我所得到的只是在我嘗試進入循環之前發生的單個「我到了」電子郵件。

真的很感謝來自更聰明的人的任何見解,謝謝你們!

string query4 = "SELECT TOP(1)* FROM subscribers WHERE subscriber = 'test'"; 

string number; string pix; string watcheremail; string watcher; 

MailMessage message25 = new MailMessage(); 
message25.From = new MailAddress("[email protected]"); 
message25.To.Add(new MailAddress("myemailaddress")); 
message25.Body = "i got here"; 
SmtpClient client25 = new SmtpClient(); 
client25.Send(message25); 
using (SqlConnection connection = new SqlConnection("ConnectionString")) 
{ 
    connection.Open(); 
    using (SqlDataAdapter people = new SqlDataAdapter(query4, connection)) 
    { 
     DataTable people1 = new DataTable(); 
     people.Fill(people1); 

     foreach (DataRow row in people1.Rows) 
     { 
      watcher = row["subscriber"].ToString(); 
      MailMessage message252 = new MailMessage(); 
      message252.From = new MailAddress("[email protected]"); 
      message252.To.Add(new MailAddress("myemailaddress")); 
      message252.Body = "AND THEN I GOT HERE TOO - " + watcher; 
      SmtpClient client252 = new SmtpClient(); 
      client252.Send(message252); 
     } 
    } 
} 
+0

您是否試過在調試器中單步執行代碼? 此外 - 是否有任何異常被捕獲/記錄在任何地方? – 2010-08-19 23:06:19

+0

調試?你是通過循環來看看會發生什麼? – 2010-08-19 23:06:39

+0

我想我應該提到我是一個新手,對於這一切都非常新穎,並教我自己。我不知道如何運行調試器或類似的東西。循環中的電子郵件是我通過循環安排的方法,並且電子郵件永遠不會到達我,這意味着我沒有成功進入循環 – korben 2010-08-20 00:07:24

回答

2

以下是關於如何調試代碼的一些提示。請不要把它作爲一個完整的指南 - 有很多你可以通過閱讀正確的介紹來了解有關調試的知識。但是,這可能會讓你更進一步解決你現在遇到的特定問題。

  • 將光標移動到一個地方的代碼之前,你覺得可能是有問題的地方。 (在你的例子中,轉到第一行,從頂部開始。)
  • 按F9。該線將變成紅色。這被稱爲「斷點」:它告訴Visual Studio,當程序到達這一點時,您想停在這裏。
  • 按F5。這運行你的程序。在你的程序中做任何必要的事情,讓程序到達你有紅線(斷點)的地方。
  • 您會注意到Visual Studio突然出現在頂部。紅色的線現在變成了黃色。這是因爲它是當前正在執行的行。程序已經停在這裏,你現在可以從這一點開始研究它是如何運行的。
  • 按F10。你會注意到黃線會沿着一條命令行進。按F10多次,它將逐行通過代碼。
  • 在每個點上,您都可以將鼠標懸停在變量上。您會注意到它顯示了每個變量的值。
  • 如果您認爲發現了該錯誤並且需要編輯代碼,請按Shift + F5。這會殺死程序。然後您可以編輯您的代碼並再次按F5運行編輯後的版本。
  • 如果您不再需要斷點,只需在同一行再次按F9,它就會消失。

也可以看看在「調試」菜單和「窗口」子菜單,,而你是通過程序(即當有黃線的地方)步進。如果你喜歡試驗和玩,試試看,特別是「汽車」,「當地人」和「調用堆棧」。玩的開心!

0

這裏有一些建議,可以幫助...

  1. 你在一個控制檯應用程序運行的呢?如果是這樣,請用Console.WriteLine(「Some Text」)替換髮送的電子郵件,這可以幫助您在不使用調試器的情況下查看代碼的位置。

  2. 您已經從訂閱者中選擇首頁1 *您確定查詢返回結果嗎?

+0

1.不,我在網頁上運行這個ASPX 2.是的,我確定它是返回結果 – korben 2010-08-24 20:25:33

+0

既然你在一個web應用程序,你可以用我的建議,使用「Console.WriteLine」與「響應。寫「輸出調試信息。這是一個窮人的調試方式。 :) – ctorx 2010-08-25 15:26:01