无法将 Oracle.DataAccess.Client.OracleParameterCollection 转换为 Oracle.DataAccess.Client.OracleParameter
Cannot convert Oracle.DataAccess.Client.OracleParameterCollection to Oracle.DataAccess.Client.OracleParameter
我正在使用 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)
然后我收到此消息错误:
Cannot convert a value of type ' Oracle.DataAccess.Client.OracleParameterCollection ' to ' Table 1 dimension ( s) Oracle.DataAccess.Client.OracleParameter '
我应该怎么做才能解决这个问题?
我相信,我知道您问题的答案。在这一行
ExecuteReader("T3B", myOracleCommand.CommandText.ToString, Text, myOracleCommand.Parameters)
您使用 myOracleCommand.Parameters
,类型为 OracleParameterCollection
,而 ExecuteReader
需要 OracleParameter
数组。
您需要做的是将此集合转换为数组并传递该数组。为此 OracleParameterCollection
有方法 CopyTo
。所以,这是微不足道的
Dim a(myOracleCommand.Parameters.Count - 1) As OracleParameter
myOracleCommand.Parameters.CopyTo(a, 0)
ExecuteReader("T3B", myOracleCommand.CommandText, Text, a)
注意:CommandText.ToString()
不需要ToString
,因为命令文本已经是字符串
我正在使用 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)
然后我收到此消息错误:
Cannot convert a value of type ' Oracle.DataAccess.Client.OracleParameterCollection ' to ' Table 1 dimension ( s) Oracle.DataAccess.Client.OracleParameter '
我应该怎么做才能解决这个问题?
我相信,我知道您问题的答案。在这一行
ExecuteReader("T3B", myOracleCommand.CommandText.ToString, Text, myOracleCommand.Parameters)
您使用 myOracleCommand.Parameters
,类型为 OracleParameterCollection
,而 ExecuteReader
需要 OracleParameter
数组。
您需要做的是将此集合转换为数组并传递该数组。为此 OracleParameterCollection
有方法 CopyTo
。所以,这是微不足道的
Dim a(myOracleCommand.Parameters.Count - 1) As OracleParameter
myOracleCommand.Parameters.CopyTo(a, 0)
ExecuteReader("T3B", myOracleCommand.CommandText, Text, a)
注意:CommandText.ToString()
不需要ToString
,因为命令文本已经是字符串