当前位置:网站首页>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();
}
}
}
边栏推荐
猜你喜欢
Jenkins 用户权限管理
让这个CRMEB单商户微信商城系统火起来,太好用了!
Airiot helps the urban pipe gallery project, and smart IOT guards the lifeline of the city
Apifox 接口一体化管理新神器
AADL Inspector 故障树安全分析模块
Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
整型int的拼接和拆分
Nebula importer data import practice
大厂经典指针笔试题
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
随机推荐
Oracle 存储过程之遍历
复杂因子计算优化案例:深度不平衡、买卖压力指标、波动率计算
When easygbs cascades, how to solve the streaming failure and screen jam caused by the restart of the superior platform?
JNI 初级接触
About cv2 dnn. Readnetfromonnx (path) reports error during processing node with 3 inputs and 1 outputs [exclusive release]
Mongodb learn from simple to deep
论文解读(ValidUtil)《Rethinking the Setting of Semi-supervised Learning on Graphs》
Force buckle 1790 Can two strings be equal by performing string exchange only once
H3C S7000/S7500E/10500系列堆叠后BFD检测配置方法
Gorilla official: sample code for golang to open websocket client
凌云出海记 | 赛盒&华为云:共助跨境电商行业可持续发展
With st7008, the Bluetooth test is completely grasped
Micro service remote debug, nocalhost + rainbow micro service development second bullet
[résolution] le paquet « xxxx» n'est pas dans goroot
Force buckle 2315 Statistical asterisk
Opencv学习笔记 高动态范围 (HDR) 成像
Deep learning model compression and acceleration technology (VII): mixed mode
微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
MIT science and technology review article: AgI hype around Gato and other models may make people ignore the really important issues
目前股票开户安全吗?可以直接网上开户吗。