版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40788630/article/details/83185482
一、数据访问层
数据访问层是用来连接数据库及操作数据库中的数据,首先要在eclipse中导入相应的sql驱动包在网上可以下载
创建名为SchoolManager的项目,在src路径下创建aynu.school包,并在其中创建BaseDao类,
package aynu.school;
import java.sql.*;
import com.sun.xml.internal.bind.v2.model.core.ID;
public class BaseDao {
public final static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver.class";//数据库驱动
public final static String url = "jdbc:sqlserver://localhost: 1433;DataBaseName=school";//url
public final static String dbname="sa"; //数据库名
public final static String dbpass="itcast"; //数据库密码
public Connection getConn() throws ClassNotFoundException,SQLException{//此方法为连接数据库的方法
Class.forName(driver); //注册驱动
Connection conn = DriverManager.getConnection(url, dbname, dbpass); //获得数据库连接
return conn; //返回数据库连接
}
public ResultSet result(String sql,String[] param) {//此方法为获得结果集的方法
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = getConn(); //获得数据库连接
ps= conn.prepareStatement(sql); //得到prepareStatement对象
for(int i=0;i<param.length;i++) {
ps.setString(i+1,param[i] );
}
rs= ps.executeQuery();
}catch(Exception e) {
e.printStackTrace();
}finally {
}
return rs;
}
public void closeAll(Connection conn ,PreparedStatement ps,ResultSet rs) {//关闭数据库,以释放资源
if(rs != null) { //如果rs不为空,关闭rs
try {
rs.close();
}catch (SQLException e) {
e.printStackTrace();
}
}
if(ps != null) { //如果ps不为空,关闭ps
try {
ps.close();
}catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null) { //如果conn不为空,关闭conn
try {
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}
}
}
public boolean executeSQL(String sql,String[] param) { //用于执行sql的方法
Connection conn = null;
PreparedStatement ps = null;
int num=0;
boolean ban = true;
try {
conn = getConn();//获得数据库连接
ps = conn.prepareStatement(sql);//获得prepareStatement对象
if (param != null) {
for(int i=0;i<param.length;i++) {
ps.setString(i+1, param[i]);
}
}
num = ps.executeUpdate(); //执行SQL语句
if(num!=1) {
ban=false;
}else {
ban=true;
}
}catch (ClassNotFoundException e) {
e.printStackTrace(); //处理ClassNotFoundException异常
}catch (SQLException e) {
e.printStackTrace(); //处理SQLException异常
}finally {
closeAll(conn, ps, null); //释放资源
}
return ban;
}
}
二、业务处理层
业务处理层用于相应的业务逻辑处理,他需要引用数据库访问类的数据库操作,例如在系统中对成绩的操作包括查看成绩列表,添加成绩列表、修改和删除成绩列表。对这些数据执行的操作都可以在业务逻辑层进行,业务逻辑层将直接供最终的应用程序使用,
1、创建学生信息管理的业务处理层
创建StudentManager类并使该类继承自抽象类AbstractTableModel,此抽象类为TableModel接口中的大多数方法提供默认实现,同时继承该抽象类也能生成表格组件
package aynu.school;
import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
public class StudentManager extends AbstractTableModel{
private BaseDao base;
private ResultSet rs = null;
private Vector rows,colu;//创建表格相关数据
//获得表哥中的行数
public int getRowCount() {
return this.rows.size();
}
public Object getValueAt(int rowIndex,int columnIndex) {
return ((Vector)this.rows.get(rowIndex)).get(columnIndex);
}
//获取表格中的列的数量
public int getColumnCount() {
return this.colu.size();
}
public String getColu(int column) {
return (String) this.colu.get(column);
}
public void addStudent(String sql,String[] param) {//获取学生信息的方法
colu = new Vector();
//添加到列名
colu.add("学号");
colu.add("姓名");
colu.add("性别");
colu.add("年龄");
colu.add("生日");
colu.add("电话");
rows=new Vector();
try {
base = new BaseDao();
rs=base.result(sql, param);
while(rs.next()) {
Vector row=new Vector<>();
row.add(rs.getString(1));
row.add(rs.getString(2));
row.add(rs.getString(3));
row.add(rs.getString(4));
row.add(rs.getString(5));
row.add(rs.getString(6));
}
}catch (Exception e) {
e.printStackTrace();
}finally {
base.closeAll(null, null, null);
}
}
public boolean updateStudent(String sql,String[] param) {//创建进行修改、添加、删除、查询的方法
base=new BaseDao(); //创建BaseDao类的对象
return base.executeSQL(sql, param); //调用executeSQL方法
}
}
2、创建课程信息管理的业务处理层
创建StudentManager类并使该类继承自抽象类AbstractTableModel,此抽象类为TableModel接口中的大多数方法提供默认实现,同时继承该抽象类也能生成表格组件
package aynu.school;
import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
public class CourseManager extends AbstractTableModel{
private BaseDao base;
private ResultSet rs = null;
private Vector rows,colu;//创建表格相关数据
//获得表哥中的行数
public int getRowCount() {
return this.rows.size();
}
public Object getValueAt(int rowIndex,int columnIndex) {
return ((Vector)this.rows.get(rowIndex)).get(columnIndex);
}
//获取表格中的列的数量
public int getColumnCount() {
return this.colu.size();
}
public String getColu(int column) {
return (String) this.colu.get(column);
}
public void addCourse(String sql,String[] param) {//获取课程信息的方法
colu = new Vector();
//添加到列名
colu.add("课程号");
colu.add("课程名称");
colu.add("课程类型");
colu.add("课程内容");
rows=new Vector();
try {
base = new BaseDao();
rs=base.result(sql, param);
while(rs.next()) {
Vector row=new Vector<>();
row.add(rs.getString(1));
row.add(rs.getString(2));
row.add(rs.getString(3));
row.add(rs.getString(4));
}
}catch (Exception e) {
e.printStackTrace();
}finally {
base.closeAll(null, null, null);
}
}
public boolean updateCourse(String sql,String[] param) {//创建进行修改、添加、删除、查询的方法
base=new BaseDao(); //创建BaseDao类的对象
return base.executeSQL(sql, param); //调用executeSQL方法
}
}
3、创建成绩信息管理的业务处理层
创建StudentManager类并使该类继承自抽象类AbstractTableModel,此抽象类为TableModel接口中的大多数方法提供默认实现,同时继承该抽象类也能生成表格组件
package aynu.school;
import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
public class GradeMarager extends AbstractTableModel{
private BaseDao base;
private ResultSet rs = null;
private Vector rows,colu;//创建表格相关数据
//获得表哥中的行数
public int getRowCount() {
return this.rows.size();
}
public Object getValueAt(int rowIndex,int columnIndex) {
return ((Vector)this.rows.get(rowIndex)).get(columnIndex);
}
//获取表格中的列的数量
public int getColumnCount() {
return this.colu.size();
}
public String getColu(int column) {
return (String) this.colu.get(column);
}
public void addGrade(String sql,String[] param) {//获取成绩信息的方法
colu = new Vector();
//添加到列名
colu.add("学号");
colu.add("课程号");
colu.add("成绩");
colu.add("学期");
rows=new Vector();
try {
base = new BaseDao();
rs=base.result(sql, param);
while(rs.next()) {
Vector row=new Vector<>();
row.add(rs.getString(1));
row.add(rs.getString(2));
row.add(rs.getString(3));
row.add(rs.getString(4));
}
}catch (Exception e) {
e.printStackTrace();
}finally {
base.closeAll(null, null, null);
}
}
public boolean updateGrade(String sql,String[] param) {//创建进行修改、添加、删除、查询的方法
base=new BaseDao(); //创建BaseDao类的对象
return base.executeSQL(sql, param); //调用executeSQL方法
}
}