将记录添加到数据库中并防止重复输入

时间:2014-12-31 11:41:34

标签: vb.net sql-server-2014-express

我正在尝试按照这篇文章的主题完成一项看似简单的任务。

我使用的代码如下:

Dim theQuery As String = "SELECT Email FROM AspNetNewsletters WHERE Email = @Email UNION ALL SELECT Email FROM AspNetUsers WHERE Email = @Email"
Dim cmd1 As New SqlCommand(theQuery, conn)

cmd1.Parameters.AddWithValue("@Email", newslettertxt.Text)
conn.Open()

Using reader As SqlDataReader = cmd1.ExecuteReader()
    If reader.HasRows Then
        ' Email already exists
        ErrorMessage.Visible = True
        FailureText.Text = "EMail already exists"
    Else
        ' Email does not exist, add them
        Dim insertQuery As String = "INSERT into [AspNetNewsletters] (Email, Approved) values (@Email, '@Approved')"
        Dim cmd As New SqlCommand(insertQuery, conn)
        cmd.Parameters.AddWithValue("@Email", newslettertxt.Text)
        cmd.Parameters.AddWithValue("@Approved", SqlDbType.Bit).Value = True

        cmd.ExecuteNonQuery()

        newsletterpanel.Visible = False
        success.Visible = True
   End If
End Using

conn.Close()

我实际上已在(Adding records in vb.net and Checking if records exist using elseif)的帖子中修改了一些代码,并且那里的人说它有效。

但是,当我使用它时,此代码会检查电子邮件是否已存在,是否显示正确的错误。

我遇到的问题是,实际上新记录(如果电子邮件不存在)没有添加,并且在我调试时提供了以下错误:

  

与此命令关联的datareader已打开。必须先关闭

我搜索了很多内容,以便了解如何“正确关闭”datareader但到目前为止没有运气。

你可以帮我修改一下这段代码吗?

由于

0 个答案:

没有答案