sb.Append("select top " + pageNum + "  * from Job ");
sb.Append(" where  ID  Not in( select top " +pageNum*currentPage+ " ID from Job )");经过验证 这个SQL语句的写法是不对的请高手指点 
给出正确的写法!

解决方案 »

  1.   

    自己给自己挖坑,很容易就让别人注入了
    要想看对不对,直接把拼接好的SQL语句放到查询分析器里面运行下就知道,或者把数据库跟踪打开看下
      

  2.   

    声明哈:access 数据库 用的
      

  3.   


    sb.Append("select top ").Append(pageNum).Append("  * from Job "); 
    sb.Append(" where  ID  Not in( select top ").Append(pageNum*currentPage).Append(" ID from Job)"); 
      

  4.   

    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 System.Text;
    public partial class jss_Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();        int pageNum = 1;        int currentPage = 5;        sb.Append("select top " + pageNum + "  * from Job ");
            sb.Append(" where  ID  Not in( select top " + pageNum * currentPage + " ID from Job )");        Response.Write(sb.ToString());      //select top 1 * from Job where ID Not in( select top 5 ID from Job )      //后面的ID号不止一个,所以要报错,除非处理一下,先将select top 5 ID from Job 的ID号
           //处理成字符串格式,比如'001','002','003',这样才可以查询。
        }
    }
      

  5.   

     sb.Append("select top").Append(pageNum).Append("  * from Job"); 
    sb.Append(" where  ID  Not in( select top").Append(pageNum*currentPage).Append(" ID from Job)");  5楼没有考虑嵌套查询内句查询出来为空,如果not in(条件)
    如果条件为空或查询的是:(top 0)
    则查询出来就不正确
      

  6.   

    pageNum * currentPage 可能为0????只要显示数据的页数,随便怎么选择 都不会是0
      

  7.   

    在SQL200写法是对的。
    access应该改成如下,access是要求很严格的int a=int.Parse(pageNum);
    int b=int.Parse(pageNum*currentPage);sb.Append("select top "+ a +"  * from Job "); 
    sb.Append(" where  ID  Not in( select top "+ b +" ID from Job )"); 
      

  8.   

    10楼的语句应该改成这样:int a=int.Parse(pageNum); 
    int b=int.Parse(pageNum*currentPage); sb.Append("select top ");
    sb.Append(a);
    sb.Append("  * from Job "); 
    sb.Append(" where  ID  Not in( select top ");
    sb.Append(b)
    sb.Append(" ID from Job )"); 
      

  9.   

    int a=int.Parse(pageNum); 
    int b=int.Parse(pageNum*currentPage); sb.Append("select top "); 
    sb.Append(a); 
    sb.Append("  * from Job "); 
    sb.Append(" where  ID  Not in( select top "); 
    sb.Append(b) 
    sb.Append(" ID from Job )"); 
      

  10.   

    试试这样的写法,后面加一个tbjob,生成为虚表。
    sb.Append("select top " + pageNum + "  * from Job "); 
    sb.Append(" where  ID  Not in( select top " +pageNum*currentPage+ " ID from Job ) tbjob"); 
      

  11.   


    正如 这个大哥说的 
    估计这个写法是 错误的不过 我换了个写法 int sum = Get_JobNum();
    int number = sum - pageNum * currentPage;
    sb.Append("SELECT TOP " + pageNum + " * FROM (SELECT TOP " + number + " * FROM [Job] ORDER BY ID DESC) ORDER BY ID ASC");呵呵
    谢谢各位的回复 
    分大家分了咯~ 也不多 
    再次感谢