我只是对如何处理这段代码感到难过,我只是想在我的插入客户表单上实现一个'无重复'的捕获,但它每次都只是通过我的if语句滑到else。这是来源。我也尝试了一个结果相同的.Equals :(
Protected Sub srcAllClients_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs) Handles srcAllClients.Inserting
'Establish Variables
Dim emailAddress As String
Dim srcUsers As SqlDataSource = New SqlDataSource()
srcUsers.ConnectionString = ConfigurationManager.ConnectionStrings("ISSD21ConnectionString").ConnectionString
Dim view As DataView
view = DirectCast(srcUsers.Select(DataSourceSelectArguments.Empty), DataView)
srcUsers.SelectCommand = "SELECT EmailAddress FROM ISSDClients"
srcUsers.DataSourceMode = SqlDataSourceMode.DataReader
Dim reader As IDataReader
reader = DirectCast(srcUsers.Select(DataSourceSelectArguments.Empty), IDataReader)
emailAddress = FormView1.FindControl("txtEmail").ToString
While reader.Read()
If reader("EmailAddress") = (emailAddress) Then
lblError.Text = "Your Email is NOT Unique!"
'this is where we cancel the update and return an error
Else
lblError.Text = "Your Email is Unique!"
'nothing needs to happen, maybe just tell them that it went through
End If
End While
reader.Close()
End Sub
答案 0 :(得分:4)
emailAddress = FormView1.FindControl("txtEmail").ToString
将返回字符串“System.Web.UI.WebControls.TextBox”。您没有访问保存文本值的控件的实际属性,您只是在控件本身上调用ToString()
。
试试这个:
Dim emailBox As TextBox = CType(FormView1.FindControl("txtEmail"), TextBox);
emailAddress = emailBox.Text
答案 1 :(得分:0)
除了Womp的回答......
在通过电子邮件记录运行的while循环中,一旦找到匹配的电子邮件并提醒用户,您需要突破循环。
if reader("EmailAddress") = (emailAddress) then
'1. Break from the Loop
End if
答案 2 :(得分:0)
我建议您将emailAddress
作为参数传递给SQL Server。
Select Count(EmailAddress) From ISSDClients
Where EmailAddress = @EmailAddress
使用ExecuteScalar
执行此语句并将结果转换为整数。如果结果为零,则表示您没问题,否则会显示错误。
这样做可以避免使用while循环,如果你的表有很多行,它应该快得多。
您还需要从“电子邮件文本”框中获取“文本”属性。
emailAddress = FormView1.FindControl("txtEmail").Text.ToString
答案 3 :(得分:0)
您可能需要查看String.Compare方法,这样可以更轻松地进行比较,而不考虑区分大小写和文化。它确实将空格视为字符串的一部分,因此您可能希望在调用字符串之前对其进行修剪,以帮助规范化。
例如,以下字符串将被视为相等:
var firstString = "some StrinG to Compare ";
var secondString = " somE string to COMPARE";
var equal = (String.Compare(firstString.Trim(), secondString.Trim(), StringComparison.InvariantCultureIgnoreCase) == 0);