我正在寻找一个简单的单行程序来完成SqlClient命名空间中的以下操作,以节省输入所有if-else语句的输入。假设:
Dim cmd As New SqlCommand("MyStoredProcName", MySqlConnection)
这就是我想要的一线:
If MyDataSet.Tables("MyTableName").Columns.Contains("MyColumnName") Then
cmd.Parameters.AddWithValue("@SQLParameter", True)
Else
cmd.Parameters.AddWithValue("@SQLParameter", False)
End If
任何人都有聪明可读的东西吗? C#也很好。
编辑:n8wrl的答案符合我的要求,但我应该更清楚:我正在寻找将更多数据类型添加到SQL参数的更通用的能力。 ie而不是“True或”False“它可能是StringA和StringB。If MyDataSet.Tables("MyTableName").Columns.Contains("MyColumnName") Then
cmd.Parameters.AddWithValue("@SQLParameter", "StringA")
Else
cmd.Parameters.AddWithValue("@SQLParameter", "StringB")
End If
答案 0 :(得分:1)
这应该有效:
cmd.Parameters.AddWithValue("@SQLParameter", MyDataSet.Tables("MyTableName").Columns.Contains("MyColumnName"))
您可能需要考虑原始版本可能更具可读性的事实。
<强>更新强>
如果您需要非布尔值,可以使用IIf
function,如下所示:
cmd.Parameters.AddWithValue("@SQLParameter", IIf(MyDataSet.Tables("MyTableName").Columns.Contains("MyColumnName"), "StringA", "StringB"))
答案 1 :(得分:0)
cmd.Parameters.AddWithValue("@SQLParameter", MyDataSet.Tables("MyTableName").Columns.Contains("MyColumnName"))