当前位置:网站首页>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();
}
}
}
边栏推荐
- PHP method of obtaining image information
- Nebula importer data import practice
- [award publicity] issue 22 publicity of the award list in June 2022: Community star selection | Newcomer Award | blog synchronization | recommendation Award
- CIS芯片测试到底怎么测?
- 开发一个小程序商城需要多少钱?
- Is it safe to open a stock account at present? Can I open an account online directly.
- 嵌入式系统真正安全了吗?[ OneSpin如何为开发团队全面解决IC完整性问题 ]
- 机器学习笔记 - 使用Streamlit探索对象检测数据集
- 写了个 Markdown 命令行小工具,希望能提高园友们发文的效率!
- [MySQL - Basic] transactions
猜你喜欢
机械臂速成小指南(十二):逆运动学分析
网络原理(1)——基础原理概述
Machine learning notes - explore object detection datasets using streamlit
【mysql篇-基础篇】事务
With st7008, the Bluetooth test is completely grasped
About cv2 dnn. Readnetfromonnx (path) reports error during processing node with 3 inputs and 1 outputs [exclusive release]
School 1 of vulnhub
H3C S7000/S7500E/10500系列堆叠后BFD检测配置方法
Dachang classic pointer written test questions
The boundary of Bi: what is bi not suitable for? Master data, Martech? How to expand?
随机推荐
【mysql篇-基础篇】事务
When easygbs cascades, how to solve the streaming failure and screen jam caused by the restart of the superior platform?
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
Force buckle 1037 Effective boomerang
CUDA versions are inconsistent, and errors are reported when compiling apex
Force buckle 1961 Check whether the string is an array prefix
Force buckle 599 Minimum index sum of two lists
kubernetes之创建mysql8
基于深度学习的目标检测的更新迭代总结(持续更新ing)
CodeSonar网络研讨会
理财产品要怎么选?新手还什么都不懂
Dachang classic pointer written test questions
ASP.NET学习& asp‘s one word
Gorilla official: sample code for golang to open websocket client
[solution] package 'XXXX' is not in goroot
论文解读(ValidUtil)《Rethinking the Setting of Semi-supervised Learning on Graphs》
让这个CRMEB单商户微信商城系统火起来,太好用了!
About cv2 dnn. Readnetfromonnx (path) reports error during processing node with 3 inputs and 1 outputs [exclusive release]
Nebula importer data import practice
BI的边界:BI不适合做什么?主数据、MarTech?该如何扩展?