Oracle使用sql语句分页显示数据,C#版

Oracle使用sql语句分页显示数据,C#版,两条C#语句,在ORacle数据库中实现分页可以使用rownum,这给分页的使用带来了极大的方便:
string osql = "select username , to_char(userid) from td_user";
string sql = "select a.* from (" + "select rownum my_rownum,my_table.* from " + "(" + osql + ") my_table where rownum<('" + (page * 50).ToString() + "'+1) ) a where my_rownum>('" + (page * 50).ToString() + "'-50)";

其中,常数50:每页的行数,page:当前页码

完整代码如下:

//数据的显示及分页,返回完整的html table流

private string Flow(int page)
  {
   //从配置文件获取数据库连接串
    string dbconnstr = ConfigurationSettings.AppSettings["dbconnstr"];
    OracleConnection conn = new OracleConnection(dbconnstr);
    OracleCommand cmd = conn.CreateCommand();

    if (conn.State == ConnectionState.Closed)
    {
      conn.Open();
    }

    string osql = "select username , to_char(userid) from td_user";
    string sql = "select a.* from (" + "select rownum my_rownum,my_table.* from " + "(" + osql + ") my_table where rownum<('" + (page * 50).ToString() + "'+1) ) a where my_rownum>('" + (page * 50).ToString() + "'-50)";
    cmd.CommandText = sql;
    OracleDataReader odr = cmd.ExecuteReader();
    StringBuilder sbFlow = new StringBuilder();
    sbFlow.Append("<table cellpadding=\"1\" cellspacing=\"1\" style=\"border-spacing: 1; border-width: 2px; padding: 1; border-color: White\"> <tr style=\"color: #E7E7FF; background-color: #4A3C8C; border-width: 1px; height:15px; padding-bottom:0px; padding-top:0px;\"><td style=\"width:100px;\">用户名</td><td style=\"width:50px;\">用户ID</td></tr>");
    while (odr.Read())
    {
      //sbFlow.Append("<tr style=\"color: Black; background-color: #DEDFDE; height:15px;\">");
      sbFlow.Append("<tr>");
      //odr.GetInt32(0)的数据为my_rownum,行的序号
      sbFlow.Append("<td>" + odr.GetString(1) + "</td>");
      sbFlow.Append("<td>" + odr.GetString(2) + "</td>");
      sbFlow.Append("<td><a href=\"task.aspx?tk=info&id=" + odr.GetString(2) + "\">用户信息</a></td>");
      sbFlow.Append("</tr>");
    }
    sbFlow.Append("</table>");
  
    odr.Close();
    conn.Close();
    cmd.Dispose();
    conn.Dispose();
    return  sbFlow.ToString();
  }

//获取url链接

private string Paging(int page)
  {
    string dbconnstr = ConfigurationSettings.AppSettings["dbconnstr"];
    OracleConnection conn = new OracleConnection(dbconnstr);
    OracleCommand cmd = conn.CreateCommand();

    if (conn.State == ConnectionState.Closed)
    {
      conn.Open();
    }

    cmd.CommandText = "select count(*) from td_user";
    int cnt = Int32.Parse(cmd.ExecuteScalar().ToString());
    int pcnt = cnt / 50;
    pcnt = pcnt + 1;
    if (page > pcnt)
    {
      page = pcnt;
    }
    int p = pcnt;
    if (page + 10 < pcnt)
    {
      p = page + 9;
    }
    string url = "";
    for (int i = page; i <= p; i++)
    {
      url += "<a href=\"task.aspx?tk=info&p=" + i.ToString() + "\">[" + i.ToString() + "]</a> ";
    }
    string paging;
    if (page == 1)
    {
      paging = "<a href=\"task.aspx?tk=info&p=1\">[首页]</a> <a href=\"task.aspx?tk=info&p=1\">[上一页]</a> " + url + "<a href=\"task.aspx?tk=info&p=" + (page + 1).ToString() + "\">[下一页]</a> <a href=\"task.aspx?tk=info&p=" + pcnt.ToString() + "\">[末页]</a>";
    }
    else
    {
      paging = "<a href=\"task.aspx?tk=info&p=1\">[首页]</a> <a href=\"task.aspx?tk=info&p=" + (page - 1).ToString() + "\">[上一页]</a> " + url + "<a href=\"task.aspx?tk=info&p=" + (page + 1).ToString() + "\">[下一页]</a> <a href=\"task.aspx?tk=info&p=" + pcnt.ToString() + "\">[末页]</a>";
    }
    conn.Close();
    cmd.Dispose();
    conn.Dispose();
    return paging
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值