我正在尝试按照这篇文章的主题完成一项看似简单的任务。
我使用的代码如下:
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但到目前为止没有运气。
你可以帮我修改一下这段代码吗?
由于