Java连接MySQL8.0样例代码

代码功能: 针对MySQL8.0,可以动态传入数据库连接信息(IP、端口、数据库、用户、密码)、以及需要执行查询SQL。

注意:由于代码中打印表中的数据,所以最后在Main方法传入的参数是需要是查询的SQL。

 

package com.mysql.test;

import java.sql.*;

public class RdsTest {

    public   String host = null;
    public   String port = null;
    public   String url = null;
    public   String user = null;
    public   String password = null;
    public   String database = null;
    public   String sql = null;

    private  PreparedStatement ps = null;
    private  Connection conn = null;
    private  ResultSet rs = null;

    // 处理Main方法传入的参数
    private  boolean parseArgs(String[] args) {
        for(int i = 0; i < args.length;) {
            if (args[i].equals("--host")) {
                host = args[i+1];
                i += 2;
            } else if (args[i].equals("--port")) {
                port = args[i+1];
                i += 2;
            } else if (args[i].equals("--database")) {
                database = args[i+1];
                i += 2;
            } else if (args[i].equals("--user")) {
                user = args[i+1];
                i += 2;
            } else if (args[i].equals("--password")) {
                password = args[i+1];
                i += 2;
            } else if (args[i].equals("--sql")) {
                sql = args[i+1];
                i += 2;
            } else {
                return false;
            }
        }
        if (host == null || port == null || database == null ||
                user == null || password == null || sql == null) {
            return false;
        }
        return true;
    }

    //如果没有传参或者传参错误,打印传参的格式
    private  void printUsage() {
        System.err.println("Usage: RdsTest [options]");
        System.err.println("\t--host\thost ip");
        System.err.println("\t--port\tport");
        System.err.println("\t--database\tdatabase");
        System.err.println("\t--user\tuser");
        System.err.println("\t--password\tpassword");
        System.err.println("\t--sql\tsql");
    }
    
    //获取Connection连接对象的方法,使用static方便之后在其他类中调用
    public  Connection getConn() {
        try {
            String name = "com.mysql.cj.jdbc.Driver";
            Class.forName(name);
            conn = DriverManager.getConnection(url, user, password);//获取连接
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        return conn;
    }

    //关闭资源的方法
    public  void close() {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (ps != null) {
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

    //执行查询,打印结果
    public  void  executesql(){
        url = "jdbc:mysql://" + host + ":" + port + "/" + database + "?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT";
        Connection myconn = getConn();

        try {
            ps = myconn.prepareStatement(sql);
            rs = ps.executeQuery();
            while (rs.next()) {
                String uid = rs.getString(1);
                String ufname = rs.getString(2);
                System.out.println(uid + "\t" + ufname + "\t");
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            close();
        }

    }

    // Main方法入口
    public static void main(String[] args) throws SQLException {

        RdsTest  rds = new RdsTest();
        if (!rds.parseArgs(args)) {
            rds.printUsage();
            System.exit(1);
        }
        // 执行SQL
        rds.executesql();

    }

}

 

执行时需要传入参数:

例如:

--host localhost --port 3306 --database test --user root --password  Root@1234 --sql  "select * from my_test"

如果不传参数或者少传参数,会报如下错误:

 

IntelliJ IDEA 给Main方法入口传参:

在编辑器中右键"more Run/Debug"——> "Modify Run Configuration" 

 

 

在下图中位置,添加传入的参数,然后点击“Apply”,然后点击“OK”。

--host localhost --port 3306 --database test --user root --password  Root@1234 --sql  "select * from my_test" 

 

 

 这时再执行 “Run”,就可以查看结果

 

posted @ 2021-11-29 18:39  业余砖家  阅读(379)  评论(0编辑  收藏  举报