增加、修改和删除是单表操作,有Access已经够用,但是对于数据库有大量的多表查询。因此需要建立一种机制,避免直接写sql,通过设置参数的方式,定义对象,然后生成sql。
由于涉及多表,而且可能包含子查询,因此想封装好是一个十分麻烦的事情,但是可以根据自己的情况,逐步完善。
应该具有的方法:
/**
* 增加表
* 不能在增加第一个表的时候使用
* @param flag 连接类型,可以是空格/left/right/inner
* @param inName 输入名/可以是查询对象
* @param outName 输出名
* @param where 连接条件
* @throws Exception
*/
public void addQryTable(String flag,Object inName,String outName,String where) throws Exception;
/**
* 增加字段,多表查询时使用
* @param table 表的表名
* @param tableAlias 表的别名
* @param type 类型
* @param inName 输入串,不允许加表名
* @param outName 输出串,不允许加表名
* @throws Exception
*/
public void addQryField(String table,String tableAlias,int type, String inName, String outName) throws Exception;
public void setOrderBy(String orderby);
public String getGroupBy();
public void setDistinct(boolean distinct);
public RetInfo query(DataSource ds) throws Exception;
当然,根据自己的情况可以增加一些其它方法,比如where的条件、数据库名(特殊情况需要)等。
如果你还有精力,甚至可以实现查询结果的读取模式,因为查询可能有多种读取方式,比如读指定页;或者整批数据(一个类别有多少读多少)。