很搞的,昨天写SQL语句很是别扭,不爽,下面要改一下数据库表结构,使其更有效的工作:(我是想到哪做到哪得,大家别跟我学坏了)
需要建六个表:
分别是
- project(id, name, decription, group, status)
- users(password, name, power_level, inUse)
- person(name, displayname)
- tasks(id, project_id, name, description, operator, status, solution, isBug)
- group(id, name, person_id, description, begin_date, end_date, measure, ismanager, commants)
- taskreport(id, task_id, checkby, reportby, fixby, recheckby, problem, checkdate, reportdate, fixdate, recheckdate, fixtime)
整个业务逻辑可以这样解释:
每个project需要一个group来完成,每个group包含多个person(其中一个person为manager,使用ismanager字段划分);同时,一个project分成很多的task,每个task有一个group里的person负责完成,在交叉测试的过程中会产生error以及exception,使用taskreport进行报告和修复;只有当task中的status都为完成时,project才可以close。
相对于前面的几个表,我认为这样的设计更适合扩展功能。
另外,在前文提及的database包里,将database操作独立出来,加入了Query类:
/*
* setQuery.java
*
* Created on 2006/4/16, PM 6:00
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package com.esc.database;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*
* @author tony
*/
public class Query {
/** Creates a new instance of setQuery */
public Query(){
}
private Connection conn = null;
private database db = new database();
private ResultSet rs = null;
public ResultSet getResult(String command) {
try{
conn = db.getConnection();
Statement smt = conn.createStatement();
rs = smt.executeQuery(command);
}catch(SQLException e1){
e1.printStackTrace();
return null;
}catch(IOException e2){
e2.printStackTrace();
return null;
}catch(ClassNotFoundException e3){
e3.printStackTrace();
return null;
}finally{
}
return rs;
}
public boolean closedb(){
if(conn != null){
try{
conn.close();
}catch(Exception e) {
e.printStackTrace();
return false;
}
}
return true;
}
}
这样,我想可以方便操作,loginAction要做相应的修改,各位不妨试试,在此不述。
这个系统将慢慢扩展,大家不要着急。
“弄点儿米出来,才能做饭呀!”----木匠语录一