【发布时间】:2010-11-18 12:11:07
【问题描述】:
我在 SQL Server 中有一个存储过程,它返回七个结果集。我想从 ASP.NET 调用这个存储过程,并在我的 ASP.NET 页面上用结果填充七个 GridView。我正在使用 SqlDataReader 来获取数据,但是我正在努力使用 C# 代码来填充 GridViews。
我创建了一个 DAL 类来获取数据,并且我在其中有这个方法:
public SqlDataReader CheckDataIntegrity()
{
SqlCommand cmd = new SqlCommand("cc.DataCheck");
return MultipleResults(cmd);
}
辅助方法 MultipleResults 如下所示:
private SqlDataReader MultipleResults(SqlCommand cmd)
{
SqlConnection con = new SqlConnection(_connectionString);
cmd.Connection = con;
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
con.Close();
return dr;
}
我正在尝试使用以下内容调用页面上的组件:
private void FillGridViews()
{
DBUtil DB = new DBUtil();
using (SqlDataReader dr = DB.CheckDataIntegrity())
{
if (dr.HasRows)
{
while (dr.Read())
{
GridView1.DataSource = dr;
GridView1.DataBind();
}
}
}
}
我确实在网上搜索过这个例子,但找不到任何东西。
你知道一个资源,或者有一个小例子可以分享吗?
谢谢。
【问题讨论】:
-
在你的 multipleResults 方法中,你应该用 using 语句包围你的 SqlConnection。
-
@Laraeu - 这没什么区别,我仍然得到
Invalid attempt to call HasRows when reader is closed. -
我在答案的 cmets 中看到了您遇到的问题。我会考虑更改 MultipleResults 的参数以接受 sqlconnection,这样您就可以有效地管理打开和关闭。
标签: c# asp.net multiple-resultsets