以下代码是想点击“第一条”按钮(Button1)从数据库中读出第一行记录(2个字段)显示在相应的TextBox中;点击
以下代码是想点击“第一条”按钮(Button1)从数据库中读出第一行记录(2个字段)显示在相应的TextBox中;点击“下一条”按钮(Button1)读取下一条记录pub...
以下代码是想点击“第一条”按钮(Button1)从数据库中读出第一行记录(2个字段)显示在相应的TextBox中;点击“下一条”按钮(Button1)读取下一条记录
public partial class _Default : System.Web.UI.Page
{
private SqlDataReader sdr;//sdr在此定义
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)//点击查看第一条记录
{
string sqlconnstr = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(sqlconnstr);
SqlCommand sqlcommand = new SqlCommand("select no,name from student", sqlconn);
sqlconn.Open();
SqlDataReader sdr = sqlcommand.ExecuteReader();
bool flag = sdr.Read();
if (flag)
{
TextBox1.Text =sdr["no"].ToString();
TextBox2.Text = sdr.GetString(1);
}
}
protected void Button2_Click(object sender, EventArgs e)//点击查看下一条记录
{
if (sdr.Read())
{
TextBox1.Text =sdr["no"].ToString();
TextBox2.Text = sdr.GetString(1);
}
}
}
但运行时点击Button2,错误停留在“ if (sdr.Read())”这一句,提示“未将对象引用设置到对象的实例”,请问问题出在哪?谢谢!
先谢过两位的热心回答。我原本是想把sdr定义在外部,在Button1和Button两个事件过程中通用.在Button1通过sdr.Read()读取第一条记录后,指针自动向后移,然后在Button2中就可以再通过一个sdr.Read()读取下一条记录了。这样想错了吗? 展开
public partial class _Default : System.Web.UI.Page
{
private SqlDataReader sdr;//sdr在此定义
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)//点击查看第一条记录
{
string sqlconnstr = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(sqlconnstr);
SqlCommand sqlcommand = new SqlCommand("select no,name from student", sqlconn);
sqlconn.Open();
SqlDataReader sdr = sqlcommand.ExecuteReader();
bool flag = sdr.Read();
if (flag)
{
TextBox1.Text =sdr["no"].ToString();
TextBox2.Text = sdr.GetString(1);
}
}
protected void Button2_Click(object sender, EventArgs e)//点击查看下一条记录
{
if (sdr.Read())
{
TextBox1.Text =sdr["no"].ToString();
TextBox2.Text = sdr.GetString(1);
}
}
}
但运行时点击Button2,错误停留在“ if (sdr.Read())”这一句,提示“未将对象引用设置到对象的实例”,请问问题出在哪?谢谢!
先谢过两位的热心回答。我原本是想把sdr定义在外部,在Button1和Button两个事件过程中通用.在Button1通过sdr.Read()读取第一条记录后,指针自动向后移,然后在Button2中就可以再通过一个sdr.Read()读取下一条记录了。这样想错了吗? 展开
3个回答
展开全部
你这个问题很明显
private SqlDataReader sdr;//sdr在此定义
你只是定义了一个sqldatareader类型的 ser但是你没有实例化它的代码啊
你的Button1_Click里面的是正确的,
SqlDataReader sdr = sqlcommand.ExecuteReader();
但是在这个Button2_Click中你没有实例化sdr啊,你的sdr是个空的
在说了你的button2想查看下一条记录,你查询数据库的代码呢??
你最好不要这样写,你最好先把数据查出来,放在一个dataset或者datatable里面,然后点击一次button根据索引去从dataset或者datatable中去查找你要的数据
private SqlDataReader sdr;//sdr在此定义
你只是定义了一个sqldatareader类型的 ser但是你没有实例化它的代码啊
你的Button1_Click里面的是正确的,
SqlDataReader sdr = sqlcommand.ExecuteReader();
但是在这个Button2_Click中你没有实例化sdr啊,你的sdr是个空的
在说了你的button2想查看下一条记录,你查询数据库的代码呢??
你最好不要这样写,你最好先把数据查出来,放在一个dataset或者datatable里面,然后点击一次button根据索引去从dataset或者datatable中去查找你要的数据
展开全部
button1点完之后要关闭连接,sdr.close;
然后button2里面需要重新打开。
然后button2里面需要重新打开。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这样想是没错的,如果你写的是WinForm程序是可以的
但是ASP中,每个页面都是一个新的这个页面类的实例
第一次点的时候是一个实例,第二次点又是新的一个了
所以出错了
但是ASP中,每个页面都是一个新的这个页面类的实例
第一次点的时候是一个实例,第二次点又是新的一个了
所以出错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询