⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 teacherdao.java

📁 您的文件包然后写出其具体功能(至少要20个字)。尽量不要让站长把时间都花费在为您
💻 JAVA
字号:
package Sys.dao;

import java.sql.*;
import java.io.*;
import javax.swing.*;
import java.util.*;

import Sys.db.*;
import Tools.Teacher;


public class TeacherDao {
	private Connection conDB=null;
	public TeacherDao(){
		conDB=DatabaseTool.conDB();//所以这里的dao引用的是DatabaseTool的连接,所以我们可以通过DatabaseTool来关闭
	}
	
	public void addTeacher(Teacher teacher) {//这段代码写的好差
		PreparedStatement ps=null;
		if(teacher.getOLEPhoto()!=null){
			try{
				//ps=conDB.prepareStatement("insert into Teacher(teacherid,teachername,teacherkey" +
					//	",title,sex,classid,photo) values(?,?,?,?,?,?,?)");
					ps=conDB.prepareStatement("insert into Teacher(teacherid,teachername,teacherkey" +
					",title,sex,classid,photo) values(?,?,?,?,?,?,?)");
					ps.setString(1, teacher.getTeacherID());
					ps.setString(2, teacher.getTeacherName());
					ps.setString(3, teacher.getTeacherKey());
					ps.setString(4, teacher.getTitle());
					ps.setString(5, teacher.getSex());
					ps.setString(6, teacher.getClassID());
					ps.setBinaryStream(7, teacher.getOLEPhoto(), teacher.getOLEPhoto().available());
					//上面没有捕抓异常,因为在它之前的类声明已经捕抓了,不再抛出异常
					//ps.setString(8, teacher.getBlant());
					ps.executeUpdate();
			}catch(SQLException e){
				e.printStackTrace();
				JOptionPane.showMessageDialog(null, "对不起,已经存在该老师ID,请重新输入!");
			}catch(IOException ex){
				ex.printStackTrace();
				JOptionPane.showMessageDialog(null, "对不起,获取图片失败,由于选择路径不对,请重新选择!");
			}finally{
				DatabaseTool.closeStatement(ps);
			}
		}else{
			try{
				ps=conDB.prepareStatement("insert into Teacher(teacherid,teachername,teacherkey" +
				",title,sex,classid) values(?,?,?,?,?,?)");
				ps.setString(1, teacher.getTeacherID());
				ps.setString(2, teacher.getTeacherName());
				ps.setString(3, teacher.getTeacherKey());
				ps.setString(4, teacher.getTitle());
				ps.setString(5, teacher.getSex());
				ps.setString(6, teacher.getClassID());
				//上面没有捕抓异常,因为在它之前的类声明已经捕抓了,不再抛出异常
				//ps.setString(8, teacher.getBlant());
				ps.executeUpdate();		
			}catch(SQLException ew){
				ew.printStackTrace();
				JOptionPane.showMessageDialog(null, "对不起,已经存在该老师ID,请重新输入!");
			}finally{
				DatabaseTool.closeStatement(ps);
				//连接conDB不应该在这里关闭,因为还没有提交
			}
		}
	}
	
	public void modifyClassTeacher(Teacher teacher,String classid) {
		PreparedStatement ps=null;
		if(teacher.getOLEPhoto()!=null){
			try{
				ps=conDB.prepareStatement("update Teacher set teacherid=?,teachername=?,teacherkey=?" +
						",sex=?,title=?,classid=?,photo=? where classid=?");
				ps.setString(1, teacher.getTeacherID());
				ps.setString(2, teacher.getTeacherName());
				ps.setString(3, teacher.getTeacherKey());
				ps.setString(4, teacher.getTitle());
				ps.setString(5, teacher.getSex());
				ps.setString(6, teacher.getClassID());
				ps.setBinaryStream(7, teacher.getOLEPhoto(), teacher.getOLEPhoto().available());
				ps.setString(8, classid);
				ps.executeUpdate();
			}catch(SQLException e){
				e.printStackTrace();
				JOptionPane.showMessageDialog(null, "对不起,已经存在该老师ID,请重新输入!");
			}catch(IOException ep){
				ep.printStackTrace();
				JOptionPane.showMessageDialog(null, "对不起,获取图片失败,由于选择路径不对,请重新选择!");
			}finally{
				DatabaseTool.closeStatement(ps);
			}
		}else{
			try{
				ps=conDB.prepareStatement("update Teacher set teacherid=?,teachername=?,teacherkey=?" +
						",sex=?,title=?,classid=? where classid=?");
				ps.setString(1, teacher.getTeacherID());
				ps.setString(2, teacher.getTeacherName());
				ps.setString(3, teacher.getTeacherKey());
				ps.setString(4, teacher.getTitle());
				ps.setString(5, teacher.getSex());
				ps.setString(6, teacher.getClassID());
				ps.setString(7, classid);
				ps.executeUpdate();
			}catch(SQLException e){
				e.printStackTrace();
				JOptionPane.showMessageDialog(null, "对不起,已经存在该老师ID,请重新输入!");
			}finally{
				DatabaseTool.closeStatement(ps);
			}
		}
	}
	
	public void delClassTeacher(int teacherid){
		PreparedStatement ps=null;
		try{
			ps=conDB.prepareStatement("delete from Teacher where teacherid=?");
			ps.setInt(1, teacherid);
			ps.executeUpdate();
		}catch(SQLException e){
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "对不起,该学号不存在,可能已删除!");
		}finally{
			DatabaseTool.closeStatement(ps);
		}
	}
	//我一开始是将下面的参数设为teacherid,后面发现错了
	public Teacher getTeacher(String classid){
		byte[] by=new byte[1000*1024];
		PreparedStatement ps=null;
		ResultSet rs=null;
		Teacher teacher=null;
		try{
			ps=conDB.prepareStatement("select * from Teacher where classid=?");
			ps.setString(1, classid);
			rs=ps.executeQuery();
			if(rs.next()){
				teacher=new Teacher();
				teacher.setTeacherID(rs.getString("teacherid"));
				teacher.setTeacherName(rs.getString("teachername"));
				teacher.setTeacherKey(rs.getString("teacherkey"));
				//这里很神奇,下面两行代码我是调换了的,发现错了,因为跟数据库放置顺序不同
				teacher.setTitle(rs.getString("title"));
				teacher.setSex(rs.getString("sex"));
				//我还想为什么这里会错了,如果之前没有插入图片就会错,因为Input会是null,所以加多一个判断
				ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
			    int ch;
			    InputStream input=rs.getBinaryStream("photo");
			    if(input!=null){
				    while ((ch = input.read()) != -1)
				       bytestream.write(ch);
				    by=bytestream.toByteArray();
					teacher.setOLEPhoto(new ByteArrayInputStream(by));
			    }
				teacher.setClassID(rs.getString("classid"));
			}
		}catch(SQLException e){
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "对不起,获取老师资料失败,可能该班级老师已经给删除!");
		}catch(IOException ex){
			ex.printStackTrace();
			JOptionPane.showMessageDialog(null, "对不起,获取老师相片失败,文件可能损坏!");
		}finally{
			DatabaseTool.closeResultSet(rs);
			DatabaseTool.closeStatement(ps);
		}
		return teacher;
	}
	
	public Teacher getTeacherid(String teacherid){
		byte[] by=new byte[1000*1024];
		PreparedStatement ps=null;
		ResultSet rs=null;
		Teacher teacher=null;
		try{
			ps=conDB.prepareStatement("select * from Teacher where teacherid=?");
			ps.setString(1, teacherid);
			rs=ps.executeQuery();
			if(rs.next()){
				teacher=new Teacher();//为什么在这里才分配空间,因为如果查询老师不成功也可以返回null,进行判断,如登录时
				teacher.setTeacherID(rs.getString("teacherid"));
				teacher.setTeacherName(rs.getString("teachername"));
				teacher.setTeacherKey(rs.getString("teacherkey"));
				teacher.setTitle(rs.getString("title"));
				teacher.setSex(rs.getString("sex"));
				ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
			    int ch;
			    InputStream input=rs.getBinaryStream("photo");
			    if(input!=null){
				    while ((ch = input.read()) != -1)
				       bytestream.write(ch);
				    by=bytestream.toByteArray();
					teacher.setOLEPhoto(new ByteArrayInputStream(by));
			    }
				teacher.setClassID(rs.getString("classid"));
			}
		}catch(SQLException e){
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "没有该用户");
		}catch(IOException ex){
			ex.printStackTrace();
			JOptionPane.showMessageDialog(null, "获取图片出错");
		}finally{
			DatabaseTool.closeResultSet(rs);
			DatabaseTool.closeStatement(ps);
		}
		return teacher;
	}
	
	public List<Teacher> getAllTeacher(){
		PreparedStatement ps=null;
		ResultSet rs=null;
		List<Teacher> teacherlist=null;
		try{
			ps=conDB.prepareStatement("select * from Teacher");
			rs=ps.executeQuery();
			teacherlist=new ArrayList<Teacher>();
			Teacher teacher=null;
			while(rs.next()){
				teacher=new Teacher();
				teacher.setTeacherID(rs.getString("teacherid"));
				teacher.setTeacherName(rs.getString("teachername"));
				teacher.setTeacherKey(rs.getString("teacherkey"));
				teacher.setSex(rs.getString("sex"));
				teacher.setTitle(rs.getString("title"));
				teacher.setOLEPhoto(rs.getBinaryStream("photo"));
				teacher.setClassID(rs.getString("classid"));
				teacher.setBlant(rs.getString("blant"));
				teacherlist.add(teacher);
			}
		}catch(SQLException e){
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "获取老师列表失败");
		}finally{
			DatabaseTool.closeResultSet(rs);
			DatabaseTool.closeStatement(ps);
		}
		return teacherlist;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -