2017-04-10 53 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),看看你得到任何结果出现。