2012-05-31 37 views
0

当我从SQLDeveloper运行查询时,它运行良好并检索所有记录。下面的代码在部门询问时检索除一个记录以外的所有记录。有没有缓存新创建的条目不会显示的各种查询?我正在使用Oracle DataAccess客户端,而不是已弃用的客户端。直接数据库连接显示所有记录,C#/ ASP删除单个记录

代码:

using Oracle.DataAccess.Client; 
using Oracle.DataAccess.Types; 
string currentDatabase = universalDll.getDB(); 
     List<string> majors = new List<string>(); 

     try 
     { 
      OracleConnection conn = new OracleConnection(); 

      conn.ConnectionString = ConfigurationManager.ConnectionStrings[currentDatabase].ConnectionString; 



      conn.Open(); 

      string sql = 
       "SELECT DISTINCT description,code " + 
       "FROM tablea a " + 
       "JOIN tableb b " + 
       "ON a.code = b.code "; 


      sql += "ORDER BY b.description"; 


      OracleCommand executeQuery = new OracleCommand(sql, conn); 
      executeQuery.CommandType = CommandType.Text; 

      OracleDataReader dr = executeQuery.ExecuteReader(); 

      while (dr.Read()) 
      { 
       ddlChooser.Items.Add(new ListItem(dr.GetString(0) + "(" + dr.GetString(1) + ")", dr.GetString(1))); 
      } 
+1

您确定您在C#代码和SQLDeveloper中运行相同的查询吗?当你在SQLDeveloper中运行它时,它是否与新记录的插入位于同一个会话中? –

+0

问题在于:Oracle SQL Developer有时需要您在其他用户可以在数据库中看到它们之前提交更改。尽管我可以看到我的更改已登录,但IIS服务器无法登录。一旦我提交更改,它工作正常。 – Geekender

+0

Oracle DB **总是需要一次提交才能在另一个会话中看到,这就是为什么我问你是否在同一会话中...... –

回答

0

问题在于:Oracle SQL Developer有时需要您在其他用户可以在数据库中看到它们之前提交更改。尽管我可以看到我的更改已登录,但IIS服务器无法登录。一旦我提交更改,它工作正常。

0

我在一个OracleDataReader第一记录,以便读取之前启动()进入到第一条记录上一家新开张的集小字看。

我会修改我的声明,因为您的最后一个Read()返回false并且不会添加到您的选择器中。

+0

但是OP不会在while循环内重新读取。更重要的是,我希望它会在解决方案中读取第一条记录两次。 –