私のWebアプリケーションでは、、、およびを定義しRegex
ましMatch
たstr
。したがって、は他の文字列をとRegex
比較するために使用され、で見つかった一致を識別するために使用されます。私のコードでは、と比較するために3つの文字列が定義されています。データベースへの接続も定義されています。次のコードは定義を示しています。str
Match
textboxes
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
か、すべてのブロックを無視して次の条件(m2)に移動する場合は、true
Try
False
Try
2番目の条件をチェックしてから2番目のブロックを実行する
m2.success
場合、またはすべてのブロックを無視して次の条件(m3)に移動する場合は、true
Try
False
Try
同じことが言えます
m3.Success
したがって、これは、最初のブロックが最初のTry
ブロックに関連しておりif statement
(m1.Success)
、条件(m1)が真の場合にのみ実行する必要があることを意味します。m2とm3についても同じことが言えます。このようにして、ステートメントを動的に制御できます。それで
m1
=最初のTry
ブロックを実行します。
m2
=2番目Try
のブロックを実行します。
m3
=3番目Try
のブロックを実行します。
戻る条件は、そのブロックFalse
とともに無視されます。Try
これらの条件を動的に制御する方法についての提案や考えはありますか?