检查是否已将电子邮件添加到数据库

时间:2011-12-19 18:20:40

标签: c# asp.net

我正在编辑一个基本上是简报订阅表单的ASP表单。问题是,如果用户已经注册,我无法触发事件提醒我。

我想找到一种方法来检查表单是否存在我的数据库中的用户电子邮件地址。如果是这样,那么就说,"你已经注册了。你没有收到感谢信吗?点击此处再次接收电子邮件。"

目前,用户可以注册并自动获得谢谢表单,但不一定要告知他们是否已经注册。

编辑:很抱歉没有提到这个,但这个数据库是使用Microsoft的SQL Server管理的。是的,我使用这种方法存储值。如果我可以提供更多详细信息,请告诉我 - 我对数据库不是很熟悉。

3 个答案:

答案 0 :(得分:1)

伪代码中的

bool alreadyRegistered = (ReturnIntegerFromDatabase("select count(*) from table where email=\"emailAddress\"") > 0)
if(alreadyRegistered)
    alert();
else
    register();

我还应该提一下,因为你不熟悉数据库,所以你应该总是警惕sql注入并采取措施来防止它。

答案 1 :(得分:1)

好吧,我将以Isaac的方法为基础。您仍然需要检索电子邮件地址(如果它已经存在),以便您可以向他们发送警报,这将为您节省另一次数据库之旅。请考虑以下方法存根:

public void EmailAlert(string email) {  }

public void Register(string email, ...) { }

public string FindEmail(string email) 
{ 
    //query
    SELECT *            
    FROM Table
    WHERE Email = 'passed in email'

    //pseudo code
    if (email exists)
    {
        return email address;
    }
    return null; 
 } //returns null if none found

然后你的逻辑看起来如下:

var email = FindEmail(givenEmail);
if (email != null)
{
    EmailAlert(email);
}
else
{
    Register(email, ...);
}

如果你鄙视检查null,你可以根据自己的风格分成一块。这只是为了演示逻辑流程,而不是确切的实现细节。

答案 2 :(得分:0)

肯定有一个支持商店(数据库?)保存注册;您可以在注册时查询它,如果找到它,请相应地采取行动。

如果您没有有一个存储电子邮件地址的位置(即,您只是将电子邮件作为流程的一部分发送然后丢弃),那么您将不得不开始保存它们是为了促进您描述的功能。