一、前台(client端)操作数据库的方法
IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
queryBS.exceuteQuery(sql, processor);//processor 常用的有:MapListProcessor、BeanProcessor、BeanListProcessor、ArrayListProcessor、ColumnProcessor
前台通过表头主键查询aggvo
HYPubBO_Client.queryBillVOByPrimaryKey(class, pks);
二、后台(private端)操作数据库的方法
//只能在private端使用
BaseDAO baseDAO = new BaseDAO();
HYPubBO.insert(SuperVO vo)
String sql = "select * from ic_saleout_h where nvl(dr, 0) = 0";
List<Object[]) list = (List<Object[]) baseDAO.executeQuery(sql, new ArrayListProcessor());//查询语句可以返回多行多列
Object result = baseDAO.executeQuery("select h.vbillcode from ic_generalin_h h where nvl(h.dr, 0) = 0 and h.cgeneralhid = '传入的主键值' ", new ColumnProcessor());//查询得到一行一列的值
Map<String, Object> map = (Map<String, Object> )baseDAO.executeQuery("select * from er_bxzb where nvl(dr, 0) = 0 and pk_jkbx ='传入的报销单主键'", new MapProcessor());//查询语句返回一行结果值
List<Map<String, String>> listMap = (List<Map<String, String>>) baseDAO.executeQuery("select * from wa_data where nvl(dr, 0) = 0", new MapListProcessor());//查询语句可以返回多行结果
nc.vo.ic.m4i.entity.GeneralOutHeadVO generalOutHeadVO = (nc.vo.ic.m4i.entity.GeneralOutHeadVO)baseDAO.executeQuery("select * from ic_generalout_h h where nvl(h.dr, 0) = 0 and h.cgeneralhid = '传入的普通出库单表头主键'", new BeanProcessor(nc.vo.ic.m4i.entity.GeneralOutHeadVO.class));//查询语句返回一个VO实体
List<nc.vo.ic.m4i.entity.GeneralOutHeadVO> listVO = (List<nc.vo.ic.m4i.entity.GeneralOutHeadVO>) baseDAO.executeQuery("select * from ic_generalout_h h where nvl(h.dr, 0) = 0 and h.cgeneralhid = '传入的普通出库单表头主键'", new BeanListProcessor(nc.vo.ic.m4i.entity.GeneralOutHeadVO.class));//查询语句可以返回多个VO,即一个集合VO
String sqlStr = "select * from bd_material where nvl(dr, 0) = 0"
Set<String> setResult = (Set<String>) baseDAO.executeQuery(sqlStr, new BaseProcessor(){
private static final long serialVersionUID = 1L;
@Override
public Object processResultSet(ResultSet rs) throws SQLException {
Set<String> result = new HashSet<String>();
String material_code = null;
while(rs.next()){
material_code rs.getString("code");
result.add(material_code);
}
return result;
}
});
return setResult;
baseDAO.executeUpdate("增删改的sql语句");
三、前后台都可以操作数据库的方式
IbillQueryService queryService = NCLocator.getInstance().lookup(IBillQueryService.class);
四、防止sql注入的例子,使用SQLParameter参数,此参数前后台都有。
StringBuilder sqlStr = new StringBuilder();
sqlStr.append("select * from bd_psndoc ");
sqlStr.append( where pk_psndoc = ?");
sqlStr.append(" and dr = ?");
SQLParameter params = new SQLParameter();
params.addParam(pk_psndoc);
params.addParam(0)
List<nc.vo.hi.psndoc.PsndocVO> psndocVO = (List<nc.vo.hi.psndoc.PsndocVO>) new BaseDAO().executeQuery(sqlStr.toString(), params, new BeanListProcessor(nc.vo.hi.psndoc.PsndocVO));
五、后台通过表头主键查询aggvo
BillQuery<EvaObjectVO> billQuery = new BillQuery<EvaObjectVO>(EvaObjectVO.class);
bills = billQuery.query(pks)
当然,上面列举的只是NC的一小部分,还有很多没有列举出来,大家可以在实际开发过程中自己总结下来以备需用。