当前位置:编程学习 > 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();
    }
中的 return db.Rows[0]["_imageurl"].ToString();
提示“在位置 0 处没有任何行”
可是数据库中有写了_imageurl项的内容,那是哪里出错了
--------------------编程问答-------------------- try catch 一下 然后调试  看看db中有没有值 --------------------编程问答-------------------- 你确定查到记录了吗?把你的string sql生成的查询语句复制出来放在查询分析器里运行一下。 --------------------编程问答-------------------- 建议这样写:
string sql = string.format(" select _imageurl from proimage where _imageid='{0}'",str);

在返回的时候做一下判断
if(db != null && db.rows.count > 0)
{
return db.Rows[0]["_imageurl"].ToString();
}
--------------------编程问答-------------------- 断电调试 ,什么都可以看到,看到了 ,就清楚了 。这样看谁也看不出来什么 --------------------编程问答-------------------- 能力太差,try catch、断电调试都不会,能不能简单地帮我分析一下 --------------------编程问答--------------------
引用 5 楼 bsl_123 的回复:
能力太差,try catch、断电调试都不会,能不能简单地帮我分析一下

应该是你的查询语句没有查找到记录。能力差不应该差到连断点调试都不会,不会救百度谷歌搜索一下,多笨多差多没基础的人都学的会的。。。 --------------------编程问答-------------------- DataTable中没有东西 ! --------------------编程问答-------------------- 看样子楼主是接触VS没多久吧,连起码的调试都不会,建议先看看基础的东西

当光标在这句时,按F9,DataTable db = DbHelperSQL.Query(sql).Tables[0];
然后运行,就会跳到这行,当这行为黄色时,鼠标右键点击db,然后选择监视,然后可以看到db是否有数据 --------------------编程问答-------------------- 补充一下,当断点行为黄色时,按F10,再鼠标右键点击db,然后选择监视,然后可以看到db是否有数据 --------------------编程问答-------------------- LZ用的啥数据库?一般情况下,字段名以下划线开始好像是不支持的吧 --------------------编程问答-------------------- 如果是这个问题的话可以确定的告诉你是你查询语句没有返回记录
也就是这个查询满足条件的一条记录都没有,所以在ROWS[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();
//这里的db.Rows[0]["_imageurl"]没见过。。你换成数字试试?
  } --------------------编程问答-------------------- 这是个经典的入门问题........

这表示
string sql = " select _imageurl from proimage where _imageid='" + str + "'";
这行SQL语句没有查询出任何东西. --------------------编程问答-------------------- 一般在用对象的时候都要判断对象是否为空.

楼主问题可以加一句判断就可以

if( dt != null && dt.rows.cout > 0)
{
   ....
} --------------------编程问答-------------------- 不要急

慢慢来,

第一步先看数据库能不能查到数据

断点设置把光标指上代码行,按F9就可以了 --------------------编程问答-------------------- select _imageurl from proimage where _imageid='" + str + "'  sql语句拿到查询分析器下执行以下,应该是sql语句查出来没结果 --------------------编程问答-------------------- 可以确定搜索出来的记录中此字段无值,先判断下是否为空在做tostring处理 --------------------编程问答--------------------
引用楼主 bsl_123 的回复:
" select _imageurl from proimage where _imageid='" + str + "'";


两点要说:

1.使用参数化查询,防止sql注入。如果这个方法的参数不是用户输入的,也可以不用参数化,但是不推荐。
2._imageid在数据库中是varchar么?如果是char的话要确保空格被Trim掉,数据库中存储的要Trim,str这个参数也要Trim。如果_imageid是int,去掉sql语句中的单引号。

--------------------编程问答-------------------- --------------------编程问答-------------------- 这个不就是WHERE里面的str没有符合的么,怎么弄得这么复杂呵呵

--------------------编程问答-------------------- DataTable 你没有定义列的属性。什么都没定义,计算机怎么知道你查询出来的东西放哪里... --------------------编程问答-------------------- 数据库中写了未必你查询出来了。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,