第一个项目,只考虑了逻辑方面的问题,而忽略了效率,原因是访问数据库过于频繁。。。
逻辑写完后,试用数组还有list对程序进行了优化。。。基本思想是试用数组还有list存放数据库中的数据,然后遍历数组还有list得到所需要的,效率当然大增。。。
用数组存放某个字段。。。
- public static String[] findYue() {
- ResultSet rs = null;
- DBConn db = null;
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
- String[] yue = new String[1000];
- int i = 0;
- try {
- db = new DBConn();
- String hqlStr = "select B2 from XXX order by B2 ASC";//按日期顺序排列可以避免存入日期重复
- rs = db.executeQuery(hqlStr);
- while (rs.next()) {
- if (i == 0) {
- yue[0] = sdf.format(rs.getDate(1));
- i++;
- } else if (i > 0
- && !yue[i - 1].equals(sdf.format(rs.getDate(1)))) {
- yue[i] = sdf.format(rs.getDate(1));
- i++;
- }
- }
- } catch (SQLException sqle) {
- sqle.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- db.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return yue;
- }
当然以上采用静态数组不是太好,一般试用动态数组。。。
- public static List findDT() {
- ResultSet rs = null;
- DBConn db = null;
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
- List<String> list = new ArrayList<String>();
- int i = 0;
- try {
- db = new DBConn();
- String hqlStr = "select B2 from XXX order by B2 ASC";//按日期顺序排列可以避免存入日期重复
- rs = db.executeQuery(hqlStr);
- while (rs.next()) {
- if (i == 0) {
- list.add(sdf.format(rs.getDate(1)));
- i++;
- }
- else if (i > 0 && !list.get(i-1).equals(sdf.format(rs.getDate(1)))) {
- list.add(sdf.format(rs.getDate(1)));
- i++;
- }
- }
- } catch (SQLException sqle) {
- sqle.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- db.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return list;
- }
list存放BEAN,BEAN存放所有数据。。。
- public static SjbdBean[] findSjbd(Session session) {
- Collection list = new ArrayList();
- Transaction tx = null;
- ZYyfxSjbd obj = null;
- SjbdBean sjb = new SjbdBean();
- try {
- tx = session.beginTransaction();
- StringBuffer hqlStr = new StringBuffer(
- " from XXX d where 1=1 order by B1 ASC");
- Query qry = session.createQuery(hqlStr.toString());
- Iterator it = qry.list().iterator();
- while (it.hasNext()) {
- obj = (ZYyfxSjbd) it.next();
- sjb.setB1(obj.getB1());
- sjb.setB2(obj.getB2());
- sjb.setB5(obj.getB5());
- sjb.setB9(obj.getB9());
- sjb.setB10(obj.getB10());
- sjb.setB11(obj.getB11());
- sjb.setB12(obj.getB12());
- sjb.setB13(obj.getB13());
- sjb.setB14(obj.getB14());
- sjb.setB25(obj.getB25());
- sjb.setB26(obj.getB26());
- sjb.setB44(obj.getB44());
- sjb.setB46(obj.getB46());
- sjb.setB49(obj.getB49());
- sjb.setB50(obj.getB50());
- sjb.setB29(obj.getB29());
- sjb.setB30(obj.getB30());
- sjb.setB31(obj.getB31());
- sjb.setB32(obj.getB32());
- sjb.setB78(obj.getB78());
- list.add(sjb);
- sjb = new SjbdBean(); // 解决覆盖问题
- }
- } catch (Exception e) {
- if (tx != null) {
- try {
- tx.rollback();
- } catch (HibernateException ex) {
- ex.printStackTrace();
- }
- }
- e.printStackTrace();
- return null;
- }
- return (SjbdBean[]) list.toArray(new SjbdBean[0]);
- }
- //测试findSjbd()
- Session session = SessionManager.currentSession();
- SjbdBean[] a = findSjbd(session);
- for(int i=0;i<=a.length-1;i++){
- System.out.println(a[i].getB1()+" "+a[i].getB2()+" "+a[i].getB9());
- }