`

分页语句(特殊字符替换)

    博客分类:
  • JAVA
阅读更多
/**
     * 生成取中间部分数据的sql语句, Oracle专用
     * @param sql String 带排序的原始sql语句
     * @param lowLimit int 起始行
     * @param highLimit int 截止行
     * @return String
     * @author Zhang zhongguang
     */
    public static String getOraLimitString(String sql, int lowLimit,
                                           int highLimit)
    {
        StringBuffer pagingSelect = new StringBuffer(sql.length() + 64);
        pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ");
        pagingSelect.append(sql);
        pagingSelect.append(" ) row_ where rownum <= ");
        pagingSelect.append(highLimit);
        pagingSelect.append(" ) where rownum_ >= ");
        pagingSelect.append(lowLimit);
        return pagingSelect.toString();
    }

    //select * from (select row_.*, rownum rownum_ from ( select * from 表名) row_ where rownum<=10) where rownum_>=1

    /**
     * 生成取中间部分数据的sql语句, MySQL专用
     * @param sql String 带排序的原始sql语句
     * @param lowLimit int 起始行
     * @param highLimit int 截止行
     * @return String
     * @author Zhang zhongguang
     */
    public static String getMySQLLimitString(String sql, int lowLimit,
                                             int highLimit)
    {
        StringBuffer pagingSelect = new StringBuffer(sql.length() + 16);
        pagingSelect.append(sql);
        pagingSelect.append(" limit ");
        pagingSelect.append(lowLimit);
        pagingSelect.append(", ");
        pagingSelect.append(highLimit);
        return pagingSelect.toString();
    }

   public static void main(String[] args) 
	{
		String miscId = "AAAs'%";
	        miscId=miscId.replaceAll("';", "';';");
	        miscId=miscId.replaceAll("_","[_]");
	        miscId=miscId.replaceAll("%","[%]");
	        miscId=miscId.replaceAll("'","''");
	        System.out.println("#####"+miscId);
	}

public class Page
{
	/**
	 * @param args
	 * @throws IOException
	 */
	public static void pager(HttpServletRequest request, JspWriter out)
	{
		String reqParam = request.getQueryString() == null ? "" : request.getQueryString();
		String url = request.getRequestURL() + "?";
		int pagesize = -1;
		int pageindex = -1;
		int totalcount = (Integer) request.getAttribute("totalcount");

		if (reqParam.indexOf("pagesize") == -1)
		{
			pagesize = 10;
		}
		else
		{
			try
			{
				pagesize = Integer.parseInt(request.getParameter("pagesize"));
			}
			catch (NumberFormatException e)
			{
				pagesize = 10;
			}
		}

		if (reqParam.indexOf("pageindex") == -1)
		{
			pageindex = 1;
		}
		else
		{
			try
			{
				pageindex = Integer.parseInt(request.getParameter("pageindex"));
			}
			catch (NumberFormatException e)
			{
				pageindex = 1;
			}
		}

		String result = "";
		if (totalcount > pagesize)
		{
			if (pageindex == 1)
			{
				result = "1 ";		
				for (int page = 2; (page <= (totalcount+pagesize-1)/pagesize) && (page <= 10); page++)
				{
					result = result + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=" + page + "\">[" + page + "]</a> ";
				}
				result = result + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=2" + "\">下一页</a> " + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=" + (totalcount+pagesize-1)/pagesize + "\">尾页</a> ";
			}
			else if (pageindex == (totalcount+pagesize-1)/pagesize)
			{
				result = result + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=1\">首页</a> " + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=" + (pageindex - 1) + "\">上一页</a> ";
				for (int page = Math.max((totalcount+pagesize-1)/pagesize - 10, 1); page <= ((totalcount+pagesize-1)/pagesize - 1); page++)
				{
					result = result + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=" + page + "\">[" + page + "]</a> ";
				}
				result = result + (totalcount+pagesize-1)/pagesize;
			}
			else
			{
				result = result + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=1\">首页</a> " + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=" + (pageindex - 1) + "\">上一页</a> ";
				int i = 0;
				for (int page = (int) Math.max(pageindex - 5, 1); page <= (pageindex - 1); page++)
				{
					result = result + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=" + page + "\">[" + page + "]</a> ";
					i = i + 1;
				}
				result = result + pageindex + " ";
				for (int page = pageindex + 1; (page <= (totalcount+pagesize-1)/pagesize) && (page <= (pageindex + 9 - i)); page++)
				{
					result = result + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=" + page + "\">[" + page + "]</a> ";
				}
				result = result + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=" + (pageindex + 1) + "\">下一页</a> " + "<a href=\"" + url + "pagesize=" + pagesize + "&pageindex=" + (totalcount+pagesize-1)/pagesize + "\">尾页</a> ";
			}
			result = result + "&nbsp;&nbsp;&nbsp;&nbsp;第 " + pageindex + "/ " + (totalcount+pagesize-1)/pagesize + "页 ";
		}
		try
		{
			out.print(result + "一共 " + totalcount + " 条数据&nbsp;&nbsp;");
		}
		catch (IOException e)
		{
					}
	}
	
	public static void main(String[] args)
	{
		System.out.println((14+10-1)/10);
	}
}
分享到:
评论

相关推荐

    SQL培训 :日期类型+ 常用函数、空值处理、分页语句+多表关联(自用)

    在SQL(Structured Query Language)中,日期类型和常用的函数、空值处理、分页语句以及多表关联是数据库操作的基础且重要的知识点。下面将详细阐述这些内容。 1. **日期类型** SQL中的日期时间类型包括DATE、TIME...

    asp 数字分页 仿百度分页 仿谷歌分页

    3. 数据库分页:利用SQL语句实现数据的分页查询。 4. HTML/CSS:构建前端界面,模拟百度和谷歌的分页样式。 5. 服务器端逻辑:处理用户请求,计算分页信息,生成分页链接。 这个项目不仅涉及到技术实施,还涵盖了...

    c# 读取数据库。实现分页显示数据

    这个过程涉及到多个知识点,包括数据库连接、查询语句、数据适配器、数据表以及分页逻辑。 首先,我们需要建立数据库连接。在C#中,我们通常使用`System.Data.SqlClient`命名空间下的`SqlConnection`类来创建与SQL ...

    .net50个常用方法简单华丽的分页控件功能大的分页控件 50个实用方法

    ///StringReplaceSpace()替换文本中的空格和换行 ///StringColor()改变字的颜色 ///StringNull()当对象是空的时候 转为空字符串 ///StringConvert()汉字转拼音 ///StringNumber()数字转换中文 ///...

    SQL语句拼接工具,简化SQL语句拼写代码

    这种工具通常具有模板化和参数化的特性,允许开发者定义查询模板,然后将变量替换为实际值,生成最终的SQL语句。这不仅减少了手动拼接字符串的错误,还提高了代码的可读性和可维护性。 描述中提到的“针对不确定的...

    SqlServer 分页存储过程以及代码调用

    请将`connectionString`替换为你的数据库连接字符串,`YourTableName`替换为实际的表名,`currentPage`替换为当前页码。 四、优化技巧 1. **索引优化**:对于大表,确保排序字段有合适的索引,以提高查询效率。 2....

    c#调用分页存储过程

    存储过程内部通常会包含如`SELECT * FROM YourTable OFFSET @StartRow ROWS FETCH NEXT @PageSize ROWS ONLY`这样的SQL语句,利用SQL Server的OFFSET/FETCH语法实现分页。 在处理大数据时,优化分页性能也至关重要...

    Gridview分页

    这里,`your_connection_string`应该替换为实际的数据库连接字符串,`YourTableName`替换为你的表名。 为了实现分页功能,我们需要处理GridView的`PageIndexChanging`事件。此事件会在用户点击分页按钮时触发。以下...

    php juqery无刷新分页

    2. **更新DOM**:在`success`回调函数中,接收到服务器返回的新数据后,使用jQuery选择器找到需要更新的DOM元素,将新数据插入或替换进去。这通常涉及HTML字符串的拼接和元素的动态操作。 3. **事件绑定**:确保...

    servlet实现分页

    这可以通过解析请求URL中的查询字符串或者从请求的POST数据中获取。例如,URL可能是`/list?page=3&itemsPerPage=10`,我们可以使用`request.getParameter("page")`和`request.getParameter("itemsPerPage")`来获取...

    asp.net c#使用min-max的高效分页方法

    需要注意的是,此代码示例使用的是Jet.OleDb数据库引擎(Access数据库),在实际生产环境中可能需要替换为适应其他数据库系统的连接字符串和适配器。此外,为了确保分页功能的健壮性,还需要考虑如何处理用户请求...

    两个分页存储过程的效率比较

    这个过程涉及到对字符串的处理,例如替换`desc`或`asc`,以及使用`charindex()`函数来定位和分割字符串。 对于非数值类型的排序列,如字符型,`p_page`存储过程会检查列的数据类型,以便正确处理排序。如果列类型为...

    ado.net通用分页代码

    在ADO.NET中执行这个查询的方式与上面的例子类似,只需替换SQL查询字符串即可。 总结来说,ADO.NET通用分页代码主要涉及如何构建合适的SQL查询以及在C#代码中执行和处理结果。通过合理地利用`Skip`和`Take`(或者`...

    DataGridView使用说明(带数据库分页显示)

    分页的关键在于限制返回的记录数,这通常通过`OFFSET`和`FETCH NEXT`语句实现。例如,每页显示20条记录,当前页为第3页: ```csharp int pageSize = 20; int currentPage = 3; int offset = (currentPage - 1) ...

    net实用类50超级实用方法赠分页分页控件强大的分页

    ///StringReplaceSpace()替换文本中的空格和换行 ///StringColor()改变字的颜色 ///StringNull()当对象是空的时候 转为空字符串 ///StringConvert()汉字转拼音 ///StringNumber()数字转换中文 ///String...

    PHP+Mysql留言发布(含数据库+用户输入+列表显示+分页显示+用户登录)

    `str_replace()`函数用于替换字符串中的特定字符,这里将换行符`\n`替换为` `,空格替换为`&nbsp;`。 5. **列表显示与分页** 为了显示留言列表,首先获取每页显示的数量`$pagesize`,默认为4。使用`mysql_query...

    asp.net c# 分页方法

    - 编写SQL查询语句,通常包含`SELECT`、`WHERE`、`OFFSET`和`FETCH NEXT`关键字来实现分页。`OFFSET`用来跳过一定数量的行,`FETCH NEXT`则用于获取特定数量的行。 - 使用`SqlCommand`执行查询,并通过`...

    ASP操作数据库分页,实现增 删 改 查

    sql = "SELECT * FROM TableName" '替换为你的表名 rs.Open sql, conn ``` 三、增(Create) 向数据库添加新记录,通常使用`INSERT INTO`语句。以下示例插入一条新的用户数据: ```vbscript sql = "INSERT INTO ...

    ssh 分页 代源码 简单易懂

    例如,如果查询字段是`name`,模糊查询的HQL可能是`from Entity where name like :keyword`,这里的`:keyword`是占位符,实际使用时会被用户输入的值替换,通配符 `%` 可以用来匹配任意字符。 总的来说,SSH框架下...

    net实用类50个常用方法升级版分页

    ///StringReplaceSpace()替换文本中的空格和换行 ///StringColor()改变字的颜色 ///StringNull()当对象是空的时候 转为空字符串 ///StringConvert()汉字转拼音 ///StringNumber()数字转换中文 ///String...

Global site tag (gtag.js) - Google Analytics