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

语法错误。 在查询表达式 'id not in (select Top 0 id from news order by id desc)' 中。

好心的大哥大姐帮帮小弟。
分页查询不知有什么问题,老提示那个。

语法错误。 在查询表达式 'id not in (select Top 0 id from news order by id desc)' 中。


源代码:
public partial class news : System.Web.UI.Page
{
    protected StringBuilder newss = new StringBuilder();
    protected StringBuilder daohang = new StringBuilder();
    protected void Page_Load(object sender, EventArgs e)
    {
        string pagesize = Request.QueryString["page"];
        int pagecount = 2;  //每页显示2条数据。

        //BindData();
        StringBuilder strhtm = new StringBuilder();
        DataTable dt = new DataTable();
        dt = Class.gd("select * from news order by id desc").Tables[0];
        int pagetotal = dt.Rows.Count / pagecount;  //页数=总条数除以每页显示的条数。
        pagetotal = pagetotal + 1; //页数
        int totals = dt.Rows.Count;   //定义总条数。
        if (pagesize == null || pagesize == "")
        {
            pagesize = "1";
        }
        //string sql = "select top " + pagecount + " id,title,convert(varchar(10),data,5) as data from news where id not in (select Top " + (Convert.ToInt32(pagesize) - 1) * pagecount + " id from news order by id desc) order by id desc";
        string sql = "select top " + pagecount + " * from news where id not in (select Top " + (Convert.ToInt32(pagesize) - 1) * pagecount + " id from news order by id desc) order by id desc";
        dt = Class.gd(sql).Tables[0];
        for (int i = 0; i < dt.Rows.Count; i++)
        {

            strhtm.Append("<li><a href=\"news_view.aspx?nid=" + dt.Rows[i]["id"].ToString() + " \" target=\"_parent\">" + dt.Rows[i]["title"].ToString() + "</a></li>");

        }

        strhtm.Append("共" + totals + "条数码,共" + pagetotal + "页,<span color='#ff0000'>" + pagesize + "</span>/" + pagetotal + ",");
        int ps = Convert.ToInt32(pagesize);
        if (ps > 1)
        {
            strhtm.Append("<a href=\"news.aspx?page=" + (ps - 1) + "\">上一页</a>,<a href=\"news.aspx?page=" + ps + "\">首页</a>");
        }
        else
        {
            strhtm.Append("首页,上一页,");
        }
        if (Convert.ToInt32(pagesize) < pagetotal)
        {
            strhtm.Append("<a href=\"news.aspx?page=" + (ps + 1) + "\">下一页</a>,<a href=\"news.aspx?page=" + pagetotal + "\">尾页</a>");
        }
        else
        {
            strhtm.Append("下一页,尾页");
        }
        newss.Append(strhtm.ToString());
} --------------------编程问答-------------------- select Top 0 id from news order by id desc
你这句什么意思??????????? --------------------编程问答-------------------- 运行时浏览器提示的,代码里没那样写噢。。 --------------------编程问答-------------------- select Top 10 id from news order by id desc --------------------编程问答-------------------- 代码里没这样写啊,一运行,IE就提示的select Top 10 id from news order by id desc 这个 --------------------编程问答-------------------- access不能这样查询的  --------------------编程问答-------------------- 请问需要怎样写查询呢? --------------------编程问答-------------------- select Top " + (Convert.ToInt32(pagesize) - 1) 这个代码有错误,pagesize=1的时候就出错了。。判断下pagesize,大于1的情况下才执行。 --------------------编程问答--------------------  string sql = "select top " + pagecount + " * from news where id not in (select Top " + (Convert.ToInt32(pagesize) - 1) * pagecount + " id from news order by id desc) order by id desc";
===========
这个地方要对pagesize做一下判断:
string sql="select top " + pagecount + " * from news ";
if(pagesize>1)
{
sql += " where id not in (select Top " + (Convert.ToInt32(pagesize) - 1) * pagecount + " id from news order by id desc) ";
}
sql+=" order by id desc";
--------------------编程问答--------------------
引用 1 楼 foren_whb 的回复:
select Top 0 id from news order by id desc
你这句什么意思???????????

估计是这个
--------------------编程问答-------------------- 分页的Sql语句用top很浪费资源,建议你用ROW_NUMBER() 函数
例如:
select temp.* from (
select ROW_NUMBER() over(order by id desc) rand,  * from tableA
) temp where temp.rand between (@pageIndex-1)*@PageSize+1 and @pageIndex*@PageSize
其中@pageIndex是从1开始的。你可以在sql2005中随便找一张表验证一下 --------------------编程问答-------------------- select Top 0 id from news order by id desc
这个对吗,我记得好像是要正整数的吧 --------------------编程问答-------------------- 瑞瑞 这个问题和你那个一样啊 。。。。 --------------------编程问答-------------------- 谢谢大家。 --------------------编程问答-------------------- 分页为什么不用存储过程呢? --------------------编程问答-------------------- ACCESS库,不能用存储过程。 --------------------编程问答-------------------- string sql = "select top " + pagecount + " * from news where id not in (select Top " + (Convert.ToInt32(pagesize) - 1) * pagecount + " id from news order by id desc) order by id desc";

这一句  应该是页码大于1的时候用的

你应该加一个页码等于1的条件分支
if(pagesize==1)
string sql = "select top " + pagecount + " * from news ;
else
string sql = "select top " + pagecount + " * from news where id not in (select Top " + (Convert.ToInt32(pagesize) - 1) * pagecount + " id from news order by id desc) order by id desc";
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,