asp.net sql 分页,,优化 排序 及分页,
调用代码:
<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
private void bind()
{
string sqlwhere = "CreatorId=\'" + user.Id.ToString() + "\'";
Pager page = new Pager();
page.Procedure = "SPager";
page.PageIndex = pageindex;
page.SelectStr = "*";
page.PageSize = pagesize;
page.TableName = "Papers";
page.Pagekey = "Id";
page.Subkey = "Id";
page.PagekeyOrderType = ;
page.Order = "";
page.WhereCondition = sqlwhere;
DataTable dt = page.GetDatas(pageindex);
listpage.RecordCount = page.RecordCount;
this.r_scoreCount.DataSource = dt.DefaultView;
this.r_scoreCount.DataBind(); }
//分页控件绑定
protected void listpage_PageChanged(object sender, EventArgs e)
{
pageindex = listpage.CurrentPageIndex;
bind();
}
C#代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
//using DocumentTransfer.DAL; namespace ExamOnline.Utils
{
/// <summary>
/// 分页类,通过存储过程进行分页
/// </summary>
public class Pager
{
#region 参数
private int tableNo;
private int pageIndex = ;
private int pageSize = ;
private int rowCount;
private string procedure = "pager";
private string tableName = "";
private string whereCondition = "1=1";
private string selectStr = "*";
private string pagekey = "";
private string subkey = "";
private int pagekeyorderType = ;
private string order = "";
private string _FirstStr = "";
private string _PrevStr = "";
private string _NextStr = "";
private string _LastStr = "";
private string _TurnUrlStr = "";
private string _Options = "";
private string strCountww = ""; //共N条信息
private string strPageww = ""; //第N页/共N页
private string strTurnww; //跳转控件
private string pageindexName = "page";
private string _ConnString = SqlHelper.ConnectionString;
/// <summary>
/// 信息池连接字符串
/// </summary>
//public static string PoolConnString = "Data Source=10.10.101.79;Initial Catalog=CER_Master;Persist Security Info=True;User ID=sa;Password=123";
/////////////////////2011-05-27张立华修改.连接字符串都从web.config中获取.////////////////////
public static string PoolConnString =ConfigurationManager.AppSettings["SqlConnMaster"];
/// <summary>
/// 所要操作的存储过程名称,已有默认的分页存储过程
/// </summary>
public string Procedure
{
get
{
return procedure;
}
set
{
if (value == null || value.Length <= )
{
procedure = "pager";
}
else
{
procedure = value;
}
}
} /// <summary>
/// 当前所要显示的页面数
/// </summary>
public int PageIndex
{
get
{
return pageIndex;
}
set
{
pageIndex = value;
}
} /// <summary>
/// 总的页面数
/// </summary>
public int PageCount { get; set; } /// <summary>
/// 总行数
/// </summary>
public int RecordCount { get; set; } /// <summary>
/// 每页条数
/// </summary>
public int PageSize
{
get
{
return pageSize;
}
set
{
pageSize = value;
}
} /// <summary>
/// 表名称
/// </summary>
public string TableName
{
get
{
return tableName;
}
set
{
tableName = value;
}
} /// <summary>
/// 条件查询
/// </summary>
public string WhereCondition
{
get
{
return whereCondition;
}
set
{
whereCondition = value;
}
} /// <summary>
/// 查询目标(搜索目标),比如:AddTime AS 时间,ID AS 编号
/// </summary>
public string SelectStr
{
get
{
return selectStr;
}
set
{
selectStr = value;
}
}
/// <summary>
/// /
/// </summary>
public string Subkey
{
get
{
return subkey;
}
set
{
subkey = value;
}
} /// <summary>
/// 排序表达式
/// </summary>
public string Pagekey
{
get
{
return pagekey;
}
set
{
pagekey = value;
}
}
/// <summary>
/// 排序类型 true:asc false:desc
/// </summary>
public int PagekeyOrderType
{
get
{
return pagekeyorderType;
}
set
{
pagekeyorderType = value;
}
}
/// <summary>
///
/// </summary>
public string Order
{
get
{
return order;
}
set
{
order = value;
}
}
/// <summary>
/// 得到当前返回的数量
/// </summary>
public int RowCount
{
get
{
return rowCount;
}
}
/// <summary>
/// 首页 显示样式
/// </summary>
public string FirstStr
{
get { return _FirstStr; }
set { _FirstStr = value; }
} /// <summary>
/// 上一页 显示样式
/// </summary>
public string PrevStr
{
get { return _PrevStr; }
set { _PrevStr = value; }
} /// <summary>
/// 下一页 显示样式
/// </summary>
public string NextStr
{
get { return _NextStr; }
set { _NextStr = value; }
}
/// <summary>
/// 尾页 显示样式
/// </summary>
public string LastStr
{
get { return _LastStr; }
set { _LastStr = value; }
}
/// <summary>
/// 跳转 的url链接
/// </summary>
public string TurnUrlStr
{
get { return _TurnUrlStr; }
set { _TurnUrlStr = value; }
}
/// <summary>
/// 跳转的url链接的参数前面不要加问号和与号
/// </summary>
public string Options
{
get { return _Options; }
set { _Options = value; }
}
/// <summary>
/// 分页参数名称
/// </summary>
public string PageIndexName
{
get { return pageindexName; }
set { pageindexName = value; }
}
/// <summary>
/// 连接字符串
/// </summary>
public string ConnString
{
get { return _ConnString; }
set { _ConnString = value; }
}
#endregion 参数
/// <summary>
/// 分页查寻结果
/// </summary>
public DataTable GetDatas(int pageIndex)
{
this.pageIndex = pageIndex;
Pager pager = this;
DataTable returnTb = Pagination(ref pager).Tables[];
rowCount = returnTb.Rows.Count;
return returnTb;
} /// <summary>
/// 分页操作存储过程函数
/// </summary>
/// <param name="pager">Pager</param>
/// <returns>返回DataSet</returns>
private static DataSet Pagination(ref Pager pager)
{
SqlParameter[] par = new SqlParameter[];
par[] = new SqlParameter("@TableName",SqlDbType.NVarChar,);
par[].Value = pager.TableName;
par[] = new SqlParameter("@SelectStr", SqlDbType.NVarChar, );
par[].Value = pager.SelectStr;
par[] = new SqlParameter("@Pagekey", SqlDbType.NVarChar, );
par[].Value = pager.Pagekey;
par[] = new SqlParameter("@Subkey", SqlDbType.NVarChar, );
par[].Value = pager.Subkey;
par[] = new SqlParameter("@KeyOrderType", SqlDbType.Int);
par[].Value = pager.PagekeyOrderType; par[] = new SqlParameter("@pageSize",SqlDbType.Int);
par[].Value = pager.PageSize;
par[] = new SqlParameter("@PageIndex", SqlDbType.Int);
par[].Value = pager.pageIndex; par[] = new SqlParameter("@RecordCount",SqlDbType.Int);
par[].Direction = ParameterDirection.InputOutput;
par[] = new SqlParameter("@PageCount",SqlDbType.Int);
par[].Direction = ParameterDirection.InputOutput; par[] = new SqlParameter("@Order", SqlDbType.NVarChar, );
par[].Value = pager.Order; par[] = new SqlParameter("@WhereCondition", SqlDbType.NVarChar, );
par[].Value = pager.WhereCondition;
DataSet ds = SqlHelper.ExecuteDataset(pager.ConnString,CommandType.StoredProcedure,pager.Procedure,par);
pager.RecordCount = (int)par[].Value;
pager.PageCount = (int)par[].Value;
return ds;
}
#region 返回分页后的页码显示
/// <summary>
/// 返回分页后的页码显示
/// </summary>
/// <param name="bolCount">是否显示 共N条信息</param>
/// <param name="bolPage">是否显示 第N页/共N页</param>
/// <param name="bolFirst">是否显示 首页</param>
/// <param name="bolLast">是否显示 尾页</param>
/// <param name="bolTurn">是否显示 跳转控件</param>
/// <param name="IsChinese">是否 用中文显示</param>
/// <param name="intStyle">样式选择 1:字符 2:符号</param>
/// <param name="intShowNum">每页显示多少个数字</param>
/// <param name="isHtml">是否HTML分页</param>
/// <param name="exName">如果为HTML分页,要输入HTML后缀名</param>
/// <returns>返回分页后的页码显示</returns>
public string GetShowPageStr(bool bolCount, bool bolPage, bool bolFirst, bool bolLast, bool bolTurn, bool IsChinese, int intStyle, int intShowNum,bool isHtml,string exName)
{
string strPageShowww = "";
string _FirstStr2 = "";
string _PrevStr2 = "";
string _NextStr2 = "";
string _LastStr2 = ""; #region 公共处理
//总页数
PageCount = (RecordCount + pageSize - ) / pageSize; //超出最小页码
if (pageIndex < )
{
pageIndex = ;
} //超出最大页码
if (pageIndex > PageCount)
{
pageIndex = PageCount;
} if (IsChinese)//中文分页
{
//跳转
strTurnww = String.Format("<input value='{0}' id='txtPageGo' name='txtPageGo' type='text' style='width:35px;'><input name='btnGo' type='button' id='btnGo' value='跳转' onclick=\"javascript:window.location.href='{1}?Page=' + document.getElementById('txtPageGo').value + '&{2}'\">", pageIndex, _TurnUrlStr, Options);
//共N条信息
strCountww = String.Format("共 {0} 条信息", RecordCount);
//第N页/共N页
strPageww = String.Format("第{0}页/共{1}页", pageIndex, PageCount); //处理页码显示样式
if (intStyle == )
{
if (_FirstStr == "")
{
_FirstStr = "首页";
}
if (_PrevStr == "")
{
_PrevStr = "上一页";
}
if (_NextStr == "")
{
_NextStr = "下一页";
}
if (_LastStr == "")
{
_LastStr = "尾页";
}
}
else
{
if (_FirstStr == "")
{
_FirstStr = " << ";
}
if (_PrevStr == "")
{
_PrevStr = " < ";
}
if (_NextStr == "")
{
_NextStr = " > ";
}
if (_LastStr == "")
{
_LastStr = " >> ";
}
}
}
else//英文文分页
{
//跳转
strTurnww = String.Format("<input value='{0}' id='txtPageGo' name='txtPageGo' type='text' style='width:35px;'><input name='btnGo' type='button' id='btnGo' value='Goto' onclick=\"javascript:window.location.href='{1}?Page=' + document.getElementById('txtPageGo').value + '&{2}'\">", pageIndex, _TurnUrlStr, Options);
//共N条信息
strCountww = String.Format("Total {0} Infos", RecordCount);
//第N页/共N页
strPageww = String.Format(" {0}/{1} ", pageIndex, PageCount); //处理页码显示样式
if (intStyle == )
{
if (_FirstStr == "")
{
_FirstStr = " First ";
}
if (_PrevStr == "")
{
_PrevStr = " Previous ";
}
if (_NextStr == "")
{
_NextStr = " Next ";
}
if (_LastStr == "")
{
_LastStr = " Last ";
}
}
else
{
if (_FirstStr == "")
{
_FirstStr = " << ";
}
if (_PrevStr == "")
{
_PrevStr = " < ";
}
if (_NextStr == "")
{
_NextStr = " > ";
}
if (_LastStr == "")
{
_LastStr = " >> ";
}
}
}
#endregion //没有记录
if (RecordCount <= )
{
strPageShowww = strCountww;
}
//有记录
else
{
//只有一页
if (PageCount <= )
{
strPageShowww = String.Format("{0} {1}", strCountww, strPageww);
}
//不止一页
else
{
//页码链接处理
#region 页码链接处理
//第一页
if (pageIndex == )
{
_FirstStr2 = _FirstStr;
_PrevStr2 = _PrevStr;
}
else
{
if (isHtml)
{
_FirstStr2 = String.Format("<a href=\"{0}.{1}\">{2}</a>", _TurnUrlStr, exName, _FirstStr);
if (pageIndex - == )
{
_PrevStr2 = String.Format("<a href=\"{0}.{1}\">{2}</a>", _TurnUrlStr, exName, _PrevStr);
}
else
{
_PrevStr2 = String.Format("<a href=\"{0}_{1}.{2}\">{3}</a>", _TurnUrlStr, Convert.ToString(pageIndex - ), exName, _PrevStr);
}
}
else
{
_FirstStr2 = String.Format("<a href=\"{0}?{1}=1&{2}\">{3}</a>", _TurnUrlStr, pageindexName, _Options, _FirstStr);
_PrevStr2 = String.Format("<a href=\"{0}?{1}={2}&{3}\">{4}</a>", _TurnUrlStr, pageindexName, Convert.ToString(pageIndex - ), _Options, _PrevStr);
}
} //最后一页
if (pageIndex == PageCount)
{
_NextStr2 = _NextStr;
_LastStr2 = _LastStr;
}
else
{
if (isHtml)
{
_NextStr2 = String.Format("<a href=\"{0}_{1}.{2}\">{3}</a>", _TurnUrlStr, Convert.ToString(pageIndex + ), exName, _NextStr);
_LastStr2 = String.Format("<a href=\"{0}_{1}.{2}\">{3}</a>", _TurnUrlStr, PageCount, exName, _LastStr);
}
else
{
_NextStr2 = String.Format("<a href=\"{0}?{1}={2}&{3}\">{4}</a>", _TurnUrlStr, pageindexName, Convert.ToString(pageIndex + ), _Options, _NextStr);
_LastStr2 = String.Format("<a href=\"{0}?{1}={2}&{3}\">{4}</a>", _TurnUrlStr, pageindexName, PageCount, _Options, _LastStr);
}
} //----处理显示页码-----------
if (bolCount == true)//共N条信息
{
strPageShowww = String.Format("{0} {1}", strPageShowww, strCountww);
}
if (bolPage == true)//第N页/共N页
{
strPageShowww = String.Format("{0} {1}", strPageShowww, strPageww);
}
if (bolFirst == true) //首页
{
strPageShowww = String.Format("{0} {1}", strPageShowww, _FirstStr2);
}
strPageShowww = strPageShowww + "{0}";//上一页
//下一页 if (bolLast == true)
//尾页
strPageShowww = String.Format("{0} {1}", strPageShowww + "{1}{2}", _LastStr2);
else
strPageShowww = strPageShowww + "{1}{2}";
if (bolTurn == true)//跳转控件
{
strPageShowww = String.Format("{0} {1}", strPageShowww, strTurnww);
} #endregion
#region 样式一: 共X条信息 第N页/共M页 首页 上一页 下一页 尾页 跳转
if (intStyle == )
{
strPageShowww = strPageShowww.Replace("{0}", " " + _PrevStr2);//上一页
strPageShowww = strPageShowww.Replace("{1}", " " + _NextStr2);//下一页
strPageShowww = strPageShowww.Replace("{2}", "");//
}
#endregion
#region 样式二: 共X条信息 第N页/共M页 首页 1 2 3 尾页 跳转 if (intStyle == )
{
int PageTemp = ;
string strPageNum = "";
string strTempNow = ""; //当页码超过最后一批该显示
if (pageIndex > PageCount - intShowNum + )
{
PageTemp = PageCount < intShowNum ? : PageCount - intShowNum;
for (int i = ; i <= intShowNum; i++)
{
if (i > PageCount) break; strTempNow = Convert.ToString(PageTemp + i); //当前页不显示超链接
if( PageIndex == PageTemp + i)
{
strPageNum = String.Format("{0}<b>{1}</b> ", strPageNum, strTempNow);
}
else
{
if (isHtml)
{
if (strTempNow == "")
{
strPageNum = String.Format("{0}<a href=\"{1}.{2}\">{3}</a> ", strPageNum, _TurnUrlStr, exName, strTempNow);
}
else
{
strPageNum = String.Format("{0}<a href=\"{1}_{2}.{3}\">{2}</a> ", strPageNum, _TurnUrlStr, strTempNow, exName);
}
}
else
{
strPageNum = String.Format("{0}<a href=\"{1}?{2}={3}&{4}\">{3}</a> ", strPageNum, _TurnUrlStr, pageindexName, strTempNow, _Options);
}
}
}
}
else
{
for (int i = ; i < intShowNum; i++)
{
strTempNow = Convert.ToString(PageIndex + i); //当前页不显示超链接
if (i == )
{
strPageNum = String.Format("{0}<b>{1}</b> ", strPageNum, strTempNow);
}
else
{
if (isHtml)
{
if (strTempNow == "")
{
strPageNum = String.Format("{0}<a href=\"{1}.{2}\">{3}</a> ", strPageNum, _TurnUrlStr, exName, strTempNow);
}
else
{
strPageNum = String.Format("{0}<a href=\"{1}_{2}.{3}\">{2}</a> ", strPageNum, _TurnUrlStr, strTempNow, exName);
}
}
else
{
strPageNum = String.Format("{0}<a href=\"{1}?P{2}={3}&{4}\">{3}</a> ", strPageNum, _TurnUrlStr, pageindexName, strTempNow, _Options);
}
}
}
} //
strPageShowww = strPageShowww.Replace("{0}", " " + _PrevStr2);//上一页
strPageShowww = strPageShowww.Replace("{1}", " " + strPageNum);//显示数字
strPageShowww = strPageShowww.Replace("{2}", " " + _NextStr2);//下一页
}
#endregion
}
}
return strPageShowww;
}
#endregion }
}
sql 存储过程。
USE [ExamOnline]
GO
/****** Object: StoredProcedure [dbo].[SPager] Script Date: 06/13/2015 14:00:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SPager]
(
@TableName VARCHAR(), -- 表名(注意:可以多表链接)
@SelectStr VARCHAR() = '', -- 需要返回的列
@Pagekey VARCHAR()='',--必选,分页标识键,尽量保证无重复
@Subkey VARCHAR()='', --标识键别名,用于子流程
@KeyOrderType BIT = , -- 设置排序类型, 非 值则降序
@PageSize INT = , -- 页尺寸
@PageIndex INT = , -- 页码
@RecordCount INT = OUT, --查询到的记录数
@PageCount INT = OUTPUT,--总页数4
@Order VARCHAR()='', -- 分页后排序 “order by yufa”
@WhereCondition VARCHAR() = '' -- 查询条件 (注意: 不要加 where)
)
AS
DECLARE @strSQL NVARCHAR() -- 主语句
DECLARE @strTmp VARCHAR() -- 临时变量
DECLARE @strPagekeyOrder VARCHAR() -- 排序类型 IF @WhereCondition != ''
SET @strSQL = 'select @RecordCount=count(*) from ' + @TableName + ' where '+@WhereCondition
ELSE
SET @strSQL = 'select @RecordCount=count(*) from ' + @TableName
EXEC sp_executesql @strSQL,N'@RecordCount int out',@RecordCount OUT
--以上代码的意思是如果@RecordCount传递过来的不是0,就执行总数统计。以下的所有代码都是@RecordCount为0的情况
SET @strSQL='';
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize) IF @KeyOrderType !=
BEGIN
SET @strTmp = '<(select min'
SET @strPagekeyOrder = ' order by ' + @Subkey +' desc'--如果@OrderType不是0,就执行降序,这句很重要!
END
ELSE
BEGIN
SET @strTmp = '>(select max'
SET @strPagekeyOrder = ' order by ' + @Subkey +' asc'
END
IF @PageIndex =
BEGIN
IF @WhereCondition != ''
SET @strSQL = 'select top ' + STR(@PageSize) +' '+@SelectStr+ ' from ' + @TableName + ' where ' + @WhereCondition + ' ' + @strPagekeyOrder
ELSE
SET @strSQL = 'select top ' + STR(@PageSize) +' '+@SelectStr+ ' from '+ @TableName + ' '+ @strPagekeyOrder--如果是第一页就执行以上代码,这样会加快执行速度
END
ELSE
begin--以下代码赋予了@strSQL以真正执行的SQL代码
SET @strSQL = 'select top ' + STR(@PageSize) +' '+@SelectStr+ ' from '
+ @TableName + ' where ' + @Pagekey + ' ' + @strTmp + '('+ @Subkey + ') from (select top ' + STR((@PageIndex-)*@PageSize) + ' '+ @SelectStr + ' from ' + @TableName + ' ' + @strPagekeyOrder + ') as tblTmp)'+ @Order
IF @WhereCondition != ''
SET @strSQL = 'select top ' + STR(@PageSize) +' '+@SelectStr+ ' from '
+ @TableName + ' where ' + @Pagekey + ' ' + @strTmp + '('+ @Subkey + ') from (select top ' + STR((@PageIndex-)*@PageSize) + ' '+ @SelectStr + ' from ' + @TableName + ' where ' + @WhereCondition + ' '+ @strPagekeyOrder + ') as tblTmp) and ' + @WhereCondition + ' ' + @Order
END
EXEC (@strSQL)
asp.net sql 分页,,优化 排序 及分页,的更多相关文章
- SQL Server的分页优化及Row_Number()分页存在的问题
最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...
- MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?
本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...
- 【Spring Data 系列学习】Spring Data JPA 自定义查询,分页,排序,条件查询
Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application ...
- 在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView
背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5中创建GridView>中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类似于 ASP.NET web ...
- [转]在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView
本文转自:http://www.cnblogs.com/powertoolsteam/p/MVC5_GridView_2.html 背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5 ...
- C# SQL优化 及 Linq 分页
每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...
- SQL通用优化方案(where优化、索引优化、分页优化、事务优化、临时表优化)
SQL通用优化方案:1. 使用参数化查询:防止SQL注入,预编译SQL命令提高效率2. 去掉不必要的查询和搜索字段:其实在项目的实际应用中,很多查询条件是可有可无的,能从源头上避免的多余功能尽量砍掉, ...
- [原创]java WEB学习笔记92:Hibernate学习之路-- -QBC 检索和本地 SQL 检索:基本的QBC 查询,带 AND 和 OR 的QBC,统计查询,排序,分页
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第五章:排序、分页和路由
本章的重点是对产品信息增加排序和分页的功能,以及使用ASP.NET Routing特性添加更加友好的URL支持. 注意:如果你想按照本章的代码编写示例,你必须完成第四章或者直接从www.apress. ...
随机推荐
- Nutz中那些好用的工具类
Nutz 是国产的精品开源框架,它全无依赖,只以1兆多的身材,就可以实现SSH全部功能的90%以上.内容主要涵盖了:Ioc.Aop.MVC.Dao.Json等WEB开发的方方面面. 它不仅轻巧,而且 ...
- 使用jqgrid的C#/asp.net mvc开发者的福音 jqgrid-asp.net-mvc
你是否使用jqgrid? 你是否想在C#/asp.net mvc中使用jqgrid? 那你很可能曾经为了分析jqgrid的request url用fiddler忙活了2个小时.(如果你要使用jqgri ...
- <a href>传参的中文乱码问题
版权声明:本文为博主半原创文章,未经博主允许不得不转载时允许转载 :) 当需要href进行传参,参数为中文时,会出现乱码问题,最简单的方法是: 传入的值首先用escape()进行转码,然后在取值页面用 ...
- 利用yii2 gridview实现批量删除案例
作者:白狼 出处:http://www.manks.top/article/yii2_gridview_deleteall本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...
- servlet 学习(二)
一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...
- Java并发之BlockingQueue 阻塞队列(ArrayBlockingQueue、LinkedBlockingQueue、DelayQueue、PriorityBlockingQueue、SynchronousQueue)
package com.thread.test.thread; import java.util.Random; import java.util.concurrent.*; /** * Create ...
- mvn archetype:create和mvn archetype:generate
create is deprecated in maven 3.0.5 and beyond,在maven3.0.5以上版本舍弃了create,使用generate生成项目 before:mvn ar ...
- 编写Java应用程序。首先,定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时、分、秒,一个构造方法用于对三个成员变量(时、分、秒) 进行初始化,还有一个成员方法show()用于显示时钟对象的时间。其次,再定义 一个主类——TestClass,在主类的main方法中创建多个时钟类的对象,使用这 些对象调用方法show()来显示时钟的时间。
package com.hanqi.test; public class Clock { int hh; int mm; int ss; String time; Clock(int h,int m, ...
- 新手开发android容易出现的错误(不断更新中...)
才开始开发android app,因为以前一直是java开发,学习也比较容易. 记录下自己开发过程中出现的一些小问题: 静态变量 在开发中,因为习惯性的问题,经常将一些常用数据(如用户信息等)进行st ...
- MySQL性能优化经验
核心 不做运算 md5() Order By Rand() 控制单表数据量 保持表字段苗条 平衡范式与冗余 拒绝3B Big SQL Big Transaction Big Batch 字段 用好数值 ...