DataReader是一个向前的只读的流!如果要重复使用那么要重新执行查询得到这个流.
他和以前的asp里的数据存取是一样的!他并没有在内存中建立一个缓冲区来存储数据!
他和以前的asp里的数据存取是一样的!他并没有在内存中建立一个缓冲区来存储数据!
解决方案 »
- 求各位高手帮忙解决一下这个IIS发布后的问题!
- asp.net如何统计button的单击次数
- 如何定义一个基于SQL数据库的站点地图自定义提供程序?
- 这样避免很频繁的访问量
- 万分火急,急救~~~~~~~~~ASP.NET网站管理工具问题
- 我用C#.net在设计一个主Web窗体时,想要实现将Web窗体分割成两个部分,第一个部分包含固定的菜单等内容,在客户端调用时不需要刷新。第二
- 怎样把某一目录下的文件(如E:\data\**.*)在IE中打开或下载?
- 水晶报表打印难题啊
- 大侠们救命啊
- weilin0378接分
- DropDownList的问题,急,加急!
- 在.aspx中,在<ASP:DATAGRID> </ASP:DATAGRID>之间可以再加<tr><td>之类的东西呢,这样做是不是没有意义呢?
你可以用可持续存在变量记录下你的点击次数在Button1_click中移动点击次数条记录,推荐用视图对象保存
add (!Page.IsPostback()) to avoid it , your second question .
是什么意思,要加入到什么地方?
如果只用DataReader我的这种想法可行吗,因为我只要读取不要回送数据,如何分次读取?
if(!Page.IsPostback())
{
操作数据库datareader
}
把SqlDataReader sqlda;定义成局部变量
在读取时 用 while (sqlda.Read()) { .....}
{
if(!Page.IsPostback())
{
your action , this can run once when page load
}
this code can run every time }
代码:using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using WebApplication1.db;
using WebApplication1.service;namespace WebApplication1
{
public class WebForm2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label lblQty1;
protected System.Web.UI.WebControls.Label lblPrice1;
protected System.Web.UI.WebControls.Label lblPage1;
protected System.Web.UI.HtmlControls.HtmlImage Img1;
protected System.Web.UI.WebControls.HyperLink linkCart1;
protected System.Web.UI.WebControls.Panel Panel1;
protected System.Web.UI.WebControls.Button Button1;
SqlDataReader sqlda; private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
SqlConnection sqlconn=null;
SqlDataReader sqlda;
string sqlstr;
sqlconn=sqlconnectdb.getConnection();
sqlstr="select * from goodsinfo ";
sqlconn.Open();
SqlCommand sqlcmd = new SqlCommand(sqlstr,sqlconn);
sqlda = sqlcmd.ExecuteReader(CommandBehavior.CloseConnection);
if(sqlda.Read())
{
if (@sqlda["goodsImagePath"].ToString()!="")
Img1.Src =@sqlda["goodsImagePath"].ToString();
else
Img1.Src =@"pic/noimage.gif";
lblPrice1.Text=@sqlda["goodsPrice"].ToString();
lblQty1.Text=@sqlda["goodsiDetails"].ToString();
lblPage1.Text=@sqlda["goodsName"].ToString();
linkCart1.ImageUrl=@"images/Shop1.gif";
linkCart1.NavigateUrl="WebForm_input.aspx";
}
else
{
Img1.Src ="";
lblPrice1.Text="";
lblQty1.Text="";
lblPage1.Text="";
linkCart1.ImageUrl="";
linkCart1.NavigateUrl="";
}
}
} private void Button1_Click(object sender, System.EventArgs e)
{
if(sqlda.Read())
{
if (@sqlda["goodsImagePath"].ToString()!="")
Img1.Src =@sqlda["goodsImagePath"].ToString();
else
Img1.Src =@"pic/noimage.gif";
lblPrice1.Text=@sqlda["goodsPrice"].ToString();
lblQty1.Text=@sqlda["goodsiDetails"].ToString();
lblPage1.Text=@sqlda["goodsName"].ToString();
linkCart1.ImageUrl=@"images/Shop1.gif";
linkCart1.NavigateUrl="WebForm_input.aspx";
}
else
{
Img1.Src ="";
lblPrice1.Text="";
lblQty1.Text="";
lblPage1.Text="";
linkCart1.ImageUrl="";
linkCart1.NavigateUrl="";
}
}
}
}
报错:
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 251: private void Button1_Click(object sender, System.EventArgs e)
行 252: {
行 253: if(sqlda.Read())----注就是这行报错!!!
行 254: {
行 255: if (@sqlda["goodsImagePath"].ToString()!="")
SqlDataReader sqlda;
string sqlstr;
sqlconn=sqlconnectdb.getConnection();
sqlstr="select * from goodsinfo ";
sqlconn.Open();
SqlCommand sqlcmd = new SqlCommand(sqlstr,sqlconn);
sqlda = sqlcmd.ExecuteReader(CommandBehavior.CloseConnection);
static SqlDataReader sqlda;
静态变量会记录上次的情况,而不会每次都重新初始化
只是在实际情况下并不适用,所有用户都共享这个sqlda,如果A用户前进到第二条记录,B用户按BOTTON 就会直接前进到第三条记录,看来用DataReader来完美的实现是有困难的.