当前位置:编程学习 > C#/ASP.NET >>

在位置0处没有任何行

原来 protected string bd(string str)
    {
        string sql = " select _imageurl from proimage where _imageid='" + str + "'";
        DataTable db = DbHelperSQL.Query(sql).Tables[0];
        return db.Rows[0]["_imageurl"].ToString();
    }
提示:在位置0处没有任何行
后来百度后改成
 protected string bd(string str)
    {
        string sql = string.Format(" select _imageurl from proimage where _imageid='{0}'", str);
        DataTable db = DbHelperSQL.Query(sql).Tables[0];
        if (db != null && db.Rows.Count > 0)
        {
            return db.Rows[0]["_imageurl"].ToString();
        }
    }
还是出错:product.db(string):并非所有的代码路径都返回值
product是DAL中的一个类 --------------------编程问答-------------------- 你这个就是没有值啊

原来你的:
protected string bd(string str)
{
  string sql = " select _imageurl from proimage where _imageid='" + str + "'";
  //将 select _imageurl from proimage where _imageid='1001'这样的拿到数据库执行一下看是否有数据???还是str包含空格了,还是压根没有记录,如果没有的话,肯定报错了。
  DataTable db = DbHelperSQL.Query(sql).Tables[0];
  return db.Rows[0]["_imageurl"].ToString(); //如果db是null值的话,肯定报你的那个错误了
}
==========》
重要的一点,你的_imageid这个字段在数据库中是神马类型?? 数值型??or 字符型???
protected string bd(string str)
{
   string sql = " select _imageurl from proimage where _imageid='" + str.Trim() + "'";//字符型
   //string sql = " select _imageurl from proimage where _imageid=" + int.Parse(str.Trim());//数值型,str是字符串型数字的话
   DataTable db = DbHelperSQL.Query(sql).Tables[0];
   string url = "";
   if(db!=null)
   {
      url = db.Rows[0]["_imageurl"].ToString();
   }
   else
   {
      url= "..\images\nopicture.jpg";  //如果没有找到对应的图片的话,返回一个默认的图片
   }
   return url;
}
--------------------编程问答--------------------  if (db != null && db.Rows.Count > 0)
  {
   str=db.Rows[0]["_imageurl"].ToString();
  }
return str; --------------------编程问答-------------------- 对于protected string bd(string str)
{
  string sql = " select _imageurl from proimage where _imageid='" + str.Trim() + "'";//字符型
  //string sql = " select _imageurl from proimage where _imageid=" + int.Parse(str.Trim());//数值型,str是字符串型数字的话
  DataTable db = DbHelperSQL.Query(sql).Tables[0];
  string url = "";
  if(db!=null)
  {
  url = db.Rows[0]["_imageurl"].ToString();
  }
  else
  {
  url= "..\images\nopicture.jpg"; //如果没有找到对应的图片的话,返回一个默认的图片
  }
  return url;
}
还是出错,url = db.Rows[0]["_imageurl"].ToString();
在位置0处没有任何行
protected string bd(string str)
{
  //string sql = " select _imageurl from proimage where _imageid='" + str.Trim() + "'";//字符型
  string sql = " select _imageurl from proimage where _imageid=" + int.Parse(str.Trim());//数值型,str是字符串型数字的话
  DataTable db = DbHelperSQL.Query(sql).Tables[0];
  string url = "";
  if(db!=null)
  {
  url = db.Rows[0]["_imageurl"].ToString();
  }
  else
  {
  url= "..\images\nopicture.jpg"; //如果没有找到对应的图片的话,返回一个默认的图片
  }
  return url;
}
时也出错string sql = " select _imageurl from proimage where _imageid=" + int.Parse(str.Trim());输入字符串的格式不正确 --------------------编程问答--------------------
引用 3 楼 bsl_123 的回复:
对于protected string bd(string str)
{
  string sql = " select _imageurl from proimage where _imageid='" + str.Trim() + "'";//字符型
  //string sql = " select _imageurl from proimage where _imageid=" + ……

那你的变量str时一个数字字符串嘛?? --------------------编程问答-------------------- 是吧,在数据库中的_imageid的值是0001、0002
str是上面一个类中定义的string型
 public void info()
    {
        string name = "";
        if (Request.QueryString["title"] != null && Request.QueryString["title"] != "")
        {
            name = Request.QueryString["title"].ToString();
        }
        //string name = Request.QueryString["title"].ToString();
        string str = @"select product._id, product._imageid, procate._catename, 
                       product._title,product._localprice from product , procate where
                       product._cateid=procate._cateid and _title like '%" + name + "%' ";
        SqlDataReader sdr = Common.DbHelperSQL.ExecuteReader(str);
        
        if (sdr.Read())
        {
            DataSet ds = Common.DB.PagedataSet(str, AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize, "helpcate");
            DataList1.DataSource = ds.Tables[0];
            DataList1.DataBind();
        }
        else
        {

            Label1.Text = "没有您要搜索的商品!!!";

        }
        sdr.Close();
    } --------------------编程问答--------------------
引用 5 楼 bsl_123 的回复:
是吧,在数据库中的_imageid的值是0001、0002
str是上面一个类中定义的string型
 public void info()
    {
        string name = "";
        if (Request.QueryString["title"] != null && Request.QueryString["title"] !=……

打个断点,跟踪一下程序,很快就能发现问题的。 --------------------编程问答-------------------- 我不会跟踪程序啊,能不能简单说一下
--------------------编程问答--------------------
引用 7 楼 bsl_123 的回复:
我不会跟踪程序啊,能不能简单说一下

将光标定位在你搜索按钮事件中的第一行代码前面,然后按下F9,如果使用到Session等信息的话,需要设置一个启动页面,如Login.aspx,如果没有的话,直接按F5,启动调试,当点击按钮后,就会执行到断点设置处停止,然后你一次一次的按F11,逐语句执行,过程中,可以通过将鼠标移到变量上,可以观察变量的值,也可以查看监视窗口,输入变量值,跟踪该变量的值变化。 --------------------编程问答-------------------- 将光标定位在你搜索按钮事件中的第一行代码前面,然后按下F9
就去掉了断点,没有其它反应
额.........如果你现在有时间的话,能不能我把程序发给你帮我改一下 --------------------编程问答-------------------- 你的问题基本是这样的,DateTable 在if语句里面判断为空了

可以像下面这样写


public DataTable MyMothed(string str)
{
   DataTable tb=null;
   try
   {
      tb=.......;
    }
   return tb;
}



在你的代码里面 你判断如果tb的行数大于0,则返回,那等于0呢?参照函数的返回值类型,你仍然要返回一个表,只不过是空表而已;
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,