private void chaxun_Click(object sender, System.EventArgs e)
{
Response.Redirect("SearchResult.aspx?PrdName="+this.key.Text.ToString());

}
以上是查询按钮开始将查询关键子作为参数传递到searchresult.aspx,searchresult.aspx的代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
if(Request.QueryString["PrdName"]!=null)
{
WebYw.Database db=new WebYw.Database();
DataSet ds=new DataSet();
ds=db.ExecuteSql("select * from Product where PrdName="+Request.QueryString["PrdName"].ToString());
DL2.DataSource=ds;
DL2.DataBind();
}
}
}
-------------------------------
错误是没有数据源?
这样可行吗?

解决方案 »

  1.   

    不知道什么叫做“没有数据源”?调试时,对于数据源的错误,应该Exception的InnerException才能找到,也就是在异常信息对象之外ado.net又封装了一层异常信息对象,所以你必须到内嵌的Exception中去找,直接察看最外层Exception你什么有价值的错误提示信息都看不到。对于SQL Server数据库,如果PrdName是某种字符型的字段,SQL应该写单引号:"select * from Product where PrdName='"+ 
      Request.QueryString["PrdName"].Replace("'","''")+ "'"首先对于等号右边的值前后要用单引号,同时值中的单引号要替换为两个单引号。如果是其它值类型,要首先转换为强类型的值,然后重新转换为字符串:"select * from Product where PrdNumber="+ Int.parse(Request.QueryString["PrdName"]).ToString()不要随便把外部传递过来字符串参数直接组合进SQL查询语句。或者,使用参数查询而不要拼接SQL语句。
      

  2.   

    另外,你应该把实际执行的SQL语句打印出来(在调试窗口或者命令窗口),然后复制到查询分析器里去寻找错误位置。