java jdbc mysql util_Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC
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相关推荐
- Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC
Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC pom.xml添加依赖 Java:方式一(亲测实用) 方式二:Scala 方式三:Java PhoenixJDBCU ...
- java基础巩固-宇宙第一AiYWM:为了维持生计,Redis基础Part2(Redis的数据结构)~整起
PART1:Redis的数据结构:5+3数据类型<----------------->数据结构[未来随着 Redis 新版本的发布,可能会有新的数据结构出现,通过查阅 Redis 官网[[ ...
- java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分+微序幕就此拉开之Docker(Docker概念:容器、镜像、仓库)、操作命令、Docker网络、分层、K8S<->Docker~整起
架构知识+分+微序幕就此拉开之Docker 一.为什么要搞这个Docker,咱们为啥要学,盖房子? 二.Docker的镜像与容器 1.预备知识:虚拟(机).容器(化) 2.Docker.镜像.容器 3 ...
- java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之计网_Part_2(在浏览器中输入www.baidu.com后执行的全部过程、DNS的域名<->IP地址、OS协议栈的样子、CDN)整起
可以说计算机网络,就是玩那几层中的那些协议们,本层玩,本层玩完了跨层玩,跨层玩,跨层玩完了本层玩- PART1:在浏览器中输入网站网址后执行的全部过程? 0.服务器在 80 端口等待客户的请求. se ...
- #我与Java虚拟机的故事#连载01:人在JVM,身不由己
作者:叶志远 Java自上世纪90年代问世以来,以其优良的特性,逐渐占据了企业级开发的主流位置,并且日益强大的语言生态,更加巩固了它在编程语言排行榜上的地位. Java的快速发展,得益于支撑它运行的底 ...
- c统计多线程总时间_SQL Server处理器性能指标–第2部分–处理器:%用户时间,处理器:%特权时间,总时间和线程指标
c统计多线程总时间 In SQL server processor performance metrics – Part 1 – The most important cpu metrics, we ...
- 短地址短链接免费接口:缩短链接地址。可用于缩短链接场景,如:电子发票链接,促销活动链接,新闻文章链接等
短地址短链接接口服务,申请后即可免费使用,提供全接口服务,缩短链接地址,广泛应用于缩短链接场景,如:电子发票链接,促销活动链接,新闻文章链接等. 使用说明: 1.以下短地址接口开发资料供开发技术人员参 ...
- 打开网上邻居,点击“查看工作组计算机”,出现:“Workgroup无法访问,您...
打开网上邻居,点击"查看工作组计算机",出现:"Workgroup无法访问,您可能没有权限使用网络资源...." 图一 无法查看工作组计算机 ◆解决方法:对网 ...
- dnf过年服务器维护否,DNF服务器或发生重大漏洞,玩家:维护这么慢,这些BUG修复了吗?...
原标题:DNF服务器或发生重大漏洞,玩家:维护这么慢,这些BUG修复了吗? 爱玩游戏,分享快乐,我是游戏欢乐Tree. DNF每周四都是例行服务器维护的日子,玩家们对此已经早就习以为常.每次服务器维护 ...
最新文章
- cocos creator 安卓原生平台环境_竞技对抗小游戏单挑篮球开发历程 | Cocos技术派第12期...
- 服务器负载均衡的基本功能和实现原理
- 图像处理------应用卷积一实现噪声消去
- SQL SERVER 数据库邮件配置
- android 地址选择器_48种Android开发的开源库汇总
- AFNetworking下 http 改 https后遇到出现Error Domain=NSURLErrorDomain Code=-999 已取消 错误...
- HTML 基础和实例
- 嵌入式Linux截图工具gsnap移植与分析【转】
- MyBatis映射文件4(参数获取#{}和${}/select标签详解[返回类型为list])
- 华为、小米、OPPO三大厂商字体对比 这款更加舒适易读
- DOSBox安装及使用详解
- 木兰当事人回应!承认部分基于 Python 二次开发
- android获取安卓版本,Android获取手机系统版本等信息的方法
- 聚焦新零售 阿里云重磅推出零售云
- CSDN 如何修改用户名(CSDN ID)?
- C# Development 13 Things Every C# Developer Should Know--C#开发人员应该知道的13件事情
- 凑齐三块国字号“招牌”,长沙要召唤智能汽车产业的“神龙”了
- 微信小程序处理后台返回json
- 鸡兔同笼python程序怎么写_Python解决鸡兔同笼问题的方法
- javaweb应用的MVC分层,开发太方便了!!!
热门文章
- [Beego模型] 三、高级查询
- 对Table_locks_immediate值的理解
- 走进AngularJs(七) 过滤器(filter) - 吕大豹
- 20145120 《Java程序设计》实验一实验报告
- FlasCC例子研究之hellointerop
- Zabbix---6 监控 端口 连接数
- Zabbix 使用微信接收报警信息
- Dell R410服务器查看系统raid级别
- Ubuntu系统日志分析
- Java8新特性学习_001_(Lambda表达式,函数式接口,方法引用,Stream类,Optional类)