刚开始学习ASP.NET 基础还非常不扎实 照着 ASP.NET3.5网站开发实例教程 这本书的代码做
模仿最后一章实例开发的时候 出现了这样的问题 (用的是VS2010)1)在article.aspx.cs页面调试时,总是提示 未将对象引用设置到对象的实例,不能运行,但每次更改数据库后可以运行一次
2)在主页调试时,运行没有问题 似乎是出问题的语句,但不懂。。请问是怎么回事谢谢!
string strsql = "select * from article where articletype like '" + Request.Params["id"].ToString() + "'order by articleid desc";article.aspx.cs的代码using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GROUP.Manage;public partial class article1 : System.Web.UI.Page
{
BaseClass BaseClass1 = new BaseClass();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack) getGoods(); }
private void getGoods()
{
//获取数据
string strsql = "select * from article where articletype like '" + Request.Params["id"].ToString() + "'order by articleid desc";
DataTable dt = BaseClass1.ReadTable(strsql);
//实现分页
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = dt.DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = 12;
int CurPage = Convert.ToInt32(this.LabelPage.Text);
objPds.CurrentPageIndex = CurPage - 1;
if (objPds.CurrentPageIndex < 0)
{
objPds.CurrentPageIndex = 0;
} //只有一页时禁用上页、下页按钮
if (objPds.PageCount == 1)
{
LinkButtonPrev.Enabled = false;
LinkButtonNext.Enabled = false;
}
else//多页时
{
//为第一页时
if (CurPage == 1)
{
LinkButtonPrev.Enabled = false;
LinkButtonNext.Enabled = true;
}
//是最后一页时
if (CurPage == objPds.PageCount)
{
LinkButtonPrev.Enabled = true;
LinkButtonNext.Enabled = false;
}
} this.LabelTotalPage.Text = Convert.ToString(objPds.PageCount);
GridView1.DataSource = objPds;
GridView1.DataBind(); }
//首页
protected void LinkButtonFirst_Click(object sender, EventArgs e)
{
this.LabelPage.Text = "1";
getGoods();
}
//上一页
protected void LinkButtonPrev_Click(object sender, EventArgs e)
{
this.LabelPage.Text = Convert.ToString(int.Parse(this.LabelPage.Text) - 1);
getGoods();
}
//下一页
protected void LinkButtonNext_Click(object sender, EventArgs e)
{
this.LabelPage.Text = Convert.ToString(int.Parse(this.LabelPage.Text) + 1); ;
getGoods();
}
//末页
protected void LinkButtonLast_Click(object sender, EventArgs e)
{
this.LabelPage.Text = this.LabelTotalPage.Text;
getGoods();
}
}操作数据库的公共类
using System;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;namespace GROUP.Manage
{
/// <summary>
/// BaseClass 的摘要说明。
/// </summary>
public class BaseClass: System.Web.UI.Page
{
String strConn;
public BaseClass()
{
strConn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
} //读写数据表--DataTable
public DataTable ReadTable(String strSql)
{
DataTable dt=new DataTable();//创建一个数据表dt
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化
Conn.Open();//打开连接
SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);//定义并初始化数据适配器
Cmd.Fill(dt); //将数据适配器中的数据填充到数据集dt中
Conn.Close();//关闭连接
return dt;
} //读写数据集--DataSet
public DataSet ReadDataSet(String strSql)
{
DataSet ds=new DataSet();//创建一个数据集ds
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化
Conn.Open();//打开连接
SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);//定义并初始化数据适配器
Cmd.Fill(ds); //将数据适配器中的数据填充到数据集ds中
Conn.Close();//关闭连接
return ds;
} public DataSet GetDataSet(String strSql, String tableName)
{
DataSet ds = new DataSet();//创建一个数据集ds
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化
Conn.Open();//打开连接
SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);//定义并初始化数据适配器
Cmd.Fill(ds, tableName); //将数据适配器中的数据填充到数据集ds中
Conn.Close();//关闭连接
return ds; } public SqlDataReader readrow(String sql)
{ SqlConnection Conn = new SqlConnection(strConn);
Conn.Open(); SqlCommand Comm = new SqlCommand(sql, Conn);
SqlDataReader Reader = Comm.ExecuteReader();
if (Reader.Read())
{
Comm.Dispose();
return Reader;
}
else
{
Comm.Dispose();
return null;
} } //读某一行中某一字段的值
public string Readstr(String strSql, int flag)
{
DataSet ds=new DataSet();//创建一个数据集ds
String str; SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化 Conn.Open();//打开连接 SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);//定义并初始化数据适配器
Cmd.Fill(ds); //将数据适配器中的数据填充到数据集ds中 str=ds.Tables[0].Rows[0].ItemArray[flag].ToString();
Conn.Close();//关闭连接
return str;
}
public void execsql(String strSql)
{
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化 SqlCommand Comm = new SqlCommand(strSql, Conn);
Conn.Open();//打开连接 Comm.ExecuteNonQuery();//执行命令
Conn.Close();//关闭连接 } }
}
模仿最后一章实例开发的时候 出现了这样的问题 (用的是VS2010)1)在article.aspx.cs页面调试时,总是提示 未将对象引用设置到对象的实例,不能运行,但每次更改数据库后可以运行一次
2)在主页调试时,运行没有问题 似乎是出问题的语句,但不懂。。请问是怎么回事谢谢!
string strsql = "select * from article where articletype like '" + Request.Params["id"].ToString() + "'order by articleid desc";article.aspx.cs的代码using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GROUP.Manage;public partial class article1 : System.Web.UI.Page
{
BaseClass BaseClass1 = new BaseClass();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack) getGoods(); }
private void getGoods()
{
//获取数据
string strsql = "select * from article where articletype like '" + Request.Params["id"].ToString() + "'order by articleid desc";
DataTable dt = BaseClass1.ReadTable(strsql);
//实现分页
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = dt.DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = 12;
int CurPage = Convert.ToInt32(this.LabelPage.Text);
objPds.CurrentPageIndex = CurPage - 1;
if (objPds.CurrentPageIndex < 0)
{
objPds.CurrentPageIndex = 0;
} //只有一页时禁用上页、下页按钮
if (objPds.PageCount == 1)
{
LinkButtonPrev.Enabled = false;
LinkButtonNext.Enabled = false;
}
else//多页时
{
//为第一页时
if (CurPage == 1)
{
LinkButtonPrev.Enabled = false;
LinkButtonNext.Enabled = true;
}
//是最后一页时
if (CurPage == objPds.PageCount)
{
LinkButtonPrev.Enabled = true;
LinkButtonNext.Enabled = false;
}
} this.LabelTotalPage.Text = Convert.ToString(objPds.PageCount);
GridView1.DataSource = objPds;
GridView1.DataBind(); }
//首页
protected void LinkButtonFirst_Click(object sender, EventArgs e)
{
this.LabelPage.Text = "1";
getGoods();
}
//上一页
protected void LinkButtonPrev_Click(object sender, EventArgs e)
{
this.LabelPage.Text = Convert.ToString(int.Parse(this.LabelPage.Text) - 1);
getGoods();
}
//下一页
protected void LinkButtonNext_Click(object sender, EventArgs e)
{
this.LabelPage.Text = Convert.ToString(int.Parse(this.LabelPage.Text) + 1); ;
getGoods();
}
//末页
protected void LinkButtonLast_Click(object sender, EventArgs e)
{
this.LabelPage.Text = this.LabelTotalPage.Text;
getGoods();
}
}操作数据库的公共类
using System;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;namespace GROUP.Manage
{
/// <summary>
/// BaseClass 的摘要说明。
/// </summary>
public class BaseClass: System.Web.UI.Page
{
String strConn;
public BaseClass()
{
strConn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
} //读写数据表--DataTable
public DataTable ReadTable(String strSql)
{
DataTable dt=new DataTable();//创建一个数据表dt
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化
Conn.Open();//打开连接
SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);//定义并初始化数据适配器
Cmd.Fill(dt); //将数据适配器中的数据填充到数据集dt中
Conn.Close();//关闭连接
return dt;
} //读写数据集--DataSet
public DataSet ReadDataSet(String strSql)
{
DataSet ds=new DataSet();//创建一个数据集ds
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化
Conn.Open();//打开连接
SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);//定义并初始化数据适配器
Cmd.Fill(ds); //将数据适配器中的数据填充到数据集ds中
Conn.Close();//关闭连接
return ds;
} public DataSet GetDataSet(String strSql, String tableName)
{
DataSet ds = new DataSet();//创建一个数据集ds
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化
Conn.Open();//打开连接
SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);//定义并初始化数据适配器
Cmd.Fill(ds, tableName); //将数据适配器中的数据填充到数据集ds中
Conn.Close();//关闭连接
return ds; } public SqlDataReader readrow(String sql)
{ SqlConnection Conn = new SqlConnection(strConn);
Conn.Open(); SqlCommand Comm = new SqlCommand(sql, Conn);
SqlDataReader Reader = Comm.ExecuteReader();
if (Reader.Read())
{
Comm.Dispose();
return Reader;
}
else
{
Comm.Dispose();
return null;
} } //读某一行中某一字段的值
public string Readstr(String strSql, int flag)
{
DataSet ds=new DataSet();//创建一个数据集ds
String str; SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化 Conn.Open();//打开连接 SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);//定义并初始化数据适配器
Cmd.Fill(ds); //将数据适配器中的数据填充到数据集ds中 str=ds.Tables[0].Rows[0].ItemArray[flag].ToString();
Conn.Close();//关闭连接
return str;
}
public void execsql(String strSql)
{
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化 SqlCommand Comm = new SqlCommand(strSql, Conn);
Conn.Open();//打开连接 Comm.ExecuteNonQuery();//执行命令
Conn.Close();//关闭连接 } }
}
把红色的ToString()去掉,可能是Params["id"]为null了。
最好先判断下Params["id"],然后再对其进行转换。Request.Params["id"]==null? Request["id"]:Request.Params["id"].toString()