当前位置:网站首页>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();
}
}
}
边栏推荐
- Mongodb learn from simple to deep
- Get webkitformboundary post login
- ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
- One click deployment of any version of redis
- Precautions for cjson memory leakage
- Spark 判断DF为空
- 使用高斯Redis实现二级索引
- rk3128投影仪lcd显示四周显示不完整解决
- BI的边界:BI不适合做什么?主数据、MarTech?该如何扩展?
- [award publicity] issue 22 publicity of the award list in June 2022: Community star selection | Newcomer Award | blog synchronization | recommendation Award
猜你喜欢
CodeSonar通过创新型静态分析增强软件可靠性

智能软件分析平台Embold

Mrs offline data analysis: process OBS data through Flink job

让这个CRMEB单商户微信商城系统火起来,太好用了!

School 1 of vulnhub

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

写了个 Markdown 命令行小工具,希望能提高园友们发文的效率!

最新版本的CodeSonar改进了功能安全性,支持MISRA,C ++解析和可视化

大厂经典指针笔试题

微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
随机推荐
有了ST7008, 蓝牙测试完全拿捏住了
九度 1201 -二叉排序数遍历- 二叉排序树「建议收藏」
Gorilla official: sample code for golang to open websocket client
微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
机械臂速成小指南(十一):坐标系的标准命名
取两个集合的交集
BI的边界:BI不适合做什么?主数据、MarTech?该如何扩展?
【奖励公示】第22期 2022年6月奖励名单公示:社区明星评选 | 新人奖 | 博客同步 | 推荐奖
Implement secondary index with Gaussian redis
EasyGBS级联时,上级平台重启导致推流失败、画面卡住该如何解决?
VMWare中虚拟机网络配置
测量楼的高度
MSE API learning
凌云出海记 | 赛盒&华为云:共助跨境电商行业可持续发展
ASP. Net learning & ASP's one word
Data island is the first danger encountered by enterprises in their digital transformation
Traversée des procédures stockées Oracle
使用camunda做工作流设计,驳回操作
Force buckle 1037 Effective boomerang
Force buckle 88 Merge two ordered arrays