Вы делаете жизнь слишком сложной для себя, ваш код открыт для внедрения SQL, и ваши ресурсы не гарантированно будут утилизированы. К счастью, все это легко исправить.
В следующем коде используется оператор SQL Server EXISTS, чтобы вы могли легко определить, есть ли какие-либо записи в базе данных с запрошенным адресом электронной почты. Если они есть, возвращается 1, в противном случае возвращается 0, что означает, что вам не нужно проверять наличие нулей.
Поскольку мы знаем, что будет возвращено только одно значение, мы можем изменить выполнение команды для использования executetescalar.
Код также использует параметр в команде для предотвращения внедрения SQL.
И, наконец, мы обертываем наши одноразовые предметы, используя операторы, чтобы гарантировать, что они правильно утилизируются.
Вот модифицированный код:
Public Sub checkemail()
Using sqlCnn As New SqlConnection(connStr)
Dim sqlcheckemail As String = "IF EXISTS(select 1 FROM WEBUSER WHERE Email=@Email) SELECT 1 ELSE SELECT 0"
Using sqlCmd As New SqlCommand(sqlcheckemail, sqlCnn)
sqlCmd.Parameters.AddWithValue("@Email", TBEMail.Text)
sqlCnn.Open()
If CBool(sqlCmd.ExecuteScalar) Then
LabelGender.Text = "There is something"
'MsgBox("Unable to register because the E-mail address has already registered as a user, Please register using different Email address or contact administrator")
'Response.Redirect("~/Rnewuser.aspx")
Else
'MsgBox("u can register")
LabelGender.Text = "NULL"
End If
End Using
sqlCnn.Close()
End Using
End Sub