我正在学习asp.net2.0网络应用系统开发一书,下载里面第6章的范例,运行后出错,不知怎样解决,请各位帮忙,谢谢!(完整代码在源文件里,是关于投票管理的)
private void BindVoteListData()
{
Vote vote = new Vote();
SqlDataReader recv = vote.GetVotes(); ItemList.DataTextField = "Item";
ItemList.DataValueField = "VoteID";
ItemList.DataSource = recv;
ItemList.DataBind(); recv.Close();
}
错误是说recv.Close(); 未将对象引用设置到对象的实例。其中vote.GetVotes()代码如下:
public SqlDataReader GetVotes()
{
///定义类SQLHelper
SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper(); ///定义保存从数据库获取的结果的DataReader
SqlDataReader dr = null; try
{
///执行存储过程
sqlHelper.RunProc("Pr_GetVotes", out dr);
}
catch (Exception ex)
{
///抛出执行数据库异常
SystemError.CreateErrorLog(ex.Message);
throw new Exception(ex.Message, ex);
} ///返回从数据库获取的结果
return (dr);
}
Pr_GetVotes存储过程代码如下:
ALTER PROCEDURE Pr_GetVotesASSELECT
*
FROM
Votes
ORDER BY VoteID
private void BindVoteListData()
{
Vote vote = new Vote();
SqlDataReader recv = vote.GetVotes(); ItemList.DataTextField = "Item";
ItemList.DataValueField = "VoteID";
ItemList.DataSource = recv;
ItemList.DataBind(); recv.Close();
}
错误是说recv.Close(); 未将对象引用设置到对象的实例。其中vote.GetVotes()代码如下:
public SqlDataReader GetVotes()
{
///定义类SQLHelper
SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper(); ///定义保存从数据库获取的结果的DataReader
SqlDataReader dr = null; try
{
///执行存储过程
sqlHelper.RunProc("Pr_GetVotes", out dr);
}
catch (Exception ex)
{
///抛出执行数据库异常
SystemError.CreateErrorLog(ex.Message);
throw new Exception(ex.Message, ex);
} ///返回从数据库获取的结果
return (dr);
}
Pr_GetVotes存储过程代码如下:
ALTER PROCEDURE Pr_GetVotesASSELECT
*
FROM
Votes
ORDER BY VoteID
解决方案 »
- 请教:这句话什么意思?
- 字符串判断,有更简单、快速一点的方法吗?
- !!!!多个panel引发的血案!!!!!
- C#中把Button中的程序代码删除,运行的时候,代码仍然执行,请高手指点!
- C# 提示DataReader must be closed first 咋办呀
- 如何自己激活一个控件的事件?
- 送分快来抢:我自己编写了一个web自定义控件,如何为他添加类似button的onclick事件 ?
- 请教在.aspx中使用treeview,我将AutoPostBack设为False,又想让它在节点变换后,能触发事件,能行吗?应该如何做呢?
- 控件的问题?谢谢大家了!
- Help!!!!!!!!
- ??打开数据库程序就出错?????
- object对象不需要返回值吗
dr在哪里出了问题
用recv.reade() 读出数据存到集合中在绑定。
recv.Close(); 未将对象引用设置到对象的实例。
是因为recv是null
检查下 vote.GetVotes(); 这个方法