我用了dao ,vo ,javabeans和JSP几个包,
dao包
StudentDAO SqlDAOFactory
TeacherDAO SqlStudentDAO
CourseDAO SqlTeacherDAO
ScoreDAO SqlScoreDAO
AnswerDAO SqlAnswerDAO
DAOFactory SqlCourseDAO
dao包,我是用的我看的一本J2EE书上的,因为这个DAO用了设计模式,我看很好,也非常利用在不同的数据库间移植,我就采用了,比如说你用Oracle数据库,就可以写成如下的样子,
dao包 的好处就是这样了,
StudentDAO OracleDAOFactory
TeacherDAO OracleStudentDAO
CourseDAO OracleTeacherDAO
ScoreDAO OracleScoreDAO
AnswerDAO OracleAnswerDAO
DAOFactory OracleCourseDAO
package dao;
import java.sql.SQLException;
import java.util.Collection;
import vo.AnswerVO;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public interface AnswerDAO {
void addAnswer(AnswerVO answer) throws SQLException;
AnswerVO findAnswer(String id) throws SQLException;
void updateAnswer(AnswerVO answer) throws SQLException;
void deleteAnswer(String id) throws SQLException;
Collection selectAnswer(String condition) throws SQLException;
void close();
}
package dao;
import java.sql.SQLException;
import java.util.Collection;
import vo.CourseVO;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public interface CourseDAO {
void addCourse(CourseVO course) throws SQLException;
CourseVO findCourse(String id) throws SQLException;
void updateCourse(CourseVO course) throws SQLException;
void deleteCourse(String id)throws SQLException;
Collection selectCourse(String condition)throws SQLException;
void close();
}
package dao;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public interface DAOFactory {
StudentDAO createStudentDAO();
TeacherDAO createTeacherDAO();
AnswerDAO createAnswerDAO();
ScoreDAO createScoreDAO();
CourseDAO createCourseDAO();
}
/*
* 创建日期 2005-4-20
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package dao;
import java.sql.SQLException;
import java.util.Collection;
import vo.ScoreVO;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public interface ScoreDAO {
void addScore(ScoreVO score)throws SQLException;
ScoreVO findScore(String studentId,String courseId)throws SQLException;
void updateScore(ScoreVO score)throws SQLException;
void deleteScore(ScoreVO score)throws SQLException;
Collection selectScore(String condition)throws SQLException;
void close();
}
/*
* 创建日期 2005-4-21
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import vo.AnswerVO;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class SqlAnswerDAO implements AnswerDAO {
Connection conn;
/**
*
*/
public SqlAnswerDAO() {
super();
conn=getConnection();
// TODO 自动生成构造函数存根
}
Connection getConnection(){
return SqlDAOFactory.createConnection();
}
/* (非 Javadoc)
* @see dao.AnswerDAO#addAnswer(vo.AnswerVO)
*/
public void addAnswer(AnswerVO answer) throws SQLException {
// TODO 自动生成方法存根
String optionId;
if(answer.getOptionA()==null||answer.getOptionA().equals(""))
optionId=null;
else optionId=answer.getCourseId()+answer.getAnswerId();
String str="insert into answer values(?,?,?,?,?)";
PreparedStatement prep=conn.prepareStatement(str);
prep.setString(1,answer.getAnswerId());
// 分别插入其他的属性,按数据库的表顺序
prep.setString(2,answer.getAnswerTitle());
prep.setString(3,optionId);
prep.setString(4,answer.getScorevalue());
prep.setString(5,answer.getAnswer());
prep.setString(6,answer.getCourseId());
prep.executeUpdate();
if(optionId!=null){
str="insert into option values(?,?,?,?,?)";
prep=conn.prepareStatement(str);
prep.setString(1,optionId);
prep.setString(1,answer.getOptionA());
prep.setString(1,answer.getOptionB());
prep.setString(1,answer.getOptionC());
prep.setString(1,answer.getOptionD());
prep.executeUpdate();
}
}
/* (非 Javadoc)
* @see dao.AnswerDAO#updateAnswer(vo.AnswerVO)
*/
public void updateAnswer(AnswerVO answer) throws SQLException {
// TODO 自动生成方法存根
// 按照数据库的顺序修改这个str
String optionId;
if(answer.getOptionA()==null||answer.getOptionA().equals(""))
optionId=null;
else optionId=answer.getCourseId()+answer.getAnswerId();
String str="update answer set answerTitle="+answer.getAnswerTitle()+
",courseId="+answer.getCourseId()+" scoreValue="+answer.getScorevalue()
+" answerValue="+answer.getAnswer()+"optionId="+optionId
+" where answerId="+answer.getAnswerId();
PreparedStatement prep=conn.prepareStatement(str);
prep.executeUpdate();
if(optionId!=null) {
str="update option set optionA='"+answer.getOptionA()
+"'optionB='"+answer.getOptionB()+"'optionC='"+answer.getOptionC()
+"' optionD='"+answer.getOptionD()+"'"
+"where optionId="
+optionId;
prep=conn.prepareStatement(str);
prep.executeUpdate();
}
}
/* (非 Javadoc)
* @see dao.AnswerDAO#deleteAnswer(java.lang.String)
*/
public void deleteAnswer(String id) throws SQLException {
// TODO 自动生成方法存根
String str="select optionId from answer where answerId="+id;
PreparedStatement prep=conn.prepareStatement(str);
ResultSet rst=prep.executeQuery();
if(!rst.next()) throw new SQLException();
String optionId= rst.getString("optionId");
if(optionId==null||optionId.equals(""));
else{
str="delete from option where optionId="+optionId;
prep=conn.prepareStatement(str);
prep.executeUpdate();
}
str="delete from answer where answerId="+id;
prep=conn.prepareStatement(str);
prep.executeUpdate();
}
/* (非 Javadoc)
* @see dao.AnswerDAO#findAnswer(java.lang.String)
*/
public AnswerVO findAnswer(String id) throws SQLException {
// TODO 自动生成方法存根
String str="select * from answer where answerId="+id;
PreparedStatement prep=conn.prepareStatement(str);
ResultSet rst=prep.executeQuery();
if(!rst.next()) throw new SQLException();
AnswerVO avo =new AnswerVO();
avo.setAnswerId(id);
avo.setAnswerTitle(rst.getString("answerTitle"));
// 依次获取其他的一些属性
String optionId=rst.getString("optionId");
if(optionId==null||optionId.equals("")){
avo.setOptionA(null);
avo.setOptionB(null);
avo.setOptionC(null);
avo.setOptionD(null);
}
else{
str="select * from option where optionId="+optionId;
prep=conn.prepareStatement(str);
rst=prep.executeQuery();
if(!rst.next()) throw new SQLException();
avo.setOptionA(rst.getString("optionA"));
avo.setOptionB(rst.getString("optionB"));
avo.setOptionC(rst.getString("optionC"));
avo.setOptionD(rst.getString("optionD"));
}
return avo;
}
/* (非 Javadoc)
* @see dao.AnswerDAO#selectAnswer(java.lang.String)
*/
public Collection selectAnswer(String condition) throws SQLException {
// TODO 自动生成方法存根
String str =condition;
PreparedStatement prep=conn.prepareStatement(str);
ResultSet rst1=prep.executeQuery();
ResultSet rst2;
Collection c= new ArrayList();
String optionId;
while(rst1.next()){
AnswerVO avo= new AnswerVO();
avo.setAnswerId(rst1.getString("answerId"));
// 依次获取其他属性
avo.setAnswerId(rst1.getString("answerTitle"));
avo.setAnswerId(rst1.getString("scoreValue"));
avo.setAnswerId(rst1.getString("answerValue"));
avo.setAnswerId(rst1.getString("courseId"));
optionId=rst1.getString("optionId");
if(optionId!=null||optionId.equals("")){
str="select * from option where optionId="+optionId;
prep=conn.prepareStatement(str);
rst2=prep.executeQuery();
if(rst2.next()){
avo.setOptionA(rst2.getString("optionA"));
avo.setOptionB(rst2.getString("optionB"));
avo.setOptionC(rst2.getString("optionC"));
avo.setOptionD(rst2.getString("optionD"));
}
else {
avo.setOptionA(null);
avo.setOptionB(null);
avo.setOptionC(null);
avo.setOptionD(null);
}
}
c.add(avo);
}
return c;
}
public void close(){
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
}
}
}
/*
* 创建日期 2005-4-21
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package dao;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
import vo.CourseVO;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class SqlCourseDAO implements CourseDAO {
Connection conn;
/**
*
*/
public SqlCourseDAO() {
super();
conn=getConnection();
// TODO 自动生成构造函数存根
}
Connection getConnection(){
return SqlDAOFactory.createConnection();
}
/* (非 Javadoc)
* @see dao.CourseDAO#addCourse(vo.CourseVO)
*/
public void addCourse(CourseVO course) throws SQLException {
// TODO 自动生成方法存根
}
/* (非 Javadoc)
* @see dao.CourseDAO#deleteCourse(java.lang.String)
*/
public void deleteCourse(String id) {
// TODO 自动生成方法存根
}
/* (非 Javadoc)
* @see dao.CourseDAO#updateCourse(vo.CourseVO)
*/
public void updateCourse(CourseVO course) throws SQLException {
// TODO 自动生成方法存根
}
/* (非 Javadoc)
* @see dao.CourseDAO#findCourse(java.lang.String)
*/
public CourseVO findCourse(String id) throws SQLException {
// TODO 自动生成方法存根
return null;
}
/* (非 Javadoc)
* @see dao.CourseDAO#selectCourse(java.lang.String)
*/
public Collection selectCourse(String condition) {
// TODO 自动生成方法存根
return null;
}
public void close(){
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
/*
* 创建日期 2005-4-21
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class SqlDAOFactory implements DAOFactory {
/**
*
*/
public SqlDAOFactory() {
super();
// TODO 自动生成构造函数存根
}
public static Connection createConnection(){
Connection conn=null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:nihao");
}catch(ClassNotFoundException e){
}
catch(SQLException e){
}
finally{
try {
conn.close();
} catch (SQLException e1) {
// TODO 自动生成 catch 块
}
}
return conn;
}
/* (非 Javadoc)
* @see dao.DAOFactory#createAnswerDAO()
*/
public AnswerDAO createAnswerDAO() {
// TODO 自动生成方法存根
return new SqlAnswerDAO();
}
/* (非 Javadoc)
* @see dao.DAOFactory#createScoreDAO()
*/
public ScoreDAO createScoreDAO() {
// TODO 自动生成方法存根
return new SqlScoreDAO();
}
/* (非 Javadoc)
* @see dao.DAOFactory#createStudentDAO()
*/
public StudentDAO createStudentDAO() {
// TODO 自动生成方法存根
return new SqlStudentDAO();
}
/* (非 Javadoc)
* @see dao.DAOFactory#createTeacherDAO()
*/
public TeacherDAO createTeacherDAO() {
// TODO 自动生成方法存根
return new SqlTeacherDAO();
}
/**
* @return
*/
public CourseDAO createCourseDAO() {
// TODO 自动生成方法存根
return new SqlCourseDAO();
}
}
/*
* 创建日期 2005-4-21
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import vo.ScoreVO;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class SqlScoreDAO implements ScoreDAO {
Connection conn;
/**
*
*/
public SqlScoreDAO() {
super();
conn=getConnection();
// TODO 自动生成构造函数存根
}
Connection getConnection(){
return SqlDAOFactory.createConnection();
}
/* (非 Javadoc)
* @see dao.ScoreDAO#addScore(vo.ScoreVO)
*/
public void addScore(ScoreVO score) throws SQLException {
// TODO 自动生成方法存根
String str="insert into studentcourse values(?,?,?)";
PreparedStatement prep=conn.prepareStatement(str);
prep.setString(1,score.getStudentId());
prep.setString(2,score.getCourseId());
prep.setString(3,score.getScore());
// 这里注意要和数据库的顺序一致
prep.executeUpdate();
}
/* (非 Javadoc)
* @see dao.ScoreDAO#deleteScore(java.lang.String)
*/
public void deleteScore(ScoreVO score) throws SQLException {
// TODO 自动生成方法存根
String str="delete from studentcourse where studentId="+score.getStudentId()
+"and courseId="+score.getCourseId();
PreparedStatement prep=conn.prepareStatement(str);
prep.executeUpdate();
}
/* (非 Javadoc)
* @see dao.ScoreDAO#updateScore(vo.ScoreVO)
*/
public void updateScore(ScoreVO score) throws SQLException {
// TODO 自动生成方法存根
String str="update studentcourse set score="+score.getScore()+"where studentId="
+score.getStudentId()+"and courseId="+score.getCourseId();
PreparedStatement prep=conn.prepareStatement(str);
prep.executeUpdate();
}
/* (非 Javadoc)
* @see dao.ScoreDAO#findScore(java.lang.String)
*/
public ScoreVO findScore(String studentId,String courseId) throws SQLException {
// TODO 自动生成方法存根
String str="select *from studentcourse where studentId="+studentId+
"and courseId="+courseId;
PreparedStatement prep=conn.prepareStatement(str);
ResultSet rst=prep.executeQuery();
if(!rst.next()) throw new SQLException();
ScoreVO score =new ScoreVO();
score.setStudentId(studentId);
score.setCourseId(courseId);
// 这里还有其他的类似的调用
score.setScore(rst.getString("score"));
return score;
}
/* (非 Javadoc)
* @see dao.ScoreDAO#selectScore(java.lang.String)
*/
public Collection selectScore(String condition) throws SQLException {
// TODO 自动生成方法存根
String str=condition;
Collection c=new ArrayList();
PreparedStatement prep=conn.prepareStatement(str);
ResultSet rst=prep.executeQuery();
while(rst.next()){
ScoreVO svo= new ScoreVO();
svo.setStudentId(rst.getString("studentId"));
svo.setCourseId(rst.getString("courseId"));
svo.setScore(rst.getString("score"));
// 用类似的方法获取其他的属性
c.add(svo);
}
return c;
}
public void close(){
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
/* (非 Javadoc)
* @see dao.ScoreDAO#findScore(java.lang.String)
*/
}
/*
* 创建日期 2005-4-21
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import vo.StudentVO;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class SqlStudentDAO implements StudentDAO {
Connection conn;
/**
* @throws SQLException TODO
*
*/
public SqlStudentDAO(){
super();
conn=getConnection();
// TODO 自动生成构造函数存根
}
Connection getConnection(){
return SqlDAOFactory.createConnection();
}
/* (非 Javadoc)
* @see dao.StudentDAO#addStudent(vo.StudentVO)
*/
public void addStudent(StudentVO student) throws SQLException{
// TODO 自动生成方法存根
String str="insert into student values(?,?,?,?,?)";
PreparedStatement prep=conn.prepareStatement(str);
prep.setString(1,student.getStudentId());
prep.setString(2,student.getStudentName());
prep.setString(3,student.getPassword());
prep.setString(4,student.getClassName());
prep.setString(5,student.getDepth());
// 这里注意要和数据库的顺序一致
prep.executeUpdate();
}
/* (非 Javadoc)
* @see dao.StudentDAO#deleteStudent(java.lang.String)
*/
public void deleteStudent(String id) throws SQLException {
// TODO 自动生成方法存根
//这个方法在这里不在实现了
}
/* (非 Javadoc)
* @see dao.StudentDAO#findStudent(java.lang.String)
*/
public StudentVO findStudent(String id) throws SQLException {
// TODO 自动生成方法存根
String str="select *from student where studentId="+id;
PreparedStatement prep=conn.prepareStatement(str);
ResultSet rst=prep.executeQuery();
if(!rst.next()) throw new SQLException();
StudentVO student =new StudentVO();
student.setStudentId(id);
student.setStudentName(rst.getString("studentName"));
// 这里还有其他的类似的调用
student.setPassword(rst.getString("password"));
student.setClassName(rst.getString("className"));
student.setDepth(rst.getString("depth"));
return student;
}
/* (非 Javadoc)
* @see dao.StudentDAO#selectStudent(java.lang.String)
*/
public Collection selectStudent(String condition) throws SQLException {
// TODO 自动生成方法存根
String str=condition;
Collection c=new ArrayList();
PreparedStatement prep=conn.prepareStatement(str);
ResultSet rst=prep.executeQuery();
while(rst.next()){
StudentVO svo= new StudentVO();
svo.setStudentId(rst.getString("studentId"));
// 用类似的方法获取其他的属性
svo.setStudentName(rst.getString("studentName"));
svo.setPassword(rst.getString("password"));
svo.setClassName(rst.getString("className"));
svo.setDepth(rst.getString("depth"));
c.add(svo);
}
return c;
}
public void close(){
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
/* (非 Javadoc)
* @see dao.StudentDAO#updateStudent(vo.StudentVO)
*/
public void updateStudent(StudentVO student) throws SQLException {
// TODO 自动生成方法存根
String str="update student set password="+student.getPassword()+"where " +
"studentId="+student.getStudentId();
PreparedStatement prep=conn.prepareStatement(str);
prep.executeUpdate();
}
}
/*
* 创建日期 2005-4-21
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import vo.TeacherVO;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class SqlTeacherDAO implements TeacherDAO {
Connection conn;
/**
*
*/
public SqlTeacherDAO() {
super();
conn=getConnection();
// TODO 自动生成构造函数存根
}
Connection getConnection(){
return SqlDAOFactory.createConnection();
}
/* (非 Javadoc)
* @see dao.TeacherDAO#addTeacher(vo.TeacherVO)
*/
public void addTeacher(TeacherVO teacher) throws SQLException {
// TODO 自动生成方法存根
String str="insert into teacher values(?,?,?)";
PreparedStatement prep=conn.prepareStatement(str);
prep.setString(1,teacher.getTeacherId());
prep.setString(2,teacher.getTeacherName());
prep.setString(3,teacher.getPassword());
// 这里注意要和数据库的顺序一致
prep.executeUpdate();
}
/* (非 Javadoc)
* @see dao.TeacherDAO#deleteTeacher(java.lang.String)
*/
public void deleteTeacher(String id) throws SQLException {
// TODO 自动生成方法存根
}
/* (非 Javadoc)
* @see dao.TeacherDAO#updateTeacher(vo.TeacherVO)
*/
public void updateTeacher(TeacherVO teacher) throws SQLException {
// TODO 自动生成方法存根
String str="update teacher set password="+teacher.getPassword()+"where " +
"teacherId="+teacher.getTeacherId();
PreparedStatement prep=conn.prepareStatement(str);
prep.executeUpdate();
}
/* (非 Javadoc)
* @see dao.TeacherDAO#findTeacher(java.lang.String)
*/
public TeacherVO findTeacher(String id) throws SQLException{
// TODO 自动生成方法存根
String str="select * from teacher where teacherId="+id;
PreparedStatement prep=conn.prepareStatement(str);
ResultSet rst=prep.executeQuery();
if(!rst.next()) throw new SQLException();
TeacherVO teacher =new TeacherVO();
teacher.setTeacherId(id);
teacher.setTeacherName(rst.getString("teacherName"));
// 这里还有其他的类似的调用
teacher.setPassword(rst.getString("password"));
return teacher;
}
/* (非 Javadoc)
* @see dao.TeacherDAO#selectTeacher(java.lang.String)
*/
public Collection selectTeacher(String condition) throws SQLException {
// TODO 自动生成方法存根
return null;
}
public void close(){
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
/*
* 创建日期 2005-4-20
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package dao;
import java.sql.SQLException;
import java.util.Collection;
import vo.StudentVO;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public interface StudentDAO {
void addStudent(StudentVO student)throws SQLException;
StudentVO findStudent(String id)throws SQLException;
void updateStudent(StudentVO student)throws SQLException;
void deleteStudent(String id)throws SQLException;
Collection selectStudent(String condition)throws SQLException;
/**
*
*/
void close();
/**
*
*/
}
/*
* 创建日期 2005-4-20
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package dao;
import java.sql.SQLException;
import java.util.Collection;
import vo.TeacherVO;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public interface TeacherDAO {
void addTeacher(TeacherVO teacher)throws SQLException;
TeacherVO findTeacher(String id)throws SQLException;
void updateTeacher(TeacherVO teacher)throws SQLException;
void deleteTeacher(String id)throws SQLException;
Collection selectTeacher(String condition)throws SQLException;
void close();
}