本文介绍如何在Java中通过MySQL JDBC连接AnalyticDB for MySQL集群。

MySQL JDBC驱动版本

AnalyticDB for MySQL支持以下版本的MySQL JDBC驱动。

5.0版本系列:5.0.2,5.0.3,5.0.4,5.0.5,5.0.7,5.0.8。

5.1版本系列:5.1.1,5.1.2,5.1.3,5.1.4,5.1.5,5.1.6,5.1.7,5.1.8,5.1.11,5.1.12,5.1.13,5.1.14,5.1.15,5.1.16,5.1.17,5.1.18,5.1.19,5.1.20,5.1.21,5.1.22,5.1.23,5.1.24,5.1.25,5.1.26,5.1.27,5.1.28,5.1.29,5.1.31,

5.1.32, 5.1.33, 5.1.34。

MySQL 8.0。

注意事项

Java中创建MySQL JDBC连接依赖于MySQL-JDBC驱动包,您需要手动将MySQL-JDBC驱动包(mysql-connector-java-x.x.x.jar)加入到CLASSPATH中,否则无法创建MySQL JDBC连接。

不带重试的JDBC连接示例

您可以在业务系统的Java代码中添加以下代码,通过MySQL JDBC连接AnalyticDB for MySQL数据库。

Connection connection = null;

Statement statement = null;

ResultSet rs = null;

try {

Class.forName("com.mysql.jdbc.Driver");

//adb_url是AnalyticDB for MySQL集群的连接地址URL,可以在控制台的集群信息页面获取连接URL,3306是端口号。

//db_name是AnalyticDB for MySQL集群中的数据库名称。

String url = "jdbc:mysql://adb_url:3306/db_name?useUnicode=true&characterEncoding=UTF-8";

Properties connectionProps = new Properties();

//account_name是AnalyticDB for MySQL集群中的用户账号:高权限账号或者普通账号。

connectionProps.put("user", "account_name");

//account_password是AnalyticDB for MySQL集群中用户账号对应的密码。

connectionProps.put("password", "account_password");

connection = DriverManager.getConnection(url, connectionProps);

statement = connection.createStatement();

String query = "select count(*) from information_schema.tables";

rs = statement.executeQuery(query);

while (rs.next()) {

System.out.println(rs.getObject(1));

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

} finally {

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (statement != null) {

try {

statement.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (connection != null) {

try {

connection.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

带重试的JDBC连接示例

在JDBC中通过配置参数可以实现连接重试机制。

public static final int MAX_QUERY_RETRY_TIMES = 3;

public static Connection conn = null;

public static Statement statement = null;

public static ResultSet rs = null;

public static void main(String[] args) throws ClassNotFoundException {

//AnalyticDB for MySQL集群中的数据库名称。

String yourDB = "db_name";

//AnalyticDB for MySQL集群中的用户账号:高权限账号或者普通账号。

String username = "account_name";

//AnalyticDB for MySQL集群中用户账号对应的密码。

String password = "account_password";

Class.forName("com.mysql.jdbc.Driver");

//adb_url是AnalyticDB for MySQL集群的连接地址URL,可以在控制台的集群信息页面获取连接URL,3306是端口号。

String url = "jdbc:mysql://adb_url:3306/" + yourDB + "?useUnicode=true&characterEncoding=UTF-8";

Properties connectionProps = new Properties();

connectionProps.put("user", username);

connectionProps.put("password", password);

String query = "select id from test4dmp.test limit 10";

int retryTimes = 0;

// 通过循环自动重试。

while (retryTimes < MAX_QUERY_RETRY_TIMES) {

try {

getConn(url, connectionProps);

execQuery(query);//执行query。

break; // query执行成功后,结束整个循环。

} catch (SQLException e) {

System.out.println("Met SQL exception: " + e.getMessage() + ", then go to retry task ...");

try {

if (conn == null || conn.isClosed()) {

retryTimes++;

}

} catch (SQLException e1) {

if (conn != null) {

try {

conn.close();

} catch (SQLException e2) {

e.printStackTrace();

}

}

}

}

}

// Clear connection resource.

closeResource();

}

/**

* Get connection.

*

* @param url

* @param connectionProps

* @throws SQLException

*/

public static void getConn(String url, Properties connectionProps) throws SQLException {

conn = DriverManager.getConnection(url, connectionProps);

}

/**

* Query task execution logic.

*

* @param sql

* @throws SQLException

*/

public static void execQuery(String sql) throws SQLException {

Statement statement = null;

ResultSet rs = null;

statement = conn.createStatement();

for (int i = 0; i < 10; i++) {

long startTs = System.currentTimeMillis();

rs = statement.executeQuery(sql);

int cnt = 0;

while (rs.next()) {

cnt++;

System.out.println(rs.getObject(1) + " ");

}

long endTs = System.currentTimeMillis();

System.out.println("Elapse Time: " + (endTs - startTs));

System.out.println("Row count: " + cnt);

try {

Thread.sleep(160000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

/**

* Close connection resource.

*/

public static void closeResource() {

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (statement != null) {

try {

statement.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

mysql java 驱动 版本号_Java - 云原生数仓 AnalyticDB MySQL - 阿里云相关推荐

  1. postgresql中装gis插件_使用PostGIS_高级扩展插件使用_开发进阶_云原生数仓 AnalyticDB PostgreSQL - 阿里云...

    通用操作 1)客户端连接实例 2)初次装载PostGIS扩展模块 创建扩展: create extension postgis; 查看版本: select postgis_version(); sel ...

  2. 体验有奖 | 3步玩转云原生数仓AnalyticDB MySQL电商行业数据分析场景

    云原生数据仓库AnalyticDB MySQL版 一元即可体验三个月 完成3个实验步骤,还可免费领取迷你桌面加湿器就等你来啦! (以上图片仅供参考,请以实物为准) 实验步骤

  3. 加码云原生数据库 2.0,阿里云又放大招

    在 Garter 发布的< 2011-2020 全球 DBMS 市场份额排行榜>中,最为引人瞩目的是微软超越 Oracle 位居全球数据库的榜首,这是十年来 Oracle 首次失去冠军位置 ...

  4. 从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目

    来源 | 阿里巴巴云原生公众号 2020 年 11 月 19 日,由 InfoQ 主办的"2020 中国技术力量年度榜单盛典"隆重召开,并正式揭晓了"开源杰出贡献人物&q ...

  5. 云原生编程挑战赛落幕,阿里云推出云原生领域首本《应用多活技术白皮书》

    1 月 11 日,以"原生万物,云上创新"为主题的云原生实战峰会暨第二届云原生编程挑战赛决赛颁奖典礼在上海圆满落幕,来自阿里云.毕马威.作业帮.韵达.分众传媒等企业实战派代表分享了 ...

  6. 剑指云原生数据库 2.0,阿里云发布全新一站式敏捷数据仓库解决方案

    作为基础软件"三驾马车"之一的数据库,其发展历程可追溯到60年前:从上世纪50年代的层次数据库.网状数据库,70年代的关系型数据库,再到90年代的关系型数据库.数据仓库.PC单机数 ...

  7. 云原生时代一站式DevOps平台--阿里云效

    云原生 以原生开源技术构建的云环境是当前互联网行业的根基命脉 DevOps以云原生为根基,则可快速成长为参天大树 主流DevOps技术栈 目前互联网行业甚至传统行业都有自己的DevOps技术栈选型 不 ...

  8. 云原生存储系列文章(一):云原生应用的基石

    作者| 郡宝 阿里云技术专家 参与文末留言互动,即有机会获得赠书福利! 导读:存储服务支撑了应用的状态.数据的持久化,是计算机系统中的重要组成部分,也是所有应用得以运行的基础,其重要性不言而喻.在存储 ...

  9. QCon大会实录:PB级数据秒级分析-腾讯云原生湖仓DLC架构揭秘

    导语 ‍‍‍‍文章整理了全球软件开发大会QCon<PB级数据秒级分析-腾讯云原生湖仓DLC架构揭秘>.大数据基于海量数据的分析,硬件.存储.计算资源尽量都可以用廉价的资源完成,如何在廉价资 ...

最新文章

  1. 2021年春季学期-信号与系统-第十三次作业参考答案-第八小题
  2. phpMyAdmin 4.4.0 beta1 发布,MySQL 管理工具
  3. Android学习记录1--布局的类型
  4. 范围查询 BETWEEN AND
  5. 【每日一题】8月7日题目精讲—双栈排序
  6. java 获取系统时间 8小时 jre_Java获取时间与系统时间相差8小时终极解决方案
  7. MySQL函数少传参数_Mysql中的少用函数
  8. Android应用程序键盘(Keyboard)消息处理机制分析(11)
  9. 姑苏行(一) 虎丘山
  10. 【渝粤教育】国家开放大学2018年春季 8662-22T特色课(1) 参考试题
  11. 跟我一起写Makefile:隐含规则
  12. Invalid attempt to read when no data is present.
  13. div+css 怎么让一个小div在另一个大div里面 垂直居中
  14. rpm 打包及其命令
  15. 数显之家快讯:【SHIO世硕心语】值得你一读再读《周易》里面最经典的6句话!
  16. Nature Microbiology | 王璋/陈荣昌/周宏伟-慢阻肺病呼吸道菌群-宿主互作机制
  17. QEMU imx6ul开发板环境搭建
  18. Motor Back-drive电机反驱
  19. 锁头锁具智能门锁网站搭建模板
  20. 青龙面板使用扩展 聚看点

热门文章

  1. SDF反标为什么没有数值或者与mtm值不一致
  2. 42岁被公司“劝退”,人到中年,患的最大绝症就是“丧失学习力”
  3. 智能优化方法——产生与发展
  4. plsql登录进去的时候,有个弹窗,但是我勾选了,下次不再显示,但是我又想让他弹出了,怎么恢复?
  5. 计算机组成原理与系统结构实验操作
  6. 特色工作流引擎:助推企业实现端到端全流程打通
  7. VScode使用服务器的Python解释器
  8. 还有谁比阿里人更懂Spring Cloud Alibaba 呢?阿里P8纯手打笔记 本网站收藏已过W
  9. 数电实验:自动生成三位JK卡诺图
  10. Be Agile VS Do Agile 之 2 企业引入Agile方式之探讨