-1

このメソッドは、入力パラメーター (電子メール アドレス) を取ります。テーブルに存在する場合は値 (電子メール) を返し、存在しない場合は値を返すべきではありませんが、このメソッドは常に同じ値 (パラメーター) を返し続けます。

何か不足していますか?

private static string findEmailSubscription(string emailAddress)
    {
        try
        {
            //Fetch email Address
            using (DataAccess data = new DataAccess("Email"))
            {
                DynamicEntity[] emails = data.Adapter.Execute(
                    "SELECT EmailAddress FROM table " +
                    "WHERE EmailAddress=@EmailAddress; ",
                    ExecuteCommandType.Text,
                    new Object[,] {
                    {"EmailAddress", emailAddress ?? (object)DBNull.Value}
                });
            }

            return emailAddress;
        }
4

4 に答える 4

4

あなたのコードを見てください:

return emailAddress;

それは無条件です。変数をまったく使用していません。emailsこれがどのように機能することを期待していましたか?(noまたは...tryのないブロックがあるとすれば、とにかくこれが完全なコードになるわけではありません)catchfinally

戻り値の型を持つメソッドは「値を返さない」ことができないことに注意してください。戻ることはなく (良くない)、例外をスローしたり、値を返すこともできませんでした。できることはそれだけです。null参照を返す可能性があります...それはあなたがしたいことですか?

于 2012-08-17T13:06:40.010 に答える
1

parameter として渡したのと同じ値を返しています。

findEmailSubscription(string emailAddress)
(..)
return emailAddress;

やったほうがいい

return emails ;
于 2012-08-17T13:08:20.557 に答える
0

常にemailAddressを返します。メソッド本体で行うことによって、retun値が変更されることはありません。クエリが返すものに基づいて何かを返したい場合は、クエリの結果を確認し、そこから戻り値を作成する必要があります(つまり、見つかった場合はメールアドレスを返し、見つからない場合はnullを返します)。

生の結果セットが必要な場合は、いつでも戻ることができますemails

于 2012-08-17T13:14:36.110 に答える
0

すばらしいヒントをくれたジョンに感謝します。私はうまく動作するメソッドを書き直しました:

public string previousEmail   //Global variable - gets value from other source

public string FindEmailSubscription()
{
   try
   {
      string email = null;

      using (DataAccess data = new DataAccess())
      {            
          data.Execute(
               "SELECT EmailAddress FROM table " +
                "WHERE EmailAddress=@EmailAddress; ",
                new SqlParameter("@EmailAddress", previousEmail));

          if (data.Read())
              email = data.GetValue<string>(0);
      }
      return email;
   }
   catch (Exception ex)
   {
       MessageBox.Show(ex);
   }
}
于 2012-08-31T13:00:05.603 に答える