1

「lnkupdate_click」というボタンがあります。基本的に、クリックすると「tbl_security」というテーブルにアクセスするだけで、そこからフィールド「pass」がランダムな 4 桁の数字で更新されます。フィールド「patrol」は 1 または true です。 .

以下に例を示します。

Code    Pass   Patrol
TES     1234        1
ASD     4321        1
MOR     6789        1
SAI     0959        1 

私が行き詰まっているのはこれです。ここからやりたいことは、データベースから更新された情報を電子メールで送信することだけです。基本的に、上記の表のすべての情報を含むメールを生成します。ただし、「foreach」ループの下に赤い線が表示され、このエラー メッセージが表示されます。

「'int' には 'GetEnumerator' のパブリック定義が含まれていないため、foreach ステートメントは 'int' 型の変数を操作できません」

私のコードは以下の通りです:

protected void lnkUpdate_Click(object sender, EventArgs e)
   {


        {
            string queryUpdateAllFields;
            string queryGetAllUpdatedField;
            StringBuilder sb = new StringBuilder();

            queryGetAllUpdatedField = @"update tbl_Security set
                                      Pass = round(rand(CAST(CAST(NEWID() AS VARBINARY(4)) AS SMALLINT))* 9000,0) + 1000
                                      WHERE Patrol = 1";

            queryGetAllUpdatedField = @"SELECT Code, Pass, Patrol 
                                        FROM tbl_Security
                                        WHERE Patrol = 1";

            var random = new Random();

            //queries to update and retrieve
            SqlHelper.ExecuteSqlNonQuery(queryUpdateAllFields);

            var results = SqlHelper.ExecuteSqlNonQuery(queryGetAllUpdatedField);


            //loop over the results and append to StringBuilder instance.
            sb.Append("Below are all the fields that have been updated: <br /><br />");

            foreach(var r in results)
            {
                sb.AppendLine("<hr />");
                sb.AppendLine("Code: " + r.Code + " Pass: " + r.Pass + " Patrol: " + r.Patrol); //for Patrol
            }   



       //Email showing all updated pass's with codes
            MailAddress to = new MailAddress("");
            MailAddress from = new MailAddress("");
            MailMessage message = new MailMessage(from, to);
            message.Subject = "Subject Line Here";
            message.Body = sb.ToString(); //attach StringBuilder - This will be built up of all the rows updated in the DataBase

         SmtpClient mailClient = new SmtpClient();
            mailClient.Port = 25;

            //finally send message here
            mailClient.Send(msg);

      }
  }
4

2 に答える 2

9

ExecuteSqlNonQueryintは、あなたが想定しているコレクションではないことを返します。

于 2012-12-20T16:40:56.420 に答える
0

試してください: ループを次のように変更します:for(int i= 0; i < results; i++)

于 2012-12-20T19:20:00.187 に答える