在我的网络应用程序中,我定义了Regex
,Match
和str
。因此,Regex
将用于比较其他字符串str
和Match
,以识别textboxes
中找到的任何匹配项。在我的代码中,我将3个字符串定义为matches
,以便与str
进行比较。还定义了与数据库的连接。以下代码显示了定义:
Dim r As Regex = New Regex(str2, RegexOptions.IgnoreCase)
Dim m1 As Match = r.Match(txt1.Text.ToString)
Dim m2 As Match = r.Match(txt2.Text.ToString)
Dim m3 As Match = r.Match(txt3.Text.ToString)
Dim myconn As New SqlConnection(ConnString)
我遇到问题的部分是我有很多if else
语句,我无法确定如何正确控制它们的方法如下:
If (m1.Success) AND (m2.Success) AND (m3.Success) Then
Try
myconn.Open()
Dim cmd = New SqlCommand("Update Std SET Title = @param ", myconn)
cmd.Parameters.Add("@param", Data.SqlDbType.Bit).Value = bit_True
cmd.ExecuteNonQuery()
cmd.Dispose()
myconn.Close()
Catch ex As Exception
Response.Write(ex)
End Try
ElseIf (m2.Success) Then
Try
myconn.Open()
Dim cmd = New SqlCommand("Update Teacher SET In_name = @param ", myconn)
cmd.Parameters.Add("@param", Data.SqlDbType.Bit).Value = bit_True
cmd.ExecuteNonQuery()
cmd.Dispose()
myconn.Close()
Catch ex As Exception
Response.Write(ex)
End Try
ElseIf (m3.Success) Then
Try
myconn.Open()
Dim cmd = New SqlCommand("Update Std SET std_name = @param ", myconn)
cmd.Parameters.Add("@param", Data.SqlDbType.Bit).Value = bit_True
cmd.ExecuteNonQuery()
cmd.Dispose()
myconn.Close()
Catch ex As Exception
Response.Write(ex)
End Try
End If
我期待的代码是:
检查第一个条件m1.success
如果true
然后执行第一个 Try
阻止,否则False
忽略所有{{1}阻止AND移动到下一个条件(m2),然后
检查第二个条件Try
如果m2.success
然后执行第二个 true
阻止,否则如果Try
忽略所有False
1}}阻止AND移动到下一个条件(m3),然后
Try
因此,这意味着第一个m3.Success
块与第一个Try
if statement
相关,并且只有在条件(m1)为真时才应执行。 m2和m3也是如此。通过这种方式,我将对语句进行动态控制。所以
(m1.Success)
=执行第一个m1
阻止。
Try
=执行第二个m2
阻止。
Try
=执行第三个m3
阻止。
任何返回Try
的条件都将与其False
块一起被忽略。
有关如何动态控制这些条件的任何建议或想法?
答案 0 :(得分:1)
也许只是这个?
If (m1.Success) Then
'[...]
End If
If (m2.Success) Then
'[...]
End If
If (m3.Success) Then
'[...]
End If
答案 1 :(得分:0)
您可以使用Enum作为标志来控制哪些块将通过使用AND语句进行检查来执行,并且枚举值将是正则表达式成功的结果。
另一个优化是在整个If之前/之后打开/关闭连接,以便稍微提高性能。
答案 2 :(得分:0)
它是一个Web应用程序,所以我假设您已将数据库连接放在连接池或连接管理器中。
定义执行以下操作的抽象类
您可以在子类中创建所需数量的模式/逻辑,并将它们的实例放在集合(数组或列表)中。收到用户请求后,运行所有实例并让他们进行匹配和数据库查询。