代码功能: 针对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”,就可以查看结果

Java连接MySQL8.0样例代码的更多相关文章

  1. JAVA连接MYSQL8.0问题

    title: java连接mysql8.0问题 date: 2018-07-08 19:27:38 updated: tags: description: keywords: comments: im ...

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

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

  3. Java 连接 Hive的样例程序及解析

    以后编程基于这个样例可节省查阅API的时间. private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriv ...

  4. Java连接MySQL8.0以上版本数据库方式

    MySQL 8.0 开始数据库相比常用的 5.X 版本发生了比较大的变化,我们在连接数据库的过程中许多地方也要发生一些变化. 总结一下,想要利用 mysql-connector-java 与 MySQ ...

  5. java 线程、线程池基本应用演示样例代码回想

    java 线程.线程池基本应用演示样例代码回想 package org.rui.thread; /** * 定义任务 * * @author lenovo * */ public class Lift ...

  6. java文件夹相关操作 演示样例代码

    java文件夹相关操作 演示样例代码 package org.rui.io; import java.io.File; import java.io.FilenameFilter; import ja ...

  7. java 又一次抛出异常 相关处理结果演示样例代码

    java 又一次抛出异常 相关处理结果演示样例代码 package org.rui.ExceptionTest; /** * 又一次抛出异常 * 在某些情况下,我们想又一次掷出刚才产生过的违例,特别是 ...

  8. java I/O进程控制,重定向 演示样例代码

    java I/O进程控制,重定向 演示样例代码 package org.rui.io.util; import java.io.*; /** * 标准I/O重定向 */ public class Re ...

  9. Java 18 新增@snipppet标签,注释中写样例代码更舒适了!

    在这次的Java 18中,新增了一个@snipppet标签,主要用于JavaDoc中需要放示例代码的场景.其实在Java 18之前,已经有一个@code标签,可以用于在JavaDoc中编写小段的代码内 ...

  10. Linux下用OTL操作MySql(包含自己封装的类库及演示样例代码下载)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/ClamReason/article/details/23971805 首先重点推荐介绍otl介绍及使 ...

随机推荐

  1. C#使用正则表达式检查字符串中重复出现的词

    private void button1_Click(object sender, EventArgs e) { MatchCollection matches =//使用正则表达式查找重复出现单词的 ...

  2. Go 汇编学习笔记

    0.前言 学习 Go 离不开看源码,源码又包含大量汇编代码,离开汇编是学不好 Go 的.同样,离开汇编去学习计算机是不完整的,汇编是基石,是离操作系统和硬件最近的一层. 虽然之前学过一点 Go 汇编, ...

  3. Mysql有布尔(BOOL)类型吗

    转载请注明出处: 在MySQL中,没有专门的Boolean数据类型.相反,MySQL中使用TINYINT(1)来代表布尔类型,其中1表示真(True),0表示假(False).在MySQL中,TINY ...

  4. 例2.6 设计一个高效的算法,从顺序表L中删除所有值为x的元素,要求时间复杂度为0(n)空间复杂度为0(1)。

    1.题目 例2.6 设计一个高效的算法,从顺序表L中删除所有值为x的元素,要求时间复杂度为0(n)空间复杂度为0(1). 2.算法思想 3.代码 void DeleteX(SeqList LA, Se ...

  5. electron打包,使用electron-packager

    构建项目可以使用electron-forge构建,但是这个东西打包比较坑,mac运行报错,win下会有缓存机制,也就是热更新无效 所以选择使用electron-packager打包 sudo npm ...

  6. [转帖]oracle查询表变化量

    根据变化量,可确定表的繁忙度,以及作为判断可能数据增长的对象. select obj.owner, obj.object_name, to_char(sn.BEGIN_INTERVAL_TIME,'y ...

  7. [转帖]nginx 剖析 request_time和upstream_response_time的误区、区别

    https://cloud.tencent.com/developer/article/1767981 首先,澄清一个误区 upstream_response_time必须在upstream配置时才能 ...

  8. 极简版本Clickhouse监控步骤

    极简版本Clickhouse监控步骤 背景 昨天处理了 鲲鹏920 上面的Clickhouse 的基于Docker的安装与部署 今天想着能够继续处理一下 增加监控信息 能够实现对clickhouse使 ...

  9. ext4 扩容磁盘的方式方法

    ext4 扩容磁盘的方式方法 背景 前期一直处理xfs,lvm磁盘的扩容 很少处理ext4的磁盘扩容 今天发现自己竟然对这一块有盲区. 晚上回家自己学习研究了会儿, 发现知识点还挺多 所以总结一下. ...

  10. [转帖] 如何kill一条TCP连接?

    https://www.cnblogs.com/codelogs/p/16838850.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 如果你的程序写 ...