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”,就可以查看结果
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/15620737.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?