无法将Oracle.DataAccess.Client.OracleParameterCollection转换为Orac



我使用sql命令来存储命令文本和一些参数:

myOracleCommand = New OracleCommand
With myOracleCommand
    .CommandType = CommandType.Text
    .CommandText = "MY QUERY"
    .Parameters.Add(New OracleParameter("Test1", OracleDbType.Varchar2, "05", ParameterDirection.Input))
    .Parameters.Add(New OracleParameter("Test2", OracleDbType.Varchar2,   DBNull.Value, ParameterDirection.Input))
    .Parameters.Add(New OracleParameter("Test3", OracleDbType.Int32, DBNull.Value, ParameterDirection.Input))
    .CommandTimeout = 60
End With  
' But after running this :
ExecuteReader("T3B", myOracleCommand.CommandText.ToString, Text, myOracleCommand.Parameters) 

然后我得到这个消息错误:

无法将' Oracle.DataAccess.Client.OracleParameterCollection '类型的值转换为' Table 1 dimension (s) Oracle.DataAccess.Client.OracleParameter '

我该怎么做才能解决这个问题?

我相信我知道你的问题的答案。在这一行

ExecuteReader("T3B", myOracleCommand.CommandText.ToString, Text, myOracleCommand.Parameters) 

使用类型为OracleParameterCollectionmyOracleCommand.Parameters,而ExecuteReader期望类型为OracleParameter的数组。

你需要做的是将这个集合转换为数组并传递该数组。OracleParameterCollectionCopyTo方法。所以它是微不足道的

Dim a(myOracleCommand.Parameters.Count - 1) As OracleParameter
myOracleCommand.Parameters.CopyTo(a, 0)
ExecuteReader("T3B", myOracleCommand.CommandText, Text, a) 

注意:CommandText.ToString()中不需要ToString,因为命令文本已经是字符串

相关内容

  • 没有找到相关文章

最新更新