string strsql = string.Format("select top{0} * from News where id not in(select top {1} id from News where {2} order by id desc) and ({2}) order by id desc", PageSize, PageSize * (PageIndex - 1), strWhere);
        SqlConnection conn = new SqlConnection("Data source=127.0.0.1;initial catalog=class1;user id=sa;password= ");
        conn.Open();
        SqlDataAdapter sda = new SqlDataAdapter(strsql, conn);
        DataSet ds = new DataSet();
        sda.Fill(ds, "news");.net报错说在关键字from 和order 附近有错误!

解决方案 »

  1.   

    strWhere 这变数若是空值,整句 sql 不就错了吗?
      

  2.   

    哦!忘说了,这个附过值了,并且vs2005报错说在关键字from 和order 附近有错误!
      

  3.   

    断点调试...
    看看strsql 的值...
      

  4.   

    稍微调整:
    string strsql = string.Format("select top{0} * from News where (1 = 1) and id not in(select top {1} id from News where (1 = 1) {2} order by id desc) {2} order by id desc", PageSize, PageSize * (PageIndex - 1), strWhere);这样 strWhere = "" 时 sql 仍可执行,但传筛选条件必需以 "and (field1 = 'xxx') and (field2 = 'xxx')" 这样的格式...虽不完美但还堪用!
      

  5.   

    断点~~……这种SQL错误很好找的应该
      

  6.   

    可以调试中将SQL语句及参数的成型句放进SQL server中进行执行,这样排错就容易些。
      

  7.   

    设置断点,单步跟踪查看strWhere值
      

  8.   

    把最终的sql在sql server中运行一下就明白在哪里错了
      

  9.   

    断点调试...
    查看strsql的值   然后在数据库里面改好!
      

  10.   

    调试 看strsql  语句是什么 贴上来
      

  11.   

    在SQL的事件查看器中看看你的SQL语句是否有误
      

  12.   

    将赋值后sql语句放到查询分析器上看看
      

  13.   

    首先说,这样的条件累加语句,你应该扔进存储过程里,
    其次,你应该把你传完参数后生成的语句,发出来,而不是代买,(print总会吧)
    最后,只有当你把生成代码发出来,这里的估计用不到1分钟就可以找到原因
      

  14.   

    分页语句建议你用这个分页SQL语句     select * from (select  row_number() over(order by id) as num,* from books) as temp             where num between 10 and 21
      

  15.   

    断点查看,查看字符串的值,检查一下SQL语句就可以了。
      

  16.   

    应该是你的select top{0} * from 这里的问题
    应该在TOP后面加空格 select top {0} * from
    你看下下面这两句SQL
    select top1 * from sysobjects--报错,而且也是和你图片一样,提示from附近错
    select top 1 * from sysobjects
      

  17.   

    同志哥,你都断点运行到这里面了,干脆就把这一步也做了吧
    鼠标指向变量:strsql,然后它会浮出该变量的值,浮出后,鼠标稍往下移至该浮出方案,右键:复制值,然后把复制到的SQL语句,拿到数据库中执行一下(其实自己看看就是了),就知道错在哪里了。
      

  18.   

    你在  DataSet ds = new DataSet(); 这句设个断点 然后鼠标放在 上面一句的 strsql  这个变量上。。你就可以看的到这个变量值 可以将这个变量复制出来  放查询分析器里 就可以看的出自己语法错误了
      

  19.   

    试下这样看行不行:string strsql = string.Format("select top{0} * from News where {2} and id not in(select top {1} id from News where {2} order by id desc) order by id desc", PageSize, PageSize * (PageIndex - 1), strWhere);
      

  20.   

    将出错的sql语句放在查询分析器里试下。。
      

  21.   


    那就把sql语句放到查询分析器里面看下。