return1;
ﻩﻩ}else{
ﻩreturn0;
ﻩﻩ}
}
ﻩOverride
ﻩpublic int hashCode(){
ﻩﻩreturnthiso *super、hashCode();
}
ﻩOverride
publicbooleanequals(Objectobj){
ﻩif(obj==null){
ﻩreturnfalse;
}
if(this ==obj){
return true;
ﻩ}
ﻩif(!
(objinstanceofCourse)){
ﻩﻩreturnfalse;
ﻩ}
ﻩCourse course=(Course)obj;
if(thiso==courseo){
ﻩ//课程号相同,则一定相同,课程号就是唯一标识符
ﻩreturntrue ;
ﻩﻩ}else{
ﻩreturnfalse;
ﻩ}
ﻩ}
}
//DatebaseConnection数据库连接与关闭
class DatebaseConnection{
ﻩ//数据库驱动程序
ﻩprivatefinalstatic String DBDRIVER=”oracle、jdbc、driver、OracleDriver”;
ﻩ//数据库得连接地址
private finalstatic StringDBURL="jdbc:
oracle:
thin:
localhost:
1521:
MLDN";
ﻩ//数据库得用户名
ﻩprivate finalstaticStringDBUER ="scott";
//数据库得密码
ﻩprivatefinalstaticStringDBPASS=”tiger”;
ﻩ//数据库得连接对象
ﻩprivateConnectionconnection;
ﻩpublicDatebaseConnection()throwsException{
ﻩtry{
ﻩﻩ//1、加载驱动程序
ﻩClass、forName(DBDRIVER);
ﻩﻩ//2、建立数据库连接
this、connection= DriverManager、getConnection(DBURL, DBUER,DBPASS);
}catch(Exception e){
ﻩﻩthrowe ; //将异常交给被调用处处理
ﻩﻩ}
}
publicConnectiongetConnection(){
ﻩﻩreturnthis、connection;//取得数据库连接对象得实例
}
publicvoid close() throws Exception{
ﻩtry{
ﻩif(this、connection!
=null){//关闭数据库连接对象
ﻩﻩﻩthis、connection、close() ;
ﻩﻩ}
ﻩﻩ}catch(Exceptione){
ﻩthrow e ; //异常交给被调用处处理
ﻩ}
}
}
interface ICourseDAO{
ﻩ/*
ﻩ*1、数据得增加操作,用于向数据库中添加一条课程记录
*paramcourse:
表示一个课程对象
ﻩ * return boolean:
就是否添加成功
ﻩ*throws Exception:
异常交给被调用处处理
ﻩ **/
ﻩpublicabstractbooleandoCreate(Coursecourse)throwsException ;
/*
ﻩ * 2、数据得删除操作,用于删除数据库中得某条记录
ﻩ *paramcno:
表示要删除得课程得课程号
*returnboolean:
删除就是否成功
*throws Exception:
异常交给被调用处处理
**/
ﻩpublicabstractbooleandoRemove(intcno)throwsException;
ﻩ/*
* 3、数据得更新操作
ﻩ*paramcno:
表示要更新得课程得课程号
* returnboolean:
更新就是否成功
* throwsException:
异常交给被调用处处理
ﻩ**/
publicabstractbooleandoUpdate(intcno)throwsException ;
ﻩ/*
*4、查瞧数据库中得所有记录
ﻩ*paramvoid
ﻩ* returnList<Course〉:
将查询结果以链表得形式返回给被调用出
ﻩ*throwsException:
异常交给被调用处处理
* */
publicabstractList<Course> findAll()throwsException;
/*
*5、根据关键字查询
ﻩ*paramkeyWord:
查询得关键字
ﻩ* return List<Course〉:
将查询得结果以链表得形式返回给被调用出
ﻩ*throwsException:
异常交给被调用处处理
* 函数得重载
**/
publicabstractListfindAll(String keyWord)throwsException;
ﻩ/*
ﻩ *6、根据课程号查询
*param cno:
要查询得课程号
ﻩ * return Course:
将查询得结果返回给被调用处
*throwsException:
将异常抛出交给被调用处处理
ﻩ* */
ﻩpublic abstractCoursefind(int cno)throwsException;
/*
*7、查询当前数据库中得记录数
* paramvoid
ﻩ*return int:
将查询得记录数返回给调用处
ﻩ*throwsException:
将异常抛出交给被调用处处理
ﻩ**/
ﻩpublicabstractintgetAllCount()throws Exception;
ﻩ/*
ﻩ*8、得到根据关键字查询得记录数
*paramkeyWord:
要查询得关键字
ﻩ*returnint :
将查询得记录数返回给被调用处
* throws Exception:
将异常抛出交给被调用处处理
*函数得重载
ﻩ**/
publicabstractintgetAllCount(String keyWord)throws Exception;
}
//真就是主题实现类,负责具体得操作
classCourseDAOImplimplements ICourseDAO{
ﻩprivate Connectionconn;
ﻩprivatePreparedStatementpstmt ;
publicCourseDAOImpl(Connectionconn){
//接收外部得数据库连接对象完成数据库得连接
ﻩﻩthis、conn=conn;
}
Override
ﻩpublicbooleandoCreate(Coursecourse) throwsException{
boolean flag= false;
Stringsql="Insert intoCourse(Cno,Cname,period,term,property) Values(?
?
?
,?
,?
)";
ﻩﻩthis、pstmt=this、conn、prepareStatement(sql);
ﻩﻩthis、pstmt、setInt(1, course、getCno());
this、pstmt、setString(2,course、getCname());
ﻩﻩthis、pstmt、setInt(3, course、getPeriod());
ﻩﻩthis、pstmt、setString(4,course、getTerm());
this、pstmt、setString(5,course、getProperty());
ﻩif(this、pstmt、executeUpdate()〉0){
ﻩﻩflag=true;
ﻩﻩ}
ﻩthis、pstmt、close();
ﻩreturnflag;
}
ﻩOverride
publicboolean doRemove(intcno)throwsException{
ﻩﻩbooleanflag=false;
ﻩStringsql=”Delete FromCourseWhereCno=?
";
ﻩthis、pstmt=this、conn、prepareStatement(sql);
this、pstmt、setInt(1,cno);
ﻩif(this、pstmt、executeUpdate()>0){
ﻩﻩflag =true;
ﻩﻩ}
ﻩthis、pstmt、close();
ﻩreturnflag ;
}
Override
ﻩpublicboolean doUpdate(intcno)throwsException{
ﻩﻩboolean flag= false;
ﻩﻩString sql ="UpdateCourseSetCname =?
,period=?
,term=?
property=?
WhereCno=?
";
ﻩﻩthis、pstmt=this、conn、prepareStatement(sql);
System、out、println(”输入您想要添加得课程得课程名:
");
ﻩStringcname =new Scanner(System、in)、next() ;
ﻩSystem、out、println(”输入您想要添加课程得学时:
");
ﻩintperiod=newScanner(System、in)、nextInt();
ﻩSystem、out、println("输入您想要添加得课程得上课学期:
”);
ﻩStringterm=newScanner(System、in)、next();
System、out、println("请输入您想要添加得课程得课程性质:
”);
ﻩﻩStringproperty=newScanner(System、in)、next();
ﻩthis、pstmt、setString(1,cname);
ﻩﻩthis、pstmt、setInt(2, period);
ﻩthis、pstmt、setString(3,term);
ﻩthis、pstmt、setString(4,property);
ﻩﻩthis、pstmt、setInt(5,cno);
ﻩﻩif(this、pstmt、executeUpdate()>0){
ﻩﻩflag=true;
ﻩ}
this、pstmt、close();
ﻩreturn flag ;
}
Override
publicListfindAll() throwsException{
ﻩList<Course>courses=newArrayList〈Course〉();
ﻩﻩStringsql="SelectCno,Cname,period,term,propertyFromCourse”;
ﻩthis、pstmt= this、conn、prepareStatement(sql);
ﻩResultSetrs =this、pstmt、executeQuery();
ﻩwhile(rs、next()){
ﻩﻩﻩCourse course=newCourse();
ﻩcourse、setCno(rs、getInt
(1));
ﻩcourse、setCname(rs、getString(2));
ﻩﻩcourse、setPeriod(rs、getInt(3));
ﻩﻩcourse、setTerm(rs、getString(4));
ﻩcourse、setProperty(rs、getString(5));
ﻩcourses、add(course) ;
ﻩ}
ﻩthis、pstmt、close();
ﻩreturn courses;
}
ﻩOverride
publicList findAll(String keyWord)throws Exception {
ﻩﻩList<Course> courses= newArrayList<Course>();
String sql="SelectCno,Cname,period,term,propertyFrom CourseWhereCnamelike?
”+
ﻩﻩﻩ"ORtermlike?
ORpropertylike?
" ;
ﻩthis、pstmt=this、conn、prepareStatement(sql);
ﻩthis、pstmt、setString(1, "%”+keyWord+"%");
ﻩﻩthis、pstmt、setString(2,"%”+keyWord+"%");
ﻩthis、pstmt、setString(3,”%"+keyWord+”%”);
ﻩResultSet rs=this、pstmt、executeQuery();
ﻩwhile(rs、next()){
ﻩCoursecourse =newCourse();
ﻩﻩﻩcourse、setCno(rs、getInt(1)) ;
ﻩcourse、setCname(rs、getString
(2));
ﻩcourse、setPeriod(rs、getInt(3)) ;
ﻩﻩcourse、setTerm(rs、getString(4)) ;
ﻩﻩcourse、setProperty(rs、getString(5));
ﻩcourses、add(course);
ﻩ}
ﻩthis、pstmt、close() ;
ﻩﻩreturncourses;
}
ﻩOverride
ﻩpublic Coursefind(intcno)throwsException {
ﻩCoursecourse=newCourse();
ﻩﻩStringsql= ”SelectCno,Cname,period,term,propertyFrom CourseWhereCno= ?
”;
ﻩﻩthis、pstmt=this、conn、prepareStatement(sql);
ﻩthis、pstmt、setInt(1,cno) ;
ﻩResultSetrs=this、pstmt、executeQuery();
ﻩwhile(rs、next()){
ﻩﻩcourse、setCno(rs、getInt(1));
ﻩcourse、setCname(rs、getString
(2));
ﻩﻩcourse、setPeriod(rs、getInt(3));
ﻩcourse、setTerm(rs、getString(4));
ﻩcourse、setProperty(rs、getString(5));
ﻩﻩ}
ﻩthis、pstmt、close();
ﻩreturncourse ;
ﻩ}
Override
publicintgetAllCount()throwsException{
intcount=0;
ﻩList<Course〉 courses =newArrayList〈Course>() ;
ﻩStringsql ="SelectCno,Cname,period,term,propertyFromCourse";
ﻩthis、pstmt=this、conn、prepareStatement(sql);
ﻩﻩResultSetrs= this、pstmt、executeQuery();
ﻩﻩwhile(rs、next()){
Course course =newCourse();
ﻩﻩcourse、setCno(rs、getInt
(1)) ;
ﻩcourse、setCname(rs、getString(2));
ﻩﻩcourse、setPeriod(rs、getInt(3));
ﻩcourse、setTerm(rs、getString(4));
ﻩﻩcourse、setProperty(rs、getString(5));
ﻩﻩcourses、add(course);
ﻩ}
count=courses、size();
ﻩﻩthis、pstmt、close();
ﻩﻩreturncount;
ﻩ}
Override
publicintgetAllCount(String keyWord)throwsException{
ﻩintcount = 0;
ﻩList〈Course>courses=newArrayList();
Stringsql=”SelectCno,Cname,period,term,propertyFrom CourseWhereCnamelike ?
" +
ﻩ"OR termlike?
ORpropertylike?
”;
ﻩthis、pstmt=this、conn、prepareStatement(sql);
ﻩthis、pstmt、setString(1, ”%"+keyWord +"%”);
ﻩthis、pstmt、setString(2, ”%”+keyWord+”%”) ;
ﻩthis、pstmt、setString(3, ”%”+ keyWord+"%");
ﻩﻩResultSet rs =this、pstmt、executeQuery();
ﻩﻩwhile(rs、next()){
Cou