import java.sql.*;

public class PhoenixJDBCUtils {

private static String driverClassName;

private static String URL;

private static String username;

private static String password;

private static boolean autoCommit;

/** 声明一个 Connection类型的静态属性,用来缓存一个已经存在的连接对象 */

private static Connection conn;

static {

config();

}

/** * 开头配置自己的数据库信息 */

private static void config() {

/* * 获取驱动 */

driverClassName = "org.apache.phoenix.jdbc.PhoenixDriver";

/* * 获取URL */

URL = "jdbc:phoenix:slave1,slave2,slave3:2181/hbase";

/* * 获取用户名 */

username = "";

/* * 获取密码 */

password = "";

/* * 设置是否自动提交,一般为false不用改 */

autoCommit = true;

}

/** * 载入数据库驱动类 */

private static boolean load() {

try {

Class.forName(driverClassName);

return true;

} catch (ClassNotFoundException e) {

System.out.println("驱动类 " + driverClassName + " 加载失败");

}

return false;

}

/** * 建立数据库连接 */

public static Connection connect() {

/* 加载驱动 */

load();

try {

/* 建立连接 */

conn = DriverManager.getConnection(URL, username, password);

} catch (SQLException e) {

System.out.println("建立数据库连接失败 , " + e.getMessage());

}

return conn;

}

/** * 设置是否自动提交事务 **/

public static void transaction() {

try {

conn.setAutoCommit(autoCommit);

} catch (SQLException e) {

System.out.println("设置事务的提交方式为 : " + (autoCommit ? "自动提交" : "手动提交") + " 时失败: " + e.getMessage());

}

}

/** * 创建 Statement 对象 */

public static Statement statement() {

Statement st = null;

connect();

/* 如果连接是无效的就重新连接 */

transaction();

/* 设置事务的提交方式 */

try {

st = conn.createStatement();

} catch (SQLException e) {

System.out.println("创建 Statement 对象失败: " + e.getMessage());

}

return st;

}

/** * 根据给定的带参数占位符的SQL语句,创建 PreparedStatement 对象 *

* @param SQL 带参数占位符的SQL语句

* @return 返回相应的 PreparedStatement 对象

*/

private static PreparedStatement prepare(String SQL, boolean autoGeneratedKeys) {

PreparedStatement ps = null;

connect();

/* 如果连接是无效的就重新连接 */

transaction();

/* 设置事务的提交方式 */

try {

if (autoGeneratedKeys) {

ps = conn.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);

} else {

ps = conn.prepareStatement(SQL);

}

} catch (SQLException e) {

System.out.println("创建 PreparedStatement 对象失败: " + e.getMessage());

}

return ps;

}

public static ResultSet query(String SQL, Object... params) {

if (SQL == null || !SQL.trim().toLowerCase().startsWith("select")) {

throw new RuntimeException("你的SQL语句为空或不是查询语句");

}

ResultSet rs = null;

if (params.length > 0) {

/* 说明 有参数 传入,就需要处理参数 */

PreparedStatement ps = prepare(SQL, false);

try {

for (int i = 0; i < params.length; i++) {

ps.setObject(i + 1, params[i]);

}

rs = ps.executeQuery();

} catch (SQLException e) {

System.out.println("执行SQL失败: " + e.getMessage());

}

} else {

/* 说明没有传入任何参数 */

Statement st = statement();

try {

rs = st.executeQuery(SQL); // 直接执行不带参数的 SQL 语句

} catch (SQLException e) {

System.out.println("执行SQL失败: " + e.getMessage());

}

}

return rs;

}

/** * 释放资源 * **/

public static void release(Object cloaseable) {

if (cloaseable != null) {

if (cloaseable instanceof ResultSet) {

ResultSet rs = (ResultSet) cloaseable;

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (cloaseable instanceof Statement) {

Statement st = (Statement) cloaseable;

try {

st.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (cloaseable instanceof Connection) {

Connection c = (Connection) cloaseable;

try {

c.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

}

java jdbc mysql util_Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC相关推荐

  1. Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC

    Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC pom.xml添加依赖 Java:方式一(亲测实用) 方式二:Scala 方式三:Java PhoenixJDBCU ...

  2. java基础巩固-宇宙第一AiYWM:为了维持生计,Redis基础Part2(Redis的数据结构)~整起

    PART1:Redis的数据结构:5+3数据类型<----------------->数据结构[未来随着 Redis 新版本的发布,可能会有新的数据结构出现,通过查阅 Redis 官网[[ ...

  3. java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分+微序幕就此拉开之Docker(Docker概念:容器、镜像、仓库)、操作命令、Docker网络、分层、K8S<->Docker~整起

    架构知识+分+微序幕就此拉开之Docker 一.为什么要搞这个Docker,咱们为啥要学,盖房子? 二.Docker的镜像与容器 1.预备知识:虚拟(机).容器(化) 2.Docker.镜像.容器 3 ...

  4. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之计网_Part_2(在浏览器中输入www.baidu.com后执行的全部过程、DNS的域名<->IP地址、OS协议栈的样子、CDN)整起

    可以说计算机网络,就是玩那几层中的那些协议们,本层玩,本层玩完了跨层玩,跨层玩,跨层玩完了本层玩- PART1:在浏览器中输入网站网址后执行的全部过程? 0.服务器在 80 端口等待客户的请求. se ...

  5. #我与Java虚拟机的故事#连载01:人在JVM,身不由己

    作者:叶志远 Java自上世纪90年代问世以来,以其优良的特性,逐渐占据了企业级开发的主流位置,并且日益强大的语言生态,更加巩固了它在编程语言排行榜上的地位. Java的快速发展,得益于支撑它运行的底 ...

  6. c统计多线程总时间_SQL Server处理器性能指标–第2部分–处理器:%用户时间,处理器:%特权时间,总时间和线程指标

    c统计多线程总时间 In SQL server processor performance metrics – Part 1 – The most important cpu metrics, we ...

  7. 短地址短链接免费接口:缩短链接地址。可用于缩短链接场景,如:电子发票链接,促销活动链接,新闻文章链接等

    短地址短链接接口服务,申请后即可免费使用,提供全接口服务,缩短链接地址,广泛应用于缩短链接场景,如:电子发票链接,促销活动链接,新闻文章链接等. 使用说明: 1.以下短地址接口开发资料供开发技术人员参 ...

  8. 打开网上邻居,点击“查看工作组计算机”,出现:“Workgroup无法访问,您...

    打开网上邻居,点击"查看工作组计算机",出现:"Workgroup无法访问,您可能没有权限使用网络资源...."  图一 无法查看工作组计算机 ◆解决方法:对网 ...

  9. dnf过年服务器维护否,DNF服务器或发生重大漏洞,玩家:维护这么慢,这些BUG修复了吗?...

    原标题:DNF服务器或发生重大漏洞,玩家:维护这么慢,这些BUG修复了吗? 爱玩游戏,分享快乐,我是游戏欢乐Tree. DNF每周四都是例行服务器维护的日子,玩家们对此已经早就习以为常.每次服务器维护 ...

最新文章

  1. cocos creator 安卓原生平台环境_竞技对抗小游戏单挑篮球开发历程 | Cocos技术派第12期...
  2. 服务器负载均衡的基本功能和实现原理
  3. 图像处理------应用卷积一实现噪声消去
  4. SQL SERVER 数据库邮件配置
  5. android 地址选择器_48种Android开发的开源库汇总
  6. AFNetworking下 http 改 https后遇到出现Error Domain=NSURLErrorDomain Code=-999 已取消 错误...
  7. HTML 基础和实例
  8. 嵌入式Linux截图工具gsnap移植与分析【转】
  9. MyBatis映射文件4(参数获取#{}和${}/select标签详解[返回类型为list])
  10. 华为、小米、OPPO三大厂商字体对比 这款更加舒适易读
  11. DOSBox安装及使用详解
  12. 木兰当事人回应!承认部分基于 Python 二次开发
  13. android获取安卓版本,Android获取手机系统版本等信息的方法
  14. 聚焦新零售 阿里云重磅推出零售云
  15. CSDN 如何修改用户名(CSDN ID)?
  16. C# Development 13 Things Every C# Developer Should Know--C#开发人员应该知道的13件事情
  17. 凑齐三块国字号“招牌”,长沙要召唤智能汽车产业的“神龙”了
  18. 微信小程序处理后台返回json
  19. 鸡兔同笼python程序怎么写_Python解决鸡兔同笼问题的方法
  20. javaweb应用的MVC分层,开发太方便了!!!

热门文章

  1. [Beego模型] 三、高级查询
  2. 对Table_locks_immediate值的理解
  3. 走进AngularJs(七) 过滤器(filter) - 吕大豹
  4. 20145120 《Java程序设计》实验一实验报告
  5. FlasCC例子研究之hellointerop
  6. Zabbix---6 监控 端口 连接数
  7. Zabbix 使用微信接收报警信息
  8. Dell R410服务器查看系统raid级别
  9. Ubuntu系统日志分析
  10. Java8新特性学习_001_(Lambda表达式,函数式接口,方法引用,Stream类,Optional类)