2017-04-10 91 views
0

我的方法丟失了什麼?它沒有返回數據表。DataTable不返回數據

public DataTable GetHotelReportData(int _ratpropid) { 

      var _connectionString = _isDevelopment ? CommonTypes.Dev : CommonTypes.Prod; 

      DataTable dt = new DataTable(); 
      dt.Clear(); 
      SqlConnection conn = new SqlConnection(_connectionString); 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand("ww.HotelRpt_spGenerateData2018", conn); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.AddWithValue("@RatPropId", _ratpropid); 
      SqlDataAdapter da = new SqlDataAdapter(); 

      try { 
       da.SelectCommand = cmd; 
       da.Fill(dt); 
      } 
      catch (Exception _ex) { 
       new ErrorLogging().Log(_ex); 
      } 
      finally { 
       conn.Close(); 
       da.Dispose(); 
       cmd.Dispose(); 
      } 
      return dt; 
     } 
+1

如果手動運行存儲過程,會發生什麼情況? – NicoRiff

+0

使用存儲過程時,可能需要填寫'DataSet',因爲可能有多個表返回。 –

+0

存儲過程運行得很好。在「return dt」的函數中,行,計數= 0並且沒有數據。我只是返回一個有許多行的表。 –

回答

1

嘗試切割出數據適配器並使用該命令。無需適配器,據我可以告訴大家:

public DataTable GetHotelReportData(int _ratpropid) { 

     var _connectionString = _isDevelopment ? CommonTypes.Dev : CommonTypes.Prod; 

     DataTable dt = new DataTable(); 
     dt.Clear(); 
     SqlConnection conn = new SqlConnection(_connectionString); 
     SqlCommand cmd = new SqlCommand("ww.HotelRpt_spGenerateData2018", conn); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@RatPropId", _ratpropid); 


     try { 
      conn.Open(); 
      dt.Load(cmd.ExecuteReader); 
      return dt; 
     } 
     catch (Exception _ex) { 
      new ErrorLogging().Log(_ex); 
     } 
     finally { 
      conn.Close(); 
      cmd.Dispose(); 
     } 

    } 

如果還是不行,請嘗試SSMS本地執行存儲過程(或其他DBMS),看看你得到任何結果出現。