此方法采用输入参数(电子邮件地址)。如果它存在于表中,则它返回值(email),如果不存在,则它不应返回任何值,但此方法始终保持返回相同的值(参数)。
我错过了什么吗?
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;
}
答案 0 :(得分:4)
看看你的代码:
return emailAddress;
这是无条件的。您根本不是使用您的emails
变量。你是如何期待这个工作的? (并不是说这可能是您的完整代码,因为您有try
块没有catch
或finally
...)
请注意,具有返回类型的方法不能“不返回任何值”。它永远不会返回(不好),抛出异常或返回值。这就是它所能做的一切。它可以返回一个空引用...是你想要它做什么?
答案 1 :(得分:1)
您将返回与参数传递的值相同的值。
findEmailSubscription(string emailAddress)
(..)
return emailAddress;
你应该做
return emails ;
答案 2 :(得分:0)
您始终返回emailAddress。您在方法体中执行的操作不会以任何方式更改retun值。如果要根据查询返回的内容返回内容,则需要检查查询结果并从那里构造返回值(如果找到则返回电子邮件地址,否则返回null)。
如果您想要原始结果集,您可以随时返回emails
答案 3 :(得分:0)
感谢Jon给了我极好的提示。我重新编写了可行的方法:
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);
}
}