2010-02-04 34 views
0

我有一個基本的sql語句,它查找用戶並返回一條記錄,但是當我運行一段代碼時,說明if(myReader.Read())它返回false。我瀏覽了代碼並檢查了讀者對象,事實上它包含了一條記錄。下面是代碼。Oracle DataReader返回1行但Read方法返回false

SQL: SELECT USER_NAME,USER_PASSWORD,USER_STATE 來自用戶的 WHERE users.user_id = 123

System.Data.Common.DbCommand _cmd = this.GetCommand(conn, _dbf, sqlText, CommandType.Text); 
    System.Data.Common.DbConnection _cn = _cmd.Connection; 
    System.Data.Common.DbDataReader myReader = null; 

    _cn.Open(); 
    using(_cn) { 
     myReader = _cmd.ExecuteReader(); 
     if (myReader.Read()) { 
       <object gets built here with user data returned from sql> 
      } 
     } 
+0

這是否查詢返回的結果從sqlplus中或SQL Developer中運行時? – thecoop 2010-02-04 13:16:41

+0

是的,在蟾蜍中運行sql並返回結果。驗證連接字符串是指向正確的數據庫。 – TampaRich 2010-02-04 14:38:25

回答

1

嘗試:

if (myReader.HasRows) 
    while (myReader.Read()) 
    ..... 
+0

+1 - 我該怎麼做。 – 2010-02-04 14:34:16

+0

這就是我如何做到這一點,但它不是我的代碼庫來改變。只是研究爲什麼另一個開發人員代碼不起作用。可能讓他們改變它。 – TampaRich 2010-02-04 14:46:09