以SqlDataReader的形式返回数据

时间:2019-05-29 03:50:19

标签: c# asp.net sql-server

我正在研究一个ASP.NET项目。我在SQL Server中有一个存储过程,该存储过程返回要在图表中显示的数据列表。此存储过程工作正常。我需要将返回数据作为SqlDataReader对象,以传递到Chart.DataBindTable中。

我这样调用存储过程:

string spName = "spFetchDetails";
DbCommand dbCommand = this.ObjDatabase.GetStoredProcCommand(spName);
this.ObjDatabase.AddInParameter(dbCommand, "@Company", DbType.Int32, Company);
this.ObjDatabase.AddInParameter(dbCommand, "@Title", DbType.String, Title);
this.ObjDatabase.AddInParameter(dbCommand, "@DateRange", DbType.String, DateRange);

DataTable dt = new DataTable();
dt = this.ObjDatabase.ExecuteDataSet(dbCommand).Tables[0];

这里代码以DataTable的形式返回存储过程的结果,我想调用ExecuteReader()方法,但是我不确定该怎么做。

Chart.DataBindTable(dt, "Example");

这是呈现图表的代码。

下面是我在另一个图表中的工作方式,并且它正在工作。

SqlCommand cmd = new SqlCommand(
  "Select ai.ItemDescription, ai.ItemRate, los.sellingprice, los.mrp from aitem ai inner join losShopItemShipmentDetail los on los.itemid = ai.itemid", con);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();

Chart.DataBindTable(rdr, "ItemDescription");

如何以这种方式调用存储过程?还是有办法将DataTable传递到DataBindTable函数?

public void DataBindTable (System.Collections.IEnumerable dataSource, string xField);

2 个答案:

答案 0 :(得分:1)

您可以尝试以下操作(示例代码以可视化方式使用):

Chart c = new Chart();
DataTable dt = new DataTable();
c.DataBindTable(dt.AsEnumerable());

答案 1 :(得分:0)

您可以按以下方式调用存储过程。

SqlCommand cmd = new SqlCommand("<SqlProcedureName>", con)
cmd.CommandType = CommandType.StoredProcedure;

但是代替将datareader分配给图表控件。寻找另一种仅设置数据的方法