• java连接mysql8.0.28数据库实例


    首先说明,由于是8版本的数据库,所以配置类的写法上与5版本的有所区别,需要注意,同时用idea或eclipse时需要导入jar包,jar包的下载链接:

    https://dev.mysql.com/get/archives/mysql-connector-java-8.0/mysql-connector-java-8.0.28.zip

    如果想要下载8版本不同的jar包只需要修改8.0.28为指定版本即可。

    idea导入jar包的方法如下:

     

     

     

     

     

     

     

     

     

     然后是代码部分,首先先建表:

    复制代码
    CREATE TABLE `train_message` (
                                     `id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
                                     `train_name` varchar(20) NOT NULL COMMENT '列车名',
                                     `origin` varchar(30) NOT NULL COMMENT '始发地',
                                     `terminal` varchar(30) NOT NULL COMMENT '终到地',
                                     `departure_time` timestamp NOT NULL COMMENT '出站时间',
                                     `state` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '正常' COMMENT '列车状态',
                                     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb3
    复制代码

    然后创建连接的配置类DbConfig.java,localhost是本机的ip地址,如果有服务器就填服务器的ip地址,message是数据库的名字,这里一张图说下有很多新手误解的名字

     

     

     

     

     

     

    复制代码
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    /**
     *  数据库配置类
     *  @author 景苒
     */
    public class DbConfig {
        public Connection dbConfig() throws SQLException {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
            }catch (Exception e) {
                System.out.print("加载驱动失败!");
                e.printStackTrace();
            }
            String url = "jdbc:mysql://localhost:3306/message?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true";
            String user = "root";
            String password = "123456";
            return DriverManager.getConnection(url, user, password);
        }
    }
    复制代码

    然后写下主函数Main.java,这里主函数的函数体可以在最后再写,需要什么功能就把注释打开就好,快捷注释的方法,选中这句话,按ctrl加/,就能全注释了。

    复制代码
    import java.sql.SQLException;
    
    /**
     * 主函数,调用功能
     * @author 景苒
     */
    public class Main {
        public static void main(String[] args) throws SQLException {
    //        new GetMessage().getMessage();
    //        new UpdateTrainState().updateTrainState();
    //        new InsertTrain().insertTrain();
    //        new GetNumber().getNumber();
        }
    }
    复制代码

    然后是每个的功能:

    1.查询沈阳到武汉的所有列车信息,按出发时间先后排序

    建GetMessage.java类

    复制代码
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    /**
     * 查询沈阳到武汉的所有列车信息,按出发时间先后排序
     * @author 景苒
     */
    public class GetMessage {
        public void getMessage() throws SQLException {
            Connection con = new DbConfig().dbConfig();
            String sql = "select * from `train_message` where origin = ? and terminal = ? ORDER BY departure_time ASC";
            String origin = "沈阳";
            String terminal = "武汉";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, origin);
            ps.setString(2, terminal);
            ResultSet rs = ps.executeQuery();
            try {
                while (rs.next()) {
                    System.out.println("列车名:" + rs.getString("train_name")
                            + " 始发站:" + rs.getString("origin")
                            + " 终到站:" + rs.getString("terminal")
                            + " 出发时间:" + rs.getString("departure_time")
                            + " 列车状态:" + rs.getString("state"));
                }
            }catch (SQLException e) {
                e.printStackTrace();
            }finally {
                ps.close();
                con.close();
            }
        }
    }
    复制代码

    2.修改T2255列车的状态为停运

    建UpdateTrainState.java类

    复制代码
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    /**
     * 修改T2255列车的状态为停运
     * @author 景苒
     */
    public class UpdateTrainState {
        public void updateTrainState() throws SQLException {
            Connection con = new DbConfig().dbConfig();
            String sql = "UPDATE `train_message` SET state = '停运' WHERE train_name = 'T2255'";
            Statement statement = con.createStatement();
            try {
                int i = statement.executeUpdate(sql);
                if (i > 0) {
                    System.out.println("更新成功");
                }else {
                    System.out.println("更新失败");
                }
            }catch (SQLException e) {
                e.printStackTrace();
            }finally {
                statement.close();
                con.close();
            }
        }
    }
    复制代码

    3.新增一辆列车信息(自己输入)

     建InsertTrain.java类

    复制代码
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.Scanner;
    
    /**
     * 新增一辆列车信息(自己输入)
     * 始发时间为timestamp类型,输入时需要确保格式正确,如:2019-01-01 00:00:00
     * @author 景苒
     */
    public class InsertTrain {
        public void insertTrain() throws SQLException {
            Connection con = new DbConfig().dbConfig();
            Scanner scanner = new Scanner(System.in);
            String sql = "insert into `train_message` values(null, ?, ?, ?, ?, default)";
            System.out.print("请输入列车名:");
            String trainName = scanner.nextLine();
            System.out.print("请输入始发站:");
            String origin = scanner.nextLine();
            System.out.print("请输入终到站:");
            String terminal = scanner.nextLine();
            System.out.print("请输入始发时间:");
            String departureTime = scanner.nextLine();
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, trainName);
            ps.setString(2, origin);
            ps.setString(3, terminal);
            ps.setString(4, departureTime);
            try {
                int i = ps.executeUpdate();
                if (i > 0) {
                    System.out.println("添加成功");
                }else {
                    System.out.println("添加失败");
                }
            }catch (SQLException e) {
                e.printStackTrace();
            }finally {
                ps.close();
                con.close();
            }
        }
    }
    复制代码

    4.查询状态为正常的列车数量

     建GetNumber.java类

    复制代码
    import java.sql.Statement;
    
    /**
     * 查询状态为正常的列车数量
     * @author 景苒
     */
    public class GetNumber {
        public void getNumber() throws SQLException {
            Connection con = new DbConfig().dbConfig();
            String sql = "select count(state) from `train_message` where state = '正常'";
            Statement statement = con.createStatement();
            try {
                ResultSet resultSet = statement.executeQuery(sql);
                while (resultSet.next()) {
                    System.out.println("状态为正常的列车数量为:" + resultSet.getInt(1));
                }
            }catch (SQLException e){
                e.printStackTrace();
            }finally {
                statement.close();
                con.close();
            }
        }
    }
    复制代码

    最后附上navicat的属性结构图和样例插入的语句

     

     

     数据根据自己需求自行写入几个就行,以上就是java连接mysql数据库的实例代码,eclipse也大同小异,就导入jar包的方式不同。

     

  • 相关阅读:
    都说DevOps落地难,到底难在哪里?也许你还没找到套路
    go 函数
    堆专题4 堆排序
    。。。。。。。。。
    微软发现影响 Linux 和 macOS系统的 ncurses 库漏洞
    代码圈复杂度治理小结
    centos7.6.1810 华为arm架构鲲鹏服务器 离线安装mysql5.7.27
    (测评补单)Lazada、Shopee、Zalora:探索东南亚电商市场
    linux网络通信(TCP)
    Termux安装数据库(手机安装数据库)...
  • 原文地址:https://www.cnblogs.com/jingran/p/16120104.html