jdbc实现学生管理系统

概述

在Java学习过程中,将学到的知识综合到一起使用是一个必要的过程,所以,来巩固一下java调用数据库的相关的知识。

新建的项目采用的是MVC模式构建的,使用的IDEA + mysql5.6.12 + jdk1.8.0_71, 针对学生信息的增删改查开发的一个简单的管理系统(无界面)。

简介

简单介绍一下项目目录结构

包名作用
controller用于存放操作数据的类,在View和数据库中间起着连接的作用
dao用于存放操作数据库数据的类
db用于得到数据库连接
entity用于存放项目中需要用到的模型的实体类

开发流程

第一步:新建数据库和表

我们实现的是基本的学生信息管理系统,那么主要对象是学生,次要对象时管理员,那么他们的属性分别是:

学生

(名字、性别、年龄、电话、地址)
 
  name varchar(20) not null,
  sex varchar(5) not null,
  age int not null,
  phone varchar(11) not null,
  address varchar(20) not null

管理员

(账号、密码)

 account varchar(20) not null,
 paw varchar(20) not null
第二步:创建工程,导入jdbc的jar包

image

此时,我们编写测试连接的代码,来测试一下是否可以成功连接数据库。

//静态块初始化
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = (Connection) DriverManager.getConnection(url,username,password);
			System.out.println("连接成功!");
        } catch (Exception e) {
            System.out.println("连接失败!");
            e.printStackTrace();
        }
    }

    //得到连接实例的引用
    public static Connection getConnection(){
        return conn;
    }

    //测试代码
    public static void main(String[] args) {
        //测试连接
        Connection connection = DbConnectUtil.getConnection();

    }

运行试试

连接成功!

Process finished with exit code 0

可以看到,数据库连接成功了。

第三步:实现相应表的数据的增删改查的方法的封装
管理员表的相关操作

新增信息

 public static boolean addManagerInfo(Connection connection, Manager manager) {
        boolean result;
        String mysql = "insert into number(account,paw) values(?,?)";
        PreparedStatement ptt = null;
        try {
            ptt = (PreparedStatement) connection.prepareStatement(mysql);
            ptt.setString(1, manager.getAccount());
            ptt.setString(2, manager.getPsw());
            result = ptt.execute();
        } catch (SQLException e) {
            System.out.println("添加管理员信息失败");
            e.printStackTrace();
            result = false;
        }finally {
            try {
                ptt.close();
                connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return result;
    }

测试一下

public static void main(String[] args) {
        Connection connection = DbConnectUtil.getConnection();
        //添加管理员
        ManagerDao.addManagerInfo(connection,new Manager("123456","123456"));

    }

我们看下数据库里面是否添加成功了

mysql> select * from number;
+----+---------+--------+
| id | account | paw    |
+----+---------+--------+
|  1 | 123456  | 123456 |
+----+---------+--------+
1 row in set (0.02 sec)

可以看到,数据添加成功了。

下面我们实现查询的操作

    public static List<Manager> queryAllManager(Connection connection) {
        Statement stt = null;
        ResultSet rs = null;
        List<Manager> managers = new ArrayList<>();
        try {
            stt = (Statement) connection.createStatement();
            rs=stt.executeQuery("select * from number");
            while(rs.next()){
                int id = rs.getInt("id");
                String account = rs.getString("account");
                String psw = rs.getString("paw");
                Manager manager = new Manager(id,account,psw);
                managers.add(manager);
            }
        } catch (SQLException e) {
            System.out.println("管理员全部信息查询失败");
            e.printStackTrace();
        }finally{
            try {
                stt.close();
                rs.close();
                connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return managers;
    }

测试一下

    public static void main(String[] args) {
        Connection connection = DbConnectUtil.getConnection();
        List<Manager> managers = ManagerDao.queryAllManager(connection);
        for (Manager manager : managers) {
            System.out.println(manager.toString());
        }
    }

看下运行结果

连接成功!
Manager{id=1, account='123456', psw='123456'}

Process finished with exit code 0

可以看到,查询出来我们刚添加的那条信息了。

我们再来试试修改。

    public static boolean updateManagerInfo(Connection connection, Manager newManager) {
        boolean result;
        String sql="update number set account=?,paw=? where id = ?";
        PreparedStatement pst = null;
        try {
            pst=(PreparedStatement) connection.prepareStatement(sql);
            pst.setString(1, newManager.getAccount());
            pst.setString(2, newManager.getPsw());
            pst.setInt(3, newManager.getId());
            result = pst.execute();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            result = false;
        } finally {
            try {
                pst.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return result;
    }

测试一下

    public static void main(String[] args) {
        Connection connection = DbConnectUtil.getConnection();
        List<Manager> managers = ManagerDao.queryAllManager(connection);
        for (Manager manager : managers) {
            System.out.println(manager.toString());
        }
        Manager manager = managers.get(0);
        manager.setAccount("111111");
        manager.setAccount("aaaaaa");
        ManagerDao.updateManagerInfo(connection,manager);
    }

看看修改结果

mysql> select * from number;
+----+---------+--------+
| id | account | paw    |
+----+---------+--------+
|  1 | aaaaaa  | 123456 |
+----+---------+--------+
1 row in set (0.02 sec)

可以看到,修改也是没有问题的。

最后,我们实现一下删除的操作

    public static boolean deleteManagerInfo(Connection connection, int id) {
        boolean result;
        String sql="delete from number where id=?";
        PreparedStatement pst = null;
        try {
            pst = (PreparedStatement) connection.prepareStatement(sql);
            pst.setInt(1, id);
            result = pst.execute();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            result = false;
        } finally {
            try {
                pst.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return result;
    }

测试一下

    public static void main(String[] args) {
        Connection connection = DbConnectUtil.getConnection();
        List<Manager> managers = ManagerDao.queryAllManager(connection);
        for (Manager manager : managers) {
            System.out.println(manager.toString());
        }
        Manager manager = managers.get(0);
        ManagerDao.deleteManagerInfo(connection,manager.getId());
    }

看看结果

mysql> select * from number;
Empty set

基本的增删改查的功能我们就实现完了。

结合这些基本代码,我们可以完成我们的小项目。

运行截图

管理员登录

操作菜单

异常输入的处理

新增学生

查询学生信息

删除学生信息

修改

那么整体的项目到这里就算完成了。

需要代码的或者 需要帮忙协助开发的 请加QQ:1170932205 ,

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值