在新闻系统中,经常有看了这篇新闻后有上一篇和下一篇是什么的链接,这是怎么在数据库中查找上一条记录和下一条记录的,假如我的数据库中ID号不是递增的呢,怎么查
,还有就是一些相关新闻,这样的模糊查询是怎么写的

解决方案 »

  1.   

    cs代码:        protected string constr;
            protected string Title;
            protected string fbTime;
            protected string content;
            protected string ID;
            protected string jigou;
            protected string s_id;//上一篇文章
             protected string s_title;
            protected string x_id;//下一篇文章
             protected string x_title;
            protected int wenz_type = 15;
            protected string sitename = rootpath.sitename;
            protected void Page_Load(object sender, EventArgs e)
            {
                ID = Request.QueryString["id"];
                addstring();
                setwenz();
            }        private void addstring()
            {
                constr = System.Configuration.ConfigurationSettings.AppSettings.Get("jdfbdata");
                DataTable dt = (new LOGIC.DataAccess(constr)).RunSqlDT("select title,fabutime,content,jigou from news where id =" + ID);
                if (dt.Rows.Count > 0)
                {
                    Title = dt.Rows[0]["title"].ToString();
                    fbTime = dt.Rows[0]["fabutime"].ToString();
                    content = dt.Rows[0]["content"].ToString();
                    jigou = dt.Rows[0]["jigou"].ToString();
                }
            }
            private void setwenz()
            {            if (wenz_type > 0)
                {
                    string sql = "select top 1 id,title from news where category='" + wenz_type.ToString() + "'and fabutime>'" + fbTime + "' order by fabutime";//上一篇sql
                    string sql2 = "select top 1 id,title from news where category='" + wenz_type.ToString() + "'and fabutime<'" + fbTime + "' order by fabutime desc";//下一篇sql                DataTable dt = (new LOGIC.DataAccess(constr)).RunSqlDT(sql);
                    if (dt.Rows.Count > 0)
                    {                    s_id = "gdfx.aspx?id=" + dt.Rows[0]["id"].ToString();
                        s_title = dt.Rows[0]["title"].ToString();
                    }
                    else
                    {
                        s_title = "无最新文章";
                        s_id = "#";
                    }
                    dt = (new LOGIC.DataAccess(constr)).RunSqlDT(sql2);
                    if (dt.Rows.Count > 0)
                    {                    x_id = "gdfx.aspx?id=" + dt.Rows[0]["id"].ToString();
                        x_title = dt.Rows[0]["title"].ToString();
                    }
                    else
                    {
                        x_title = "无文章";
                        x_id = "#";
                    }
                }        }aspx代码:....
    <body>
        <table background="../images/bg.gif" width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td height="15">
                </td>
            </tr>
            <tr>
                <td>
                    <table width="95%" align="center" border="1" bordercolordark="#FFFFFF" bordercolorlight="#898989"
                        cellspacing="0" cellpadding="0">
                        <tr>
                            <td>
                                <table align="center" width="100%" bgcolor="#ffffff" border="0" cellspacing="0" cellpadding="8">
                                    <tr>
                                        <td align="center" class="biaoti"><font size=3 color=red type="黑体">
                                            <%=Title%></font>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="center">
                                            <table width="90%" border="0" cellspacing="0" cellpadding="0">
                                                <tr>
                                                    <td bgcolor="#898989" height="1">
                                                    </td>
                                                </tr>
                                            </table>
                                        </td>
                                    </tr>
                                    <tr>
                                     <td valign=top height=530><%=content%>
                                                            </td>
                                    </tr>
                                  
                                    <tr>
                                        <td height="20">
                                            <span style="color: #ff0033">发布时间</span>:<%=fbTime%>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td style="height: 20px">
                                            <span style="color: #ff0033">发布单位</span>:<%=jigou%>
                                        </td>
                                    </tr>
                                               <tr>
                                       <td style="height: 30px" valign=bottom>
                                                                <span style="color: #ff0033">上一篇</span>:<a href="<%=s_id %>" target=_self><%=s_title%></a>
                                                            </td>
                                                        </tr>
                                                        <tr>
                                                            <td style="height: 30px" valign=bottom>
                                                                <span style="color: #ff0033">下一篇</span>:<a href="<%=x_id %>" target=_self><%=x_title%></a>
                                                            </td>
                                                        </tr>
                                      <tr>
                                        <td align="center">
                                            <input type="button" value="关闭" onclick="window.close()">
                                        </td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td height="15">
                </td>
            </tr>
        </table>
    </body>
    ...希望对你有帮助!
      

  2.   

    怎么做分词搜索呢 
    ==
    这个不是我一两句话能说明白的,楼主google一下分词比较好
      

  3.   

    4楼是我的老师 我简单说下我的分页 希望对你有帮助create proc Paging
    (
    @beginid int,
    @endid int
    )
    as
    Declare @News table 
    (
    RowNumber int,
    NewsId int,
    Did int,
    NewsName varchar(100),
    [Time] varchar(40),
    Author varchar(20),
    ClickTime int,
    NewsDetails varchar(6000),
    NewsPictureUrl varchar(60),
    Oid int default(0)
    )
    insert into @news
    select Row_Number() over (order by news.newsid),
    NewsId,Did,NewsName,[Time],Author,ClickTime,NewsDetails,
    NewsPictureUrl,Oid from news where did=1
    select rownumber,newsid,Time, case when len(newsname)<18 then newsname else  substring(newsname,0,18)+'...' end as newsname from @news where RowNumber>=@beginid and RowNumber<=@endid
      

  4.   

    在新闻系统中,经常有看了这篇新闻后有上一篇和下一篇是什么的链接,这是怎么在数据库中查找上一条记录和下一条记录的,假如我的数据库中ID号不是递增的呢,怎么查
    ----------------------------------
    也可以为自增id,跟据id找最近的id也可以实现,直接用sql语句实现 还有就是一些相关新闻,这样的模糊查询是怎么写的
    ---------------------
    相关新闻我认为现在一般都是基于关键词和tag上的模糊匹配搜索,用的like% %等,现在感觉用全文的分词搜索估计比较少见,一般的网站吃不消
      

  5.   

    不管怎么样都要在SQL语句里加order by fabutime这样就可以按时间了,不过,读取时还是按主键ID来搜取,这个就简单了 ,只是SQL语句处理下就可以了!所以这个很简单的问题,楼主好好看看我上面的代码!这是我在项目里就是这样用的!要求的和你一样!希望能帮助你或是给你启发!
      

  6.   

    谢谢你的回复,不过我最想要的是分词搜索,因为<上一篇>,<下一篇>的问题一说我就知道怎么做了,不过结贴时你一定有分,谢谢你的回帖
      

  7.   

    分是无所谓的!最主要解决你的问题,我知道那种烦恼的问题没得到答案的煎熬!累!
    其实分词检索也是可以的,不过最好是检索完选择性筛选,否则加入上万条,数据量大了会影响到速度和性能!所以我个人不提倡用like,最好可以在模糊中定唯一性!这样是最好的!
      

  8.   

     #region// 取出上一篇下一篇文章
        public void BindNextUp()
        {
            showID=Request.QueryString["show"];
            if(showID!=null)
            {
                DataTable dtnextup = new DataTable();
                string strNextUp = "select * from (select top 1 Postid,title from dbo.bbs_spaceposts where  postid>case when (select count(*) ";
                strNextUp += " from dbo.bbs_spaceposts where postid > " + showID + ") > 0 then " + showID + " else " + showID + " - 1 end  order by postid)as a union ";
                       strNextUp +="  select * from (select top 1 Postid,title from dbo.bbs_spaceposts where  postid< case when ";
                       strNextUp += " (select count(*) from dbo.bbs_spaceposts where postid < " + showID + ") > 0 then " + showID + " else " + showID + " + 1 end  order by postid desc) as b ";
                   sqls.Fill_DT(strNextUp,dtnextup);
                if(dtnextup.Rows.Count>0)
                {
                    this.up.Text = "<a href=SpaceLogView.aspx?show=" + dtnextup.Rows[0]["postid"].ToString() + ">" + dtnextup.Rows[0]["title"].ToString() + "</a>"; 
                    for (int i = 0; i < dtnextup.Rows.Count; i++)
                    {
                        int upid = Convert.ToInt32(dtnextup.Rows[i]["postid"].ToString());
                        //判断传递的ID大小来显示上一篇下一篇
                            if (upid == Convert.ToInt32(showID))//查询ID相等的
                            {  this.netx.Text = "<a href=SpaceLogView.aspx?show=" + dtnextup.Rows[i]["postid"].ToString() + ">" + dtnextup.Rows[i]["title"].ToString() + "</a>";
                            }
                            else if (upid < Convert.ToInt32(showID))//查出ID小于ShowID的
                            { this.up.Text = "<a href=SpaceLogView.aspx?show=" + dtnextup.Rows[i]["postid"].ToString() + ">" + dtnextup.Rows[i]["title"].ToString() + "</a>";
                            }
                            else
                            { this.netx.Text = "<a href=SpaceLogView.aspx?show=" + dtnextup.Rows[i]["postid"].ToString() + ">" + dtnextup.Rows[i]["title"].ToString() + "</a>";
                            }
                        }
                }
            }
        }
    <div  style="margin: 4px; border: 1px dashed #FF99FF;width:99%;background-color:#FF99FF;"  >
         <div style="float: left" class="tabletitle">&nbsp;&nbsp;  « 上一篇:【<asp:Label ID="up" runat="server"  ></asp:Label> 】</div> 
         <div align="right">下一篇:【<asp:Label ID="netx" runat="server"   ></asp:Label>  】&nbsp;&nbsp;</div>
     </div>
      

  9.   

    相关的判断都做了。例如只有ID 1,2那上一篇的ID还是1,下一篇的是2.一次类推。 
      

  10.   

    还有就是一些相关新闻,这样的模糊查询是怎么写的
    ==
    简单点做就是查询新闻标题Sql来匹配。 %匹配%