2014-10-20 25 views
0

当我运行在SQL Developer中下面的SQL语句将返回2行:甲骨文DataReader没有返回任何行

SELECT * FROM TEST 

当我运行在同一connenction下面的代码中,datareader.HasRows会假:

 OracleCommand cmd = new OracleCommand(); 
     cmd.Connection = Connection; 
     cmd.CommandText = "SELECT * FROM TEST"; 
     OracleDataReader dr = cmd.ExecuteReader(); 
     if (dr.HasRows) 
     { 
      while (dr.Read()) 
      { 
       System.Windows.Forms.MessageBox.Show(dr.GetString(1)); 
      } 
     } 
     else 
     { 
      System.Windows.Forms.MessageBox.Show("no found rows"); 
     } 

为什么datareader不包含任何行?

其他信息:

  • 的Oracle 11g XE 64位安装。
  • 安装ODAC 11.2 64位。
  • 添加了对“oracle \ odp.net \ bin \ 4 \ Oracle.DataAccess.dll”的引用
  • 已添加:using Oracle.DataAccess.Client;
+0

'connection'应该打开吗? – 2014-10-20 12:43:50

+0

您确定该表格包含任何记录吗?你有没有例外? – Rik 2014-10-20 12:45:18

+0

尝试将“Test”表更改为“Dual”。如果'datareader.HasRows'变为'true',则“Test”为空,如果不是(即仍为'false'),则检查连接 – 2014-10-20 12:46:34

回答

4

因为我没有提交我创建的表和插入语句,数据不适用于第三方组件。

+0

花了几个小时找到解决方案!它有助于! – 2015-08-03 12:08:54

+0

谢谢,这为我做了诡计。 :) – PSSGCSim 2016-05-26 13:34:21