看看这个:
For Each info As FieldInfo In AssemblyInstance.GetType().GetFields(flags)
If info.FieldType.FullName = "System.Data.SqlClient.SqlDataAdapter" Then
da = CType(info.GetValue(AssemblyInstance), SqlDataAdapter)
End If
Next
该程序集是一个class.vb组件,其中包含以下代码行:
Me.SqlDeleteCommand1.CommandText = "DELETE FROM [CLASS] WHERE (([MAIN FACILITY USED] = @Original_MAIN_FACILITY_USED) " & _
"AND ([START DATE] = @Original_START_DATE) AND ([CentreId] = @Original_CentreId) " & _
"AND ([RowVer] = @Original_RowVer))"
Me.SqlDeleteCommand1.Connection = Me.SqlConnection1
Me.SqlDeleteCommand1.Parameters.AddRange(New System.Data.SqlClient.SqlParameter() {New System.Data.SqlClient.SqlParameter("@Original_MAIN_FACILITY_USED", System.Data.SqlDbType.NVarChar, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "MAIN FACILITY USED", System.Data.DataRowVersion.Original, Nothing), New System.Data.SqlClient.SqlParameter("@Original_START_DATE", System.Data.SqlDbType.DateTime, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "START DATE", System.Data.DataRowVersion.Original, Nothing), New System.Data.SqlClient.SqlParameter("@Original_CentreId", System.Data.SqlDbType.Int, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "CentreId", System.Data.DataRowVersion.Original, Nothing), New System.Data.SqlClient.SqlParameter("@Original_RowVer", System.Data.SqlDbType.Timestamp, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "RowVer", System.Data.DataRowVersion.Original, Nothing)})
我有两行代码来访问上述代码的部分内容。 第一个是:
da.SelectCommand.CommandText
我正确地获得了以下代码行:
"DELETE FROM [CLASS] WHERE (([MAIN FACILITY USED] = @Original_MAIN_FACILITY_USED) " & _
"AND ([START DATE] = @Original_START_DATE) AND ([CentreId] = @Original_CentreId) " & _
"AND ([RowVer] = @Original_RowVer))"
但问题是我还需要以下部分:
Me.SqlDeleteCommand1.Parameters.AddRange(New System.Data.SqlClient.SqlParameter() {New System.Data.SqlClient.SqlParameter("@Original_MAIN_FACILITY_USED", System.Data.SqlDbType.NVarChar, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "MAIN FACILITY USED", System.Data.DataRowVersion.Original, Nothing), New System.Data.SqlClient.SqlParameter("@Original_START_DATE", System.Data.SqlDbType.DateTime, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "START DATE", System.Data.DataRowVersion.Original, Nothing), New System.Data.SqlClient.SqlParameter("@Original_CentreId", System.Data.SqlDbType.Int, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "CentreId", System.Data.DataRowVersion.Original, Nothing), New System.Data.SqlClient.SqlParameter("@Original_RowVer", System.Data.SqlDbType.Timestamp, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "RowVer", System.Data.DataRowVersion.Original, Nothing)})
我如何获得上述代码?我试过da.SelectCommand.Parameters.ToString()但是没有用!伙计们还有其他解决方案吗?
答案 0 :(得分:0)
在这种情况下:见http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.aspx
可以使用以下命令检索该集合:da.SelectCommand.Parameters
您可以对此集合执行for循环,因为您可以使用索引或其名称索引每个参数(可以使用Count检索大小)。
更好的是,您可以使用linq扩展Cast将集合强制转换为可枚举的SqlParameter。
没有代码,因为我不知道VB ^^