日常的开发中,数据访问层是程序员不得不去面对的重复劳动,基本上现在每个公司或个人都有自己的DbHelper,像自己日常用的有微软petshop中的几个dbhelper,或者nhibernate,或者IbatisNet,或者我自己写的数据访问工具-Qing,本来是想写成类似linq的一个工具,大家看qing的代码也可以看出一点意图,但是,不可否认,代码设计方面确实是有点垃圾,呵呵,见笑了!,现在想来,还有一个SubSonic已经很成熟地实现了类似的查询功能了!
最近在改一个项目,以前留下来的,汗,项目虽然不大,但是数据量也有好几万,访问量也不低,然后每次客户都投诉说速度很慢,分页用的竟然是gridview自带的,当然,更夸张的是查询的结果是先搜索出所有的结果的dataTable,然后在内存里面通过Filter过滤,更汗!本来一句select * form table where id=1,现在变成了select * from table 然后再在内存中过滤!
好拉,问题找出来了,改就是了,自定义分页导航可以选择AspNetPage,也可以自己写,不是本随笔的关键,先看看分页所需要的,我们除了要查询分页的数据外,还要知道表的总记录数!一般我们都是有写两个方法,一个返回分页的数据,一个返回总记录数,这样做很明显是要访问两次数据库了,创建数据库连接可是很昂贵的,所以我把他封在一个类里面,达到只创建一个连接,返回总纪录数和分页数据,先看代码
publicclass TestTable:ITableScheman { TableInterface 成员#region TableInterface 成员 publicstring TableName { get { return"testtable"; } } publicstring PrimaryKey { get { return"[id]"; } } public Dictionary<string, string> ForeignKeyList { get { returnnull; } } public List<string> Fields { get { List<string> s =new List<string>(); s.Add("id"); return s; //return null; } } #endregion }
接下来是测试
Northwind.Web.DB.DataManager<Northwind.Web.DB.TestTable> p = new Northwind.Web.DB.DataManager<Northwind.Web.DB.TestTable>();
using (IDataReader dr = p.QueryAndGetPageCount())
{
while (dr.Read())
{
this.DropDownList1.Items.Add(new ListItem(dr[1].ToString()));
}
this.Label1.Text = p.PageCount.ToString();
}
这里我只是绑定到一个列表上去,而且分页的sql语句只是简单的top而已,大家可以替换为自己的sql分页语句,这里只是一个思路而已。
我们可以根据思路继续拓展,包括修改数据的功能!
结论:虽然不oo,但是思路清晰,不失为一个轻量级的访问数据层,希望有帮助咯!
分页显示一直是web开发中一大烦琐的难题,传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享交流。
1、DAO层接口的设计,在MemberDao接口中定义了如下两个方法:
public in
/*
*使用对象类型
*/
--建立和使用简单对象类型
--对象类型包括对象类型规范和对象类型体两部分。
--建立和使用不包含任何方法的对象类型
CREATE OR REPLACE TYPE person_typ1 as OBJECT(
name varchar2(10),gender varchar2(4),birthdate date
);
drop type p
what 什么
your 你
name 名字
my 我的
am 是
one 一
two 二
three 三
four 四
five 五
class 班级,课
six 六
seven 七
eight 八
nince 九
ten 十
zero 零
how 怎样
old 老的
eleven 十一
twelve 十二
thirteen
spring security 3中推荐使用BCrypt算法加密密码了,以前使用的是md5,
Md5PasswordEncoder 和 ShaPasswordEncoder,现在不推荐了,推荐用bcrpt
Bcrpt中的salt可以是随机的,比如:
int i = 0;
while (i < 10) {
String password = "1234
1.前言。
如题。
2.代码
(1)单表查重复数据,根据a分组
SELECT m.a,m.b, INNER JOIN (select a,b,COUNT(*) AS rank FROM test.`A` A GROUP BY a HAVING rank>1 )k ON m.a=k.a
(2)多表查询 ,
使用改为le