当前位置:网站首页>Phoenix JDBC
Phoenix JDBC
2022-07-07 20:23:00 【The south wind knows what I mean】
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** * Function is introduced : Use jdbc Operation on Database : Inquire about 、 to update ( Insert / modify / Delete )、 Batch update */
public class DButil {
private final Logger LOGGER = LoggerFactory.getLogger(getClass());
/**jdbc Link to */
private Connection conn = null;
/** Get ready sql*/
private PreparedStatement ps = null;
{
initConnection();
}
/** * @param sql * @param params Parameters * Function is introduced : update operation ( modify , Delete , Insert ) */
public int executeUpdate(String sql, Object[] params) {
if(null == conn){
initConnection();
}
try {
ps = conn.prepareStatement(sql);
if (params.length != 0) {
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
int rows = ps.executeUpdate();
conn.commit();
return rows;
} catch (Exception e) {
e.printStackTrace();
} finally {
closeUpdate();
}
return 0;
}
/** * @param sql * @param list * Function is introduced : Batch update */
public void batchUpdate(String sql, List<Object[]> list) {
if(null == conn){
initConnection();
}
try {
ps = conn.prepareStatement(sql);
// Turn off auto commit transactions
conn.setAutoCommit(false);
// Prevent memory overflow
final int batchSize = 1000;
// Record the number of inserts
int count = 0;
int size = list.size();
Object[] obj = null;
for (int i = 0; i < size; i++) {
obj = list.get(i);
for (int j = 0; j < obj.length; j++) {
ps.setObject(j + 1, obj[j]);
}
ps.addBatch();
if (++count % batchSize == 0) {
ps.executeBatch();
conn.commit();
}
}
ps.executeBatch();
conn.commit();
conn.setAutoCommit(true);
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
conn.setAutoCommit(true);
} catch (SQLException e1) {
e1.printStackTrace();
}
} finally {
// close resource
closeUpdate();
}
}
/** * @param sql * @param params * Function is introduced : Query operation */
public List<Map<String, Object>> executeQuery(String sql, Object[] params) {
if(null == conn){
initConnection();
}
ResultSet rs = null;
List<Map<String, Object>> list = null;
try {
ps = conn.prepareStatement(sql);
if (params != null) {
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
long startTime = System.currentTimeMillis();
rs = ps.executeQuery();
LOGGER.info("UserBigTableService sql-executeQuery-time: " + (System.currentTimeMillis() - startTime) + "ms");
list = new ArrayList<>();
// Move the cursor , If the new current line is valid , Then return to true; If there is no next line , Then return to false
while (rs.next()) {
ResultSetMetaData rsmd = rs.getMetaData();
Map<String, Object> map = new HashMap<>(16);
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
map.put(rsmd.getColumnName(i), rs.getObject(i));
}
list.add(map);
}
return list;
} catch (Exception e) {
e.printStackTrace();
} finally {
closeQuery(rs);
}
return null;
}
/** * @param sql * @param params * Function is introduced : Query a record */
public Map<String, Object> query (String sql, Object[] params) {
if(null == conn){
initConnection();
}
ResultSet rs = null;
Map<String, Object> map = null;
try {
ps = conn.prepareStatement(sql);
if (params != null) {
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
rs = ps.executeQuery();
// Move the cursor , If the new current line is valid , Then return to true; If there is no next line , Then return to false
while (rs.next()) {
ResultSetMetaData rsmd = rs.getMetaData();
map = new HashMap<>(16);
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
map.put(rsmd.getColumnName(i), rs.getObject(i));
}
// If there are multiple records , Take the first one .
break;
}
return map;
} catch (Exception e) {
e.printStackTrace();
} finally {
closeQuery(rs);
}
return null;
}
/** * Initialize connection */
private void initConnection() {
try {
//local
conn = DriverManager.getConnection("jdbc:phoenix:192.168.1.220");
} catch (Exception e) {
e.printStackTrace();
}
}
/** * Function is introduced : Turn off updating resources */
private void closeUpdate() {
try {
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/** * @param rs Function is introduced : Close query resources */
private void closeQuery(ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
边栏推荐
猜你喜欢

如何满足医疗设备对安全性和保密性的双重需求?

Helix QAC 2020.2新版静态测试工具,最大限度扩展了标准合规性的覆盖范围

一键部署Redis任意版本

Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation

大厂经典指针笔试题

School 1 of vulnhub

Don't fall behind! Simple and easy-to-use low code development to quickly build an intelligent management information system

AADL Inspector 故障树安全分析模块

One click deployment of any version of redis

Mrs offline data analysis: process OBS data through Flink job
随机推荐
4G设备接入EasyGBS平台出现流量消耗异常,是什么原因?
Cantata9.0 | 全 新 功 能
Micro service remote debug, nocalhost + rainbow micro service development second bullet
凌云出海记 | 赛盒&华为云:共助跨境电商行业可持续发展
基于深度学习的目标检测的更新迭代总结(持续更新ing)
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
With st7008, the Bluetooth test is completely grasped
Force buckle 643 Subarray maximum average I
Don't fall behind! Simple and easy-to-use low code development to quickly build an intelligent management information system
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
嵌入式系统真正安全了吗?[ OneSpin如何为开发团队全面解决IC完整性问题 ]
VMWare中虚拟机网络配置
How to test CIS chip?
Force buckle 1037 Effective boomerang
使用camunda做工作流设计,驳回操作
静态测试工具
Phoenix JDBC
rk3128投影仪lcd显示四周显示不完整解决
写了个 Markdown 命令行小工具,希望能提高园友们发文的效率!
解决/bin/sh进去的容器运行可执行文件报not found的问题