oracle reader 返回 System.Data.OracleClient.OracleCommand 作为值
Posted
技术标签:
【中文标题】oracle reader 返回 System.Data.OracleClient.OracleCommand 作为值【英文标题】:oracle reader returning System.Data.OracleClient.OracleCommand as value 【发布时间】:2013-07-21 14:01:39 【问题描述】:我被这件事难住了。
我正在使用以下非常简单的代码:
con.ConnectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myservice)));User Id=myuser;Password=mypassword";
con.Open();
OracleCommand command = con.CreateCommand();
command.CommandText = "SELECT SRVID FROM mytable WHERE USED=0 AND ROWNUM = 1";
OracleDataReader reader = command.ExecuteReader();
while (reader.Read())
readercheck = reader.GetString(0);
无论出于何种原因,reader.GetString(0) 都无法工作,因为它尝试访问的值是 System.Data.OracleClient.OracleCommand 类型的对象。
如果我使用 reader.ToString() 它实际返回“System.Data.OracleClient.OracleCommand”作为字符串!
我们将不胜感激!
【问题讨论】:
我不确定你是否在做假设。reader.toString()
返回这并不奇怪。目前尚不清楚您为什么认为这会导致您出现问题;您说它“因此不起作用”,但我没有看到链接。如果您显示您遇到的实际错误会有所帮助,因为“不起作用”不是很有描述性。 readerCheck
是如何声明的?
你说得对,我现在明白为什么 reader.toString() 会返回它,但问题仍然存在 :) 我现在不在现场,但会检查确切的错误明天。 readerCheck 在脚本开头被声明为公共字符串。
嗨,Alex - 我刚刚检查过,错误类型为“指定的强制转换无效”,源为 System.Data.OracleClient。
您确定错误来自您显示的代码,而不是之前的代码吗?显示整个错误堆栈以及错误中的行号如何与您的源代码相对应可能会有所帮助。
问题解决了!我试图提取的数据是 raw16 类型,因此不适合我试图输入的字符串参数。谢谢!
【参考方案1】:
我在寻找相同问题的解决方案时发现了这一点。 GetString(0) 不起作用,因为你会得到一个非法的转换错误,可能是因为阅读器中的第一个元素是十进制,它不会直接转换为字符串。
reader.item(1).tostring
或
reader.GetString(1)
【讨论】:
以上是关于oracle reader 返回 System.Data.OracleClient.OracleCommand 作为值的主要内容,如果未能解决你的问题,请参考以下文章